2008-07-30 17:51:19 +00:00
# pragma once
# include "../global.h"
# include <vector>
class CVCMIServer ;
class CGameHandler ;
class SComponent ;
class CSelectableComponent ;
class IChosen ;
class CCreatureSet ;
class CGHeroInstance ;
class CGObjectInstance ;
class CGHeroInstance ;
class CGTownInstance ;
class CGameState ;
struct lua_State ;
struct MetaString ;
2008-07-30 21:27:15 +00:00
struct InfoWindow ;
2008-08-04 15:56:36 +00:00
struct ShowInInfobox ;
2008-07-30 17:51:19 +00:00
class CScriptCallback
{
CScriptCallback ( void ) ;
public :
~ CScriptCallback ( void ) ;
CGameHandler * gh ;
//get info
static int3 getPos ( CGObjectInstance * ob ) ;
int getHeroOwner ( int heroID ) ;
int getSelectedHero ( ) ;
int getDate ( int mode = 0 ) ;
const CGObjectInstance * getObj ( int objid ) ;
const CGHeroInstance * getHero ( int objid ) ;
const CGTownInstance * getTown ( int objid ) ;
//do sth
void setBlockVis ( int objid , bool bv ) ;
void setOwner ( int objid , ui8 owner ) ;
void setHoverName ( int objid , MetaString * name ) ;
2008-08-04 15:56:36 +00:00
void changePrimSkill ( int ID , int which , int val , bool abs = false ) ;
2008-07-30 21:27:15 +00:00
void showInfoDialog ( InfoWindow * iw ) ;
2008-07-30 17:51:19 +00:00
void showSelDialog ( int player , std : : string text , std : : vector < CSelectableComponent * > * components , IChosen * asker ) ;
void giveResource ( int player , int which , int val ) ;
2008-08-04 15:56:36 +00:00
void showCompInfo ( ShowInInfobox * comp ) ;
2008-07-30 17:51:19 +00:00
void heroVisitCastle ( int obj , int heroID ) ;
void stopHeroVisitCastle ( int obj , int heroID ) ;
void giveHeroArtifact ( int artid , int hid , int position ) ; //pos==-1 - first free slot in backpack
void startBattle ( const CCreatureSet * army1 , const CCreatureSet * army2 , int3 tile , const CGHeroInstance * hero1 , const CGHeroInstance * hero2 ) ; //use hero=NULL for no hero
2008-08-04 15:56:36 +00:00
void startBattle ( int heroID , CCreatureSet army , int3 tile ) ; //for hero<=>neutral army
2008-07-30 17:51:19 +00:00
//friends
friend class CGameHandler ;
} ;
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 class CGameHandler ;
} ;