00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef INTERFACE_HH_
00018 # define INTERFACE_HH_
00019
00020 # include "tools.hh"
00021 # include "app/App.hh"
00022 # include "rules/Packet.hh"
00023 # include "Api.hh"
00024 # include "Event.hh"
00025 # include "ConsoleInput.hh"
00026
00031 class CmdLineInterface : public Event
00032 {
00033 public:
00034 CmdLineInterface(Api* api, App* app, bool use_readline);
00035
00036 void hello();
00037 void init();
00038 void run();
00039
00040 void printGlobal();
00041 void printPlayerList();
00042 void printPlayer(int player_id, int team_id);
00043 void printField();
00044 void printHistory();
00045
00046 private:
00047 bool checkInput();
00048
00049
00050
00051 virtual void evIllegal(int team_id, int was_token, enum eError error);
00052 virtual void evChat(int coach_id, const std::string& msg);
00053
00054 virtual void evInitGame();
00055 virtual void evCelebration();
00056 virtual void evEndGame();
00057 virtual void evCancelGame(int team_id);
00058
00059 virtual void evHalf(int half);
00060 virtual void evDrawKicker(int team_id, bool is_a_question);
00061 virtual void evPlaceTeam(int team_id);
00062 virtual void evKickOff(int team_id);
00063 virtual void evTouchBack(int team_id);
00064 virtual void evNewTurn(int player_id, int cur_half, int cur_turn);
00065 virtual void evMoveTurnMarker();
00066 virtual void evTurnOver(enum eTurnOverMotive motive);
00067 virtual void evTouchdooown(int team_id, int player_id);
00068
00069 virtual void evBallCoord(const Coordinates& old_coord,
00070 const Coordinates& new_coord);
00071 virtual void evBallOwner(int old_team_id, int old_player_id,
00072 int team_id, int player_id);
00073
00074 virtual void evPlayerCreate(int team_id, int player_id);
00075 virtual void evPlayerStatus(int team_id, int player_id, enum eStatus status);
00076 virtual void evPlayerCoord(int team_id, int player_id, const Coordinates& coord);
00077 virtual void evPlayerKnocked(int team_id, int player_id);
00078
00079 virtual void evAction(int team_id, int player_id, enum eAction action);
00080 virtual void evEffort(int team_id, int player_id,
00081 enum eEffort effort, const Coordinates& to);
00082 virtual void evRequestProcessed(int team_id);
00083 virtual void evResult(int team_id, int player_id, enum eRoll roll_type, int result,
00084 int modifier, int required, bool reroll, enum eSkill skill);
00085 virtual void evBlockDice(int team_id, int dice);
00086 virtual void evBlockResult(int team_id, int player_id, int opponent_id,
00087 int nb_dices, enum eBlockDiceFace result[3],
00088 int dice_chooser_id, bool reroll);
00089 virtual void evBlockPush(int team_id, const Coordinates& coord, int nb_squares, const Coordinates squares[], int chosen_square);
00090 virtual void evFollow(int team_id, int follow);
00091
00092 virtual void evReroll(int team_id, bool reroll);
00093 virtual void evSkill(int team_id, int player_id, enum eSkill skill, int choice);
00094
00095 Api* api_;
00096 App* app_;
00097
00098 bool standalone_;
00099 ConsoleInput input_;
00100 bool our_turn_;
00101 bool paused_;
00102 };
00103
00104 class CmdLineWrapper
00105 {
00106 public:
00107 CmdLineWrapper(lua_State *l) {}
00108 ~CmdLineWrapper() {}
00109
00111 int init(lua_State* l);
00112
00114 int run(lua_State* l);
00115
00116
00117 static const char className[];
00118 static Luna<CmdLineWrapper>::RegType methods[];
00119
00120 private:
00121 App* app_;
00122 };
00123
00124
00125 #endif