Level traversal works, but it's very immediate. Next is a little 'confirm level' modal and a transition screen.
This commit is contained in:
parent
1886c99920
commit
29e6d45dc6
14 changed files with 98 additions and 43 deletions
38
gui_fsm.cpp
38
gui_fsm.cpp
|
@ -14,7 +14,7 @@ namespace gui {
|
|||
|
||||
FSM::FSM() :
|
||||
$window(sf::VideoMode({SCREEN_WIDTH, SCREEN_HEIGHT}), "Zed's Raycaster Thing"),
|
||||
$main_ui($window, $levels.current()),
|
||||
$main_ui($window),
|
||||
$renderer($window),
|
||||
$level($levels.current()),
|
||||
$map_ui($level),
|
||||
|
@ -34,12 +34,13 @@ namespace gui {
|
|||
FSM_STATE(State, IDLE, ev);
|
||||
FSM_STATE(State, IN_COMBAT, ev);
|
||||
FSM_STATE(State, COMBAT_ROTATE, ev);
|
||||
FSM_STATE(State, NEXT_LEVEL, ev);
|
||||
FSM_STATE(State, END, ev);
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::START(Event ) {
|
||||
$main_ui.generate_map();
|
||||
$main_ui.update_level($level);
|
||||
$level.world->set_the<Debug>({});
|
||||
|
||||
$main_ui.init();
|
||||
|
@ -160,6 +161,9 @@ namespace gui {
|
|||
case CLOSE:
|
||||
dbc::log("Nothing to close.");
|
||||
break;
|
||||
case STAIRS_DOWN:
|
||||
state(State::NEXT_LEVEL);
|
||||
break;
|
||||
case STOP_COMBAT:
|
||||
case TICK:
|
||||
// do nothing
|
||||
|
@ -169,6 +173,18 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
|
||||
void FSM::NEXT_LEVEL(Event ev) {
|
||||
using enum Event;
|
||||
|
||||
switch(ev) {
|
||||
case TICK:
|
||||
next_level();
|
||||
state(State::IDLE);
|
||||
default:
|
||||
break; // do nothing for now
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::IN_COMBAT(Event ev) {
|
||||
using enum Event;
|
||||
|
||||
|
@ -342,11 +358,13 @@ namespace gui {
|
|||
// std::string(item.data["name"])));
|
||||
$status_ui.log("You picked up an item.");
|
||||
$status_ui.update();
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
case eGUI::ATTACK:
|
||||
event(Event::ATTACK);
|
||||
break;
|
||||
case eGUI::STAIRS_DOWN:
|
||||
event(Event::STAIRS_DOWN);
|
||||
break;
|
||||
case eGUI::DEATH: {
|
||||
$status_ui.update();
|
||||
if(entity != player.entity) {
|
||||
|
@ -366,4 +384,16 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::next_level() {
|
||||
$levels.create_level($level.world);
|
||||
$level = $levels.next();
|
||||
|
||||
$status_ui.update_level($level);
|
||||
$combat_ui.update_level($level);
|
||||
$map_ui.update_level($level);
|
||||
$main_ui.update_level($level);
|
||||
|
||||
run_systems();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue