|
|
|
@ -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(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|