interface.hh

00001 /*
00002 ** TowBowlTactics, a turn-based strategy football game.
00003 ** 
00004 ** Copyright (C) 2006-2010 The TBT Team.
00005 ** 
00006 ** This program is free software; you can redistribute it and/or
00007 ** modify it under the terms of the GNU General Public License
00008 ** as published by the Free Software Foundation; either version 2
00009 ** of the License, or (at your option) any later version.
00010 ** 
00011 ** The complete GNU General Public Licence Notice can be found as the
00012 ** `NOTICE' file in the root directory.
00013 ** 
00014 ** The TBT Team consists of people listed in the `AUTHORS' file.
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   // All callbacks.
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   // Luna data
00117   static const char className[];
00118   static Luna<CmdLineWrapper>::RegType methods[];
00119 
00120 private:
00121   App* app_;
00122 };
00123 
00124 
00125 #endif /* !INTERFACE_HH_ */
Generated on Mon Apr 5 21:17:12 2010 for Stechec/TBT by  doxygen 1.6.3