FSM is now even cleaner, as long as you don't look at that CPP macro.

This commit is contained in:
Zed A. Shaw 2024-09-16 08:05:43 -04:00
parent c9425aebf9
commit f632f2d5af
6 changed files with 51 additions and 53 deletions

View file

@ -54,12 +54,12 @@ bool GameEngine::is_dead() {
return free_death ? false : hit_points <= 0;
}
void GameEngine::start(GameEvent ev) {
void GameEngine::START(GameEvent ev) {
state(GameState::IDLE);
idle(ev);
IDLE(ev);
}
void GameEngine::idle(GameEvent ev) {
void GameEngine::IDLE(GameEvent ev) {
if(ev == GameEvent::BUILD_START) {
hits_taken = 0;
state(GameState::IN_ROUND);
@ -68,7 +68,7 @@ void GameEngine::idle(GameEvent ev) {
}
}
void GameEngine::in_round(GameEvent ev, string &hit_type) {
void GameEngine::IN_ROUND(GameEvent ev, string &hit_type) {
switch(ev) {
case GameEvent::HIT:
hit(hit_type);
@ -91,11 +91,11 @@ void GameEngine::in_round(GameEvent ev, string &hit_type) {
}
}
void GameEngine::dead(GameEvent ev) {
void GameEngine::DEAD(GameEvent ev) {
if(ev == GameEvent::BUILD_DONE) {
reset();
state(GameState::FAILURE);
failure(ev);
FAILURE(ev);
} else if(ev == GameEvent::HIT) {
++hits_taken;
} else {
@ -103,7 +103,7 @@ void GameEngine::dead(GameEvent ev) {
}
}
void GameEngine::success(GameEvent ev) {
void GameEngine::SUCCESS(GameEvent ev) {
assert(ev == GameEvent::BUILD_DONE && "success state expected BUILD_DONE");
++rounds;
++streak;
@ -111,7 +111,7 @@ void GameEngine::success(GameEvent ev) {
state(GameState::IDLE);
}
void GameEngine::failure(GameEvent ev) {
void GameEngine::FAILURE(GameEvent ev) {
assert(ev == GameEvent::BUILD_DONE && "failure state expected BUILD_DONE");
++rounds;
// streak is handled by reset()