2008-07-30 20:51:19 +03:00
# pragma once
# include "../global.h"
# include <vector>
2008-08-13 03:44:31 +03:00
# include <boost/function.hpp>
2008-07-30 20:51:19 +03:00
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-31 00:27:15 +03:00
struct InfoWindow ;
2008-08-04 18:56:36 +03:00
struct ShowInInfobox ;
2008-08-13 03:44:31 +03:00
struct SelectionDialog ;
2008-07-30 20:51:19 +03: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
2008-08-13 07:41:11 +03:00
void removeObject ( int objid ) ;
2008-07-30 20:51:19 +03:00
void setBlockVis ( int objid , bool bv ) ;
void setOwner ( int objid , ui8 owner ) ;
void setHoverName ( int objid , MetaString * name ) ;
2008-08-04 18:56:36 +03:00
void changePrimSkill ( int ID , int which , int val , bool abs = false ) ;
2008-07-31 00:27:15 +03:00
void showInfoDialog ( InfoWindow * iw ) ;
2008-08-20 09:57:53 +03:00
void showSelectionDialog ( SelectionDialog * iw , boost : : function < void ( ui32 ) > & callback ) ; //returns question id
2008-07-30 20:51:19 +03:00
void giveResource ( int player , int which , int val ) ;
2008-08-04 18:56:36 +03:00
void showCompInfo ( ShowInInfobox * comp ) ;
2008-07-30 20:51:19 +03: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 18:56:36 +03:00
void startBattle ( int heroID , CCreatureSet army , int3 tile ) ; //for hero<=>neutral army
2008-07-30 20:51:19 +03: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 ;
} ;