| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | 
							- #ifndef CCALLBACK_H
 
- #define CCALLBACK_H
 
- #include "mapHandler.h"
 
- #include "tchar.h"
 
- class CGameState;
 
- class CPath;
 
- class CGObjectInstance;
 
- class SComponent;
 
- class IChosen;
 
- class CSelectableComponent;
 
- typedef struct lua_State lua_State;
 
- class ICallback
 
- {	
 
- public:
 
- 	virtual bool moveHero(int ID, CPath * path, int idtype, int pathType=0)=0;//idtype: 0 - position in vector of heroes (of that player); 1 - ID of hero 
 
- 															//pathType: 0 - nodes are manifestation pos, 1 - nodes are object pos
 
- //get info
 
- 	virtual bool verifyPath(CPath * path, bool blockSea)=0;
 
- 	virtual int getDate(int mode=0)=0; //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month
 
- 	virtual PseudoV< PseudoV< PseudoV<unsigned char> > > & getVisibilityMap()=0; //returns visibility map (TODO: make it const)
 
- 	virtual const CGHeroInstance * getHeroInfo(int player, int val, bool mode)=0; //mode = 0 -> val = serial; mode = 1 -> val = ID
 
- 	virtual int getResourceAmount(int type)=0;
 
- 	virtual int howManyHeroes()=0;
 
- 	virtual const CGTownInstance * getTownInfo(int val, bool mode)=0; //mode = 0 -> val = serial; mode = 1 -> val = ID
 
- 	virtual int howManyTowns()=0;
 
- 	virtual std::vector < std::string > getObjDescriptions(int3 pos)=0; //returns descriptions of objects at pos in order from the lowest to the highest
 
- 	virtual std::vector < const CGHeroInstance *> getHeroesInfo(bool onlyOur=true)=0;
 
- 	virtual bool isVisible(int3 pos)=0;
 
- 	virtual int getMyColor()=0;
 
- 	virtual int getMySerial()=0;
 
- 	virtual int getHeroSerial(const CGHeroInstance * hero)=0;
 
- 	virtual int swapCreatures(const CGObjectInstance *s1, const CGObjectInstance *s2, int p1, int p2)=0;//swaps creatures between two posiibly different garrisons // TODO: AI-unsafe code - fix it!
 
- 	virtual int mergeStacks(const CGObjectInstance *s1, const CGObjectInstance *s2, int p1, int p2)=0;//joins first stack tothe second (creatures must be same type)
 
- 	virtual int splitStack(const CGObjectInstance *s1, const CGObjectInstance *s2, int p1, int p2, int val)=0;//split creatures from the first stack
 
- 	virtual bool dismissHero(const CGHeroInstance * hero)=0; //dismisses diven hero; true - successfuly, false - not successfuly
 
- 	virtual const CCreatureSet* getGarrison(const CGObjectInstance *obj)=0;
 
- 	virtual bool swapArifacts(const CGHeroInstance * hero1, bool worn1, int pos1, const CGHeroInstance * hero2, bool worn2, int pos2)=0; //swaps artifacts between two given heroes
 
- };
 
- struct HeroMoveDetails
 
- {
 
- 	int3 src, dst; //source and destination points
 
- 	CGHeroInstance * ho; //object instance of this hero
 
- 	int owner;
 
- 	bool successful;
 
- };
 
- class CCallback : public ICallback
 
- {
 
- private:
 
- 	void newTurn();
 
- 	CCallback(CGameState * GS, int Player):gs(GS),player(Player){};
 
- 	CGameState * gs;
 
- 	int lowestSpeed(CGHeroInstance * chi); //speed of the slowest stack
 
- 	int valMovePoints(CGHeroInstance * chi); 
 
- 	bool isVisible(int3 pos, int Player);
 
- protected:
 
- 	int player;
 
- public:
 
- //commands
 
- 	bool moveHero(int ID, CPath * path, int idtype, int pathType=0);//idtype: 0 - position in vector of heroes (of that player); 1 - ID of hero 
 
- 															//pathType: 0 - nodes are manifestation pos, 1 - nodes are object pos
 
- 	void selectionMade(int selection, int asker);
 
- //get info
 
- 	bool verifyPath(CPath * path, bool blockSea);
 
- 	int getDate(int mode=0); //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month
 
- 	PseudoV< PseudoV< PseudoV<unsigned char> > > & getVisibilityMap(); //returns visibility map (TODO: make it const)
 
- 	const CGHeroInstance * getHeroInfo(int player, int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
 
- 	int getResourceAmount(int type);
 
- 	int howManyHeroes();
 
- 	const CGTownInstance * getTownInfo(int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
 
- 	int howManyTowns();
 
- 	std::vector < std::string > getObjDescriptions(int3 pos); //returns descriptions of objects at pos in order from the lowest to the highest
 
- 	std::vector < const CGHeroInstance *> getHeroesInfo(bool onlyOur=true);
 
- 	bool isVisible(int3 pos);
 
- 	int getMyColor();
 
- 	int getHeroSerial(const CGHeroInstance * hero);
 
- 	int getMySerial();
 
- 	int swapCreatures(const CGObjectInstance *s1, const CGObjectInstance *s2, int p1, int p2);
 
- 	int mergeStacks(const CGObjectInstance *s1, const CGObjectInstance *s2, int p1, int p2);
 
- 	int splitStack(const CGObjectInstance *s1, const CGObjectInstance *s2, int p1, int p2, int val);
 
- 	bool dismissHero(const CGHeroInstance * hero);
 
- 	const CCreatureSet* getGarrison(const CGObjectInstance *obj);
 
- 	bool swapArifacts(const CGHeroInstance * hero1, bool worn1, int pos1, const CGHeroInstance * hero2, bool worn2, int pos2);
 
- //friends
 
- 	friend int _tmain(int argc, _TCHAR* argv[]);
 
- };
 
- class CScriptCallback
 
- {
 
- public:
 
- 	CGameState * gs;
 
- 	//get info
 
- 	static int3 getPos(CGObjectInstance * ob);
 
- 	int getHeroOwner(int heroID);
 
- 	int getSelectedHero();
 
- 	int getDate(int mode=0);
 
- 	//do sth
 
- 	static void changePrimSkill(int ID, int which, int val);
 
- 	void showInfoDialog(int player, std::string text, std::vector<SComponent*> * components); //TODO: obslugiwac nulle
 
- 	void showSelDialog(int player, std::string text, std::vector<CSelectableComponent*>*components, IChosen * asker);
 
- 	void giveResource(int player, int which, int val);
 
- 	void showCompInfo(int player, SComponent * comp);
 
- 	void heroVisitCastle(CGObjectInstance * ob, int heroID);
 
- 	void stopHeroVisitCastle(CGObjectInstance * ob, int heroID);
 
- 	//friends
 
- 	friend void initGameState(CGameInfo * cgi);
 
- };
 
- class CLuaCallback : public CScriptCallback
 
- {
 
- private:
 
- 	static void registerFuncs(lua_State * L);
 
- 	static int getPos(lua_State * L);//(CGObjectInstance * object);
 
- 	static int changePrimSkill(lua_State * L);//(int ID, int which, int val);
 
- 	static int getGnrlText(lua_State * L);//(int ID, int which, int val);
 
- 	static int getSelectedHero(lua_State * L);//()
 
- 	friend void initGameState(CGameInfo * cgi);
 
- };
 
- #endif //CCALLBACK_H
 
 
  |