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

@ -50,23 +50,21 @@ class GameEngine : DeadSimpleFSM<GameState, GameEvent> {
void event(GameEvent ev, string hit_type="") {
switch(_state) {
FSM_STATE(GameState, START, start, ev);
FSM_STATE(GameState, IDLE, idle, ev);
FSM_STATE(GameState, DEAD, dead, ev);
FSM_STATE(GameState, SUCCESS, success, ev);
FSM_STATE(GameState, FAILURE, failure, ev);
case GameState::IN_ROUND:
in_round(ev, hit_type);
break;
FSM_STATE(GameState, START, ev);
FSM_STATE(GameState, IDLE, ev);
FSM_STATE(GameState, DEAD, ev);
FSM_STATE(GameState, SUCCESS, ev);
FSM_STATE(GameState, FAILURE, ev);
FSM_STATE(GameState, IN_ROUND, ev, hit_type);
}
}
void start(GameEvent ev);
void idle(GameEvent ev);
void in_round(GameEvent ev, string &hit_type);
void dead(GameEvent ev);
void success(GameEvent ev);
void failure(GameEvent ev);
void START(GameEvent ev);
void IDLE(GameEvent ev);
void IN_ROUND(GameEvent ev, string &hit_type);
void DEAD(GameEvent ev);
void SUCCESS(GameEvent ev);
void FAILURE(GameEvent ev);
void heal();
bool hit(string &type);