1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-15 20:03:15 +02:00

few tweaks to make (server, client) on gcc (4.3.3 ubuntu)

This commit is contained in:
Łukasz Wychrystenko
2008-12-18 20:30:26 +00:00
parent 07d1faeedc
commit 0f81bf5ae0
5 changed files with 103 additions and 22 deletions

View File

@@ -23,6 +23,7 @@
#include "lib/NetPacks.h" #include "lib/NetPacks.h"
#pragma warning (disable : 4311) #pragma warning (disable : 4311)
#define DEFOS const CGObjectInstance *os = cb->getObj(objid) #define DEFOS const CGObjectInstance *os = cb->getObj(objid)
bool getGlobalFunc(lua_State * L, std::string fname) bool getGlobalFunc(lua_State * L, std::string fname)
{ {
//unsigned int hash = lua_calchash(fname.c_str(), fname.size()); //unsigned int hash = lua_calchash(fname.c_str(), fname.size());
@@ -32,6 +33,39 @@ bool getGlobalFunc(lua_State * L, std::string fname)
return false; return false;
} }
void CObjectScript::newObject(int objid) {
};
void CObjectScript::onHeroVisit(int objid, int heroID) {
};
void CObjectScript::onHeroLeave(int objid, int heroID) {
};
std::string CObjectScript::hoverText(int objid) {
return "";
};
void CObjectScript::newTurn () {
};
void CObjectScript::equipArtefact(int HID, int AID, int slot, bool putOn) {
}; //putOn==0 means that artifact is taken off
void CObjectScript::battleStart(int phase) {
}; //phase==0 - very start, before initialization of battle; phase==1 - just before battle starts
void CObjectScript::battleNewTurn (int turn) {
}; //turn==-1 is for tactic stage
void CObjectScript::heroLevelUp (int HID) {
}; //add possibility of changing available sec. skills
//CObjectScript
CObjectScript::CObjectScript() CObjectScript::CObjectScript()
{ {
language = UNDEF; language = UNDEF;
@@ -560,6 +594,9 @@ void CMines::newTurn ()
} }
} }
CPickable::CPickable(CScriptCallback * CB):CCPPObjectScript(CB) {
};
void CPickable::newObject(int objid) void CPickable::newObject(int objid)
{ {
@@ -717,6 +754,9 @@ std::vector<int> CPickable::yourObjects() //returns IDs of objects which are han
ret.push_back(101); //treasure chest / commander stone ret.push_back(101); //treasure chest / commander stone
return ret; return ret;
} }
//CPickable
CTownScript::CTownScript(CScriptCallback * CB):CCPPObjectScript(CB) {
};
void CTownScript::onHeroVisit(int objid, int heroID) void CTownScript::onHeroVisit(int objid, int heroID)
{ {
@@ -747,6 +787,9 @@ std::vector<int> CTownScript::yourObjects() //returns IDs of objects which are h
ret.push_back(98); //town ret.push_back(98); //town
return ret; return ret;
} }
//CTownScript
CHeroScript::CHeroScript(CScriptCallback * CB):CCPPObjectScript(CB) {
};
void CHeroScript::newObject(int objid) void CHeroScript::newObject(int objid)
{ {
@@ -784,6 +827,11 @@ std::vector<int> CHeroScript::yourObjects() //returns IDs of objects which are h
ret.push_back(34); //hero ret.push_back(34); //hero
return ret; return ret;
} }
//CHeroScript
CMonsterS::CMonsterS(CScriptCallback * CB):CCPPObjectScript(CB) {
};
void CMonsterS::newObject(int objid) void CMonsterS::newObject(int objid)
{ {
//os->blockVisit = true; //os->blockVisit = true;
@@ -859,6 +907,11 @@ void CMonsterS::endBattleWith(const CGObjectInstance *monster, BattleResult *res
cb->setAmount(monster->id,((CCreatureObjInfo*)(monster->info))->number - killedAmount); cb->setAmount(monster->id,((CCreatureObjInfo*)(monster->info))->number - killedAmount);
} }
} }
//CMonsterS
CCreatureGen::CCreatureGen(CScriptCallback * CB):CCPPObjectScript(CB) {
};
void CCreatureGen::newObject(int objid) void CCreatureGen::newObject(int objid)
{ {
@@ -868,15 +921,20 @@ void CCreatureGen::newObject(int objid)
ms << std::pair<ui8,ui32>(8,os->subID); ms << std::pair<ui8,ui32>(8,os->subID);
cb->setHoverName(objid,&ms); cb->setHoverName(objid,&ms);
} }
void CCreatureGen::onHeroVisit(int objid, int heroID) void CCreatureGen::onHeroVisit(int objid, int heroID)
{ {
} }
std::vector<int> CCreatureGen::yourObjects() //returns IDs of objects which are handled by script std::vector<int> CCreatureGen::yourObjects() //returns IDs of objects which are handled by script
{ {
std::vector<int> ret; std::vector<int> ret;
ret.push_back(17); //cregen1 ret.push_back(17); //cregen1
return ret; return ret;
} }
//CCreatureGen
CTeleports::CTeleports(CScriptCallback * CB):CCPPObjectScript(CB) {
};
void CTeleports::newObject(int objid) void CTeleports::newObject(int objid)
{ {
@@ -942,3 +1000,16 @@ std::vector<int> CTeleports::yourObjects() //returns IDs of objects which are ha
ret.push_back(103); ret.push_back(103);
return ret; return ret;
} }
//CTeleports
CCPPObjectScript::CCPPObjectScript(CScriptCallback * CB) {
cb=CB;
};
CVisitableOPH::CVisitableOPH(CScriptCallback * CB):CCPPObjectScript(CB) {//:CCPPObjectScript(CB) {
};
CVisitableOPW::CVisitableOPW(CScriptCallback * CB):CCPPObjectScript(CB) {
};
CMines::CMines(CScriptCallback * CB):CCPPObjectScript(CB) {
};

42
CLua.h
View File

@@ -27,10 +27,12 @@ struct Mapa;
struct lua_State; struct lua_State;
struct BattleResult; struct BattleResult;
enum ESLan{UNDEF=-1,CPP,ERM,LUA}; enum ESLan{UNDEF=-1,CPP,ERM,LUA};
class CObjectScript class CObjectScript
{ {
public: public:
int owner, language; int owner, language;
std::string filename; std::string filename;
int getOwner(){return owner;} //255 - neutral / 254 - not flaggable int getOwner(){return owner;} //255 - neutral / 254 - not flaggable
@@ -40,20 +42,20 @@ public:
//functions to be called in script //functions to be called in script
//virtual void init(){}; //called when game is ready //virtual void init(){}; //called when game is ready
virtual void newObject(int objid){}; virtual void newObject(int objid);
virtual void onHeroVisit(int objid, int heroID){}; virtual void onHeroVisit(int objid, int heroID);
virtual void onHeroLeave(int objid, int heroID){}; virtual void onHeroLeave(int objid, int heroID);
virtual std::string hoverText(int objid){return "";}; virtual std::string hoverText(int objid);
virtual void newTurn (){}; virtual void newTurn ();
//TODO: implement functions below: //TODO: implement functions below:
virtual void equipArtefact(int HID, int AID, int slot, bool putOn){}; //putOn==0 means that artifact is taken off virtual void equipArtefact(int HID, int AID, int slot, bool putOn); //putOn==0 means that artifact is taken off
virtual void battleStart(int phase){}; //phase==0 - very start, before initialization of battle; phase==1 - just before battle starts virtual void battleStart(int phase); //phase==0 - very start, before initialization of battle; phase==1 - just before battle starts
virtual void battleNewTurn (int turn){}; //turn==-1 is for tactic stage virtual void battleNewTurn (int turn); //turn==-1 is for tactic stage
//virtual void battleAction (int type,int destination, int stack, int owner, int){}; //virtual void battleAction (int type,int destination, int stack, int owner, int){};
//virtual void mouseClick (down,left,screen?, pos??){}; //virtual void mouseClick (down,left,screen?, pos??){};
virtual void heroLevelUp (int HID){}; //add possibility of changing available sec. skills virtual void heroLevelUp (int HID); //add possibility of changing available sec. skills
}; };
class CScript class CScript
@@ -97,7 +99,7 @@ class CCPPObjectScript: public CObjectScript
{ {
public: public:
CScriptCallback * cb; CScriptCallback * cb;
CCPPObjectScript(CScriptCallback * CB){cb=CB;}; CCPPObjectScript(CScriptCallback * CB);//{cb=CB;};
virtual std::vector<int> yourObjects()=0; //returns IDs of objects which are handled by script virtual std::vector<int> yourObjects()=0; //returns IDs of objects which are handled by script
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
@@ -107,7 +109,7 @@ public:
class CVisitableOPH : public CCPPObjectScript //once per hero class CVisitableOPH : public CCPPObjectScript //once per hero
{ {
public: public:
CVisitableOPH(CScriptCallback * CB):CCPPObjectScript(CB){}; CVisitableOPH(CScriptCallback * CB);//{};
std::map<int, int> typeOfTree; //0 - level for free; 1 - 2000 gold; 2 - 10 gems std::map<int, int> typeOfTree; //0 - level for free; 1 - 2000 gold; 2 - 10 gems
std::map<int,std::set<int> > visitors; std::map<int,std::set<int> > visitors;
@@ -121,7 +123,7 @@ public:
class CVisitableOPW : public CCPPObjectScript //once per week class CVisitableOPW : public CCPPObjectScript //once per week
{ {
public: public:
CVisitableOPW(CScriptCallback * CB):CCPPObjectScript(CB){}; CVisitableOPW(CScriptCallback * CB);
std::map<int,bool> visited; std::map<int,bool> visited;
void onNAHeroVisit(int objid, int heroID, bool alreadyVisited); void onNAHeroVisit(int objid, int heroID, bool alreadyVisited);
void newObject(int objid); void newObject(int objid);
@@ -133,7 +135,7 @@ public:
class CMines : public CCPPObjectScript //flaggable, and giving resource at each day class CMines : public CCPPObjectScript //flaggable, and giving resource at each day
{ {
public: public:
CMines(CScriptCallback * CB):CCPPObjectScript(CB){}; CMines(CScriptCallback * CB);
std::vector<int> ourObjs; std::vector<int> ourObjs;
@@ -146,7 +148,7 @@ public:
class CPickable : public CCPPObjectScript //pickable - resources, artifacts, etc class CPickable : public CCPPObjectScript //pickable - resources, artifacts, etc
{ {
public: public:
CPickable(CScriptCallback * CB):CCPPObjectScript(CB){}; CPickable(CScriptCallback * CB);//:CCPPObjectScript(CB);
void chosen(ui32 which, int heroid, int val); //val - value of treasure in gold void chosen(ui32 which, int heroid, int val); //val - value of treasure in gold
void newObject(int objid); void newObject(int objid);
void onHeroVisit(int objid, int heroID); void onHeroVisit(int objid, int heroID);
@@ -156,7 +158,7 @@ public:
class CTownScript : public CCPPObjectScript //pickable - resources, artifacts, etc class CTownScript : public CCPPObjectScript //pickable - resources, artifacts, etc
{ {
public: public:
CTownScript(CScriptCallback * CB):CCPPObjectScript(CB){}; CTownScript(CScriptCallback * CB);//:CCPPObjectScript(CB){};
void onHeroVisit(int objid, int heroID); void onHeroVisit(int objid, int heroID);
void onHeroLeave(int objid, int heroID); void onHeroLeave(int objid, int heroID);
void newObject(int objid); void newObject(int objid);
@@ -166,7 +168,7 @@ public:
class CHeroScript : public CCPPObjectScript class CHeroScript : public CCPPObjectScript
{ {
public: public:
CHeroScript(CScriptCallback * CB):CCPPObjectScript(CB){}; CHeroScript(CScriptCallback * CB);//:CCPPObjectScript(CB){};
void newObject(int objid); void newObject(int objid);
void onHeroVisit(int objid, int heroID); void onHeroVisit(int objid, int heroID);
std::vector<int> yourObjects(); //returns IDs of objects which are handled by script std::vector<int> yourObjects(); //returns IDs of objects which are handled by script
@@ -175,7 +177,7 @@ public:
class CMonsterS : public CCPPObjectScript class CMonsterS : public CCPPObjectScript
{ {
public: public:
CMonsterS(CScriptCallback * CB):CCPPObjectScript(CB){}; CMonsterS(CScriptCallback * CB);//:CCPPObjectScript(CB){};
void newObject(int objid); void newObject(int objid);
void onHeroVisit(int objid, int heroID); void onHeroVisit(int objid, int heroID);
std::vector<int> yourObjects(); //returns IDs of objects which are handled by script std::vector<int> yourObjects(); //returns IDs of objects which are handled by script
@@ -186,7 +188,7 @@ class CCreatureGen : public CCPPObjectScript
{ {
public: public:
std::map<int, int> amount; //amount of creatures in each dwelling std::map<int, int> amount; //amount of creatures in each dwelling
CCreatureGen(CScriptCallback * CB):CCPPObjectScript(CB){}; CCreatureGen(CScriptCallback * CB);//:CCPPObjectScript(CB){};
void newObject(int objid); void newObject(int objid);
void onHeroVisit(int objid, int heroID); void onHeroVisit(int objid, int heroID);
std::vector<int> yourObjects(); //returns IDs of objects which are handled by script std::vector<int> yourObjects(); //returns IDs of objects which are handled by script
@@ -200,5 +202,5 @@ public:
void newObject(int objid); void newObject(int objid);
void onHeroVisit(int objid, int heroID); void onHeroVisit(int objid, int heroID);
std::vector<int> yourObjects(); //returns IDs of objects which are handled by script std::vector<int> yourObjects(); //returns IDs of objects which are handled by script
CTeleports(CScriptCallback * CB):CCPPObjectScript(CB){}; CTeleports(CScriptCallback * CB);//:CCPPObjectScript(CB){};
}; };

View File

@@ -1,3 +1,5 @@
#ifndef CONNECTION_H
#define CONNECTION_H
#pragma once #pragma once
#include "../global.h" #include "../global.h"
#include <string> #include <string>
@@ -15,6 +17,7 @@
#include <boost/mpl/int.hpp> #include <boost/mpl/int.hpp>
#include <boost/mpl/identity.hpp> #include <boost/mpl/identity.hpp>
#include <boost/type_traits/is_array.hpp>
const int version = 63; const int version = 63;
class CConnection; class CConnection;
@@ -409,3 +412,4 @@ public:
void close(); void close();
~CConnection(void); ~CConnection(void);
}; };
#endif //CONNECTION_H

2
map.h
View File

@@ -1,7 +1,7 @@
#ifndef MAPD_H #ifndef MAPD_H
#define MAPD_H #define MAPD_H
#pragma warning (disable : 4482) #pragma warning (disable : 4482)
#include <string> #include <cstring>
#include <vector> #include <vector>
#include <map> #include <map>
#include <set> #include <set>

View File

@@ -1,3 +1,6 @@
#ifndef CGAMEHANDLER_H
#define CGAMEHANDLER_H
#pragma once #pragma once
#include "../global.h" #include "../global.h"
#include <set> #include <set>
@@ -133,3 +136,4 @@ public:
friend class CVCMIServer; friend class CVCMIServer;
friend class CScriptCallback; friend class CScriptCallback;
}; };
#endif //CGAMEHANDLER_H