Now has an actual game loop where you die and start over.
This commit is contained in:
parent
514bfec0ea
commit
009c5c1cd2
10 changed files with 124 additions and 86 deletions
|
|
@ -17,15 +17,12 @@ namespace gui {
|
|||
using namespace components;
|
||||
using game::Event;
|
||||
|
||||
FSM::FSM() :
|
||||
$window(sf::VideoMode({SCREEN_WIDTH, SCREEN_HEIGHT}), "Zed's Raycaster Thing"),
|
||||
FSM::FSM(sf::RenderWindow& window) :
|
||||
$window(window),
|
||||
$main_ui($window),
|
||||
$dnd_loot($status_ui, $loot_ui, $window, $router)
|
||||
{
|
||||
$window.setVerticalSyncEnabled(VSYNC);
|
||||
if(FRAME_LIMIT) $window.setFramerateLimit(FRAME_LIMIT);
|
||||
$window.setPosition({0,0});
|
||||
|
||||
System::init($systems);
|
||||
}
|
||||
|
||||
void FSM::event(Event ev, std::any data) {
|
||||
|
|
@ -41,7 +38,9 @@ namespace gui {
|
|||
FSM_STATE(State, ROTATING, ev);
|
||||
FSM_STATE(State, IDLE, ev, data);
|
||||
FSM_STATE(State, LOOTING, ev, data);
|
||||
FSM_STATE(State, END, ev);
|
||||
FSM_STATE(State, END_QUIT, ev);
|
||||
FSM_STATE(State, END_PLAY_AGAIN, ev);
|
||||
FSM_STATE(State, END_PLAYER_DIED, ev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -59,9 +58,9 @@ namespace gui {
|
|||
$debug_ui.init(cell);
|
||||
$status_ui.init();
|
||||
run_systems();
|
||||
$story = std::make_shared<storyboard::UI>("intro_story");
|
||||
$story->init();
|
||||
state(State::INTRO);
|
||||
|
||||
show_scene("STARTING");
|
||||
state(State::START_SCENE);
|
||||
}
|
||||
|
||||
void FSM::INTRO(Event ev) {
|
||||
|
|
@ -73,8 +72,7 @@ namespace gui {
|
|||
}
|
||||
} else {
|
||||
$story = nullptr;
|
||||
show_scene("STARTING");
|
||||
state(State::START_SCENE);
|
||||
state(State::IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -90,7 +88,9 @@ namespace gui {
|
|||
} break;
|
||||
case START:
|
||||
close_scene();
|
||||
state(State::IDLE);
|
||||
$story = std::make_shared<storyboard::UI>("intro_story");
|
||||
$story->init();
|
||||
state(State::INTRO);
|
||||
break;
|
||||
case QUIT:
|
||||
FSM::IDLE(ev, {});
|
||||
|
|
@ -115,7 +115,7 @@ namespace gui {
|
|||
} break;
|
||||
case START:
|
||||
close_scene();
|
||||
state(State::IDLE);
|
||||
state(State::END_PLAYER_DIED);
|
||||
break;
|
||||
case QUIT:
|
||||
FSM::IDLE(ev, {});
|
||||
|
|
@ -137,7 +137,7 @@ namespace gui {
|
|||
} break;
|
||||
case START:
|
||||
close_scene();
|
||||
state(State::IDLE);
|
||||
state(State::END_PLAY_AGAIN);
|
||||
break;
|
||||
case QUIT:
|
||||
FSM::IDLE(ev, {});
|
||||
|
|
@ -232,7 +232,7 @@ namespace gui {
|
|||
switch(ev) {
|
||||
case QUIT:
|
||||
$window.close();
|
||||
state(State::END);
|
||||
state(State::END_QUIT);
|
||||
return; // done
|
||||
case MOVE_FORWARD:
|
||||
try_move(1, false);
|
||||
|
|
@ -317,8 +317,16 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
|
||||
void FSM::END(Event ev) {
|
||||
dbc::log($F("END: received event after done: {}", int(ev)));
|
||||
void FSM::END_QUIT(Event ev) {
|
||||
dbc::log($F("END_QUIT: received event after done: {}", int(ev)));
|
||||
}
|
||||
|
||||
void FSM::END_PLAYER_DIED(Event ev) {
|
||||
dbc::log($F("END_PLAYER_DIED: received event after done: {}", int(ev)));
|
||||
}
|
||||
|
||||
void FSM::END_PLAY_AGAIN(Event ev) {
|
||||
dbc::log($F("END_PLAY_AGAIN: received event after done: {}", int(ev)));
|
||||
}
|
||||
|
||||
sf::Vector2f FSM::mouse_position() {
|
||||
|
|
@ -458,7 +466,9 @@ namespace gui {
|
|||
}
|
||||
|
||||
bool FSM::active() {
|
||||
return !in_state(State::END);
|
||||
return !(in_state(State::END_QUIT)
|
||||
|| in_state(State::END_PLAY_AGAIN)
|
||||
|| in_state(State::END_PLAYER_DIED));
|
||||
}
|
||||
|
||||
void FSM::handle_world_events() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue