#ifndef SITUATION_H #define SITUATION_H #include #include "commandset.h" class Situation { friend class GameBuilder; public: enum InputType { inputCommand, inputOption, }; Situation( const Bu::String &sName, InputType tInput ); virtual ~Situation(); Bu::String getName() const { return sName; } InputType getInputType() const { return tInput; } enum Mode { modeSetup, modeEnter, }; void setAst( class AstBranch *pAst, Mode m ); void exec( class GameState &gState, Mode m ); void addCommand( Command *pCmd ); bool execCommand( class GameState &gState, const Bu::StringList &lCmd ); void execOption( class GameState &gState, int idx ); const CommandSet &getCommandSet() const { return csLocal; } private: Bu::String sName; InputType tInput; CommandSet csLocal; class AstBranch *pAstSetup; class AstBranch *pAstEnter; }; Bu::Formatter &operator<<( Bu::Formatter &f, Situation::Mode m ); #endif