Going into a well triggers a little 'loading screen' that's currently faked. Click on it to continue.

master
Zed A. Shaw 2 weeks ago
parent 9d49c6a30b
commit e9accf14e6
  1. 3
      assets/config.json
  2. BIN
      assets/down_the_well.jpg
  3. 8
      guecs.cpp
  4. 2
      guecs.hpp
  5. 3
      gui_fsm.cpp
  6. 1
      main.cpp
  7. 22
      main_ui.cpp
  8. 2
      main_ui.hpp

@ -30,7 +30,8 @@
"blood_splatter": "assets/blood_splatter-256.png", "blood_splatter": "assets/blood_splatter-256.png",
"trash_button": "assets/trash_button.png", "trash_button": "assets/trash_button.png",
"axe_ranger": "assets/axe_ranger-256.png", "axe_ranger": "assets/axe_ranger-256.png",
"hairy_spider": "assets/hairy_spider-256.png" "hairy_spider": "assets/hairy_spider-256.png",
"down_the_well": "assets/down_the_well.jpg"
}, },
"enemy": { "enemy": {
"HEARING_DISTANCE": 5 "HEARING_DISTANCE": 5

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

@ -98,7 +98,9 @@ namespace guecs {
}); });
} }
void UI::mouse(float x, float y) { bool UI::mouse(float x, float y) {
int action_count = 0;
$world.query<lel::Cell, Clickable>([&](auto ent, auto& cell, auto &clicked) { $world.query<lel::Cell, Clickable>([&](auto ent, auto& cell, auto &clicked) {
if((x >= cell.x && x <= cell.x + cell.w) && if((x >= cell.x && x <= cell.x + cell.w) &&
(y >= cell.y && y <= cell.y + cell.h)) (y >= cell.y && y <= cell.y + cell.h))
@ -108,8 +110,12 @@ namespace guecs {
} else { } else {
clicked.action(ent, {}); clicked.action(ent, {});
} }
action_count++;
} }
}); });
return action_count > 0;
} }
Clickable make_action(DinkyECS::World& target, Events::GUI event) { Clickable make_action(DinkyECS::World& target, Events::GUI event) {

@ -156,7 +156,7 @@ namespace guecs {
void init(); void init();
void render(sf::RenderWindow& window); void render(sf::RenderWindow& window);
void mouse(float x, float y); bool mouse(float x, float y);
template <typename Comp> template <typename Comp>
void set(DinkyECS::Entity ent, Comp val) { void set(DinkyECS::Entity ent, Comp val) {

@ -162,6 +162,7 @@ namespace gui {
dbc::log("Nothing to close."); dbc::log("Nothing to close.");
break; break;
case STAIRS_DOWN: case STAIRS_DOWN:
$main_ui.show_level();
state(State::NEXT_LEVEL); state(State::NEXT_LEVEL);
break; break;
case STOP_COMBAT: case STOP_COMBAT:
@ -177,7 +178,7 @@ namespace gui {
using enum Event; using enum Event;
switch(ev) { switch(ev) {
case TICK: case STAIRS_DOWN:
next_level(); next_level();
state(State::IDLE); state(State::IDLE);
default: default:

@ -13,6 +13,7 @@ int main() {
// ZED: need to sort out how to deal with this in the FSM // ZED: need to sort out how to deal with this in the FSM
if(main.in_state(gui::State::IDLE) if(main.in_state(gui::State::IDLE)
|| main.in_state(gui::State::NEXT_LEVEL)
|| main.in_state(gui::State::MAPPING) || main.in_state(gui::State::MAPPING)
|| main.in_state(gui::State::IN_COMBAT)) || main.in_state(gui::State::IN_COMBAT))
{ {

@ -69,14 +69,29 @@ namespace gui {
$rayview.init_shaders(); $rayview.init_shaders();
$rayview.set_position(RAY_VIEW_X, RAY_VIEW_Y); $rayview.set_position(RAY_VIEW_X, RAY_VIEW_Y);
$rayview.position_camera($player.x + 0.5, $player.y + 0.5); $rayview.position_camera($player.x + 0.5, $player.y + 0.5);
auto st = textures::get("down_the_well");
st.sprite->setPosition({RAY_VIEW_X, RAY_VIEW_Y});
st.sprite->setScale({0.5, 0.5});
$overlay_ui.render(); $overlay_ui.render();
} }
void MainUI::show_level() {
$show_level = true;
}
void MainUI::draw() { void MainUI::draw() {
auto start = std::chrono::high_resolution_clock::now(); auto start = std::chrono::high_resolution_clock::now();
if($needs_render) $rayview.render(); if($show_level) {
$rayview.draw($window); auto st = textures::get("down_the_well");
$window.draw(*st.sprite);
$overlay_ui.show_label("middle", "INTO THE WELL YOU GO...");
} else {
if($needs_render) $rayview.render();
$rayview.draw($window);
}
auto end = std::chrono::high_resolution_clock::now(); auto end = std::chrono::high_resolution_clock::now();
auto elapsed = std::chrono::duration<double>(end - start); auto elapsed = std::chrono::duration<double>(end - start);
@ -136,6 +151,9 @@ namespace gui {
} }
void MainUI::mouse(int x, int y) { void MainUI::mouse(int x, int y) {
$show_level = false;
$level.world->send<Events::GUI>(Events::GUI::STAIRS_DOWN, $level.player, {});
$overlay_ui.close_label("middle");
$overlay_ui.$gui.mouse(x, y); $overlay_ui.$gui.mouse(x, y);
} }
} }

@ -11,6 +11,7 @@ namespace gui {
class MainUI { class MainUI {
public: public:
bool $show_level = false;
bool $needs_render = true; bool $needs_render = true;
Point $player{0,0}; Point $player{0,0};
Stats $stats; Stats $stats;
@ -38,6 +39,7 @@ namespace gui {
void draw(); void draw();
void dirty(); void dirty();
void show_level();
void dead_entity(DinkyECS::Entity entity); void dead_entity(DinkyECS::Entity entity);
}; };
} }

Loading…
Cancel
Save