Input &Buttons() { return input; }
const Input &Buttons() const { return input; }
+private:
+ struct StateCommand {
+ enum Type {
+ PUSH, POP, CHANGE
+ } type;
+ State *state;
+ };
+
private:
State *CurrentState();
+ bool StateChangePending() const { return !stateChanges.empty(); }
void UpdateState();
+ void RealChangeState(State *);
void RealPushState(State *);
void RealPopState();
void PopAllStates();
private:
sdl::InitScreen *screen;
std::stack<State *> states;
- std::queue<State *> toPush;
+ std::queue<StateCommand> stateChanges;
Input input;
Uint32 last;
- int toPop;
};