mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-17 01:32:21 +02:00
* First Aid Tent won't get move
* presumably fixed crash occurring sometimes on battle end * fixed problems when attacking with two-hex creature another two-hex creature, when tile before our destination was blocked * minor changes
This commit is contained in:
@ -136,7 +136,7 @@ void CGeniusAI::battleNewRound(int round)
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void CGeniusAI::battleStackMoved(int ID, int dest)
|
void CGeniusAI::battleStackMoved(int ID, int dest, int distance, bool end)
|
||||||
{
|
{
|
||||||
std::string message("\t\t\tCGeniusAI::battleStackMoved ID(");
|
std::string message("\t\t\tCGeniusAI::battleStackMoved ID(");
|
||||||
message += boost::lexical_cast<std::string>(ID);
|
message += boost::lexical_cast<std::string>(ID);
|
||||||
|
@ -200,7 +200,7 @@ public:
|
|||||||
virtual void battleStacksAttacked(std::set<BattleStackAttacked> & bsa); //called when stack receives damage (after battleAttack())
|
virtual void battleStacksAttacked(std::set<BattleStackAttacked> & bsa); //called when stack receives damage (after battleAttack())
|
||||||
virtual void battleEnd(BattleResult *br);
|
virtual void battleEnd(BattleResult *br);
|
||||||
virtual void battleNewRound(int round); //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
virtual void battleNewRound(int round); //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||||
virtual void battleStackMoved(int ID, int dest);
|
virtual void battleStackMoved(int ID, int dest, int distance, bool end);
|
||||||
virtual void battleSpellCasted(SpellCasted *sc);
|
virtual void battleSpellCasted(SpellCasted *sc);
|
||||||
virtual void battleStart(CCreatureSet *army1, CCreatureSet *army2, int3 tile, CGHeroInstance *hero1, CGHeroInstance *hero2, bool side); //called by engine when battle starts; side=0 - left, side=1 - right
|
virtual void battleStart(CCreatureSet *army1, CCreatureSet *army2, int3 tile, CGHeroInstance *hero1, CGHeroInstance *hero2, bool side); //called by engine when battle starts; side=0 - left, side=1 - right
|
||||||
virtual void battlefieldPrepared(int battlefieldType, std::vector<CObstacle*> obstacles); //called when battlefield is prepared, prior the battle beginning
|
virtual void battlefieldPrepared(int battlefieldType, std::vector<CObstacle*> obstacles); //called when battlefield is prepared, prior the battle beginning
|
||||||
|
@ -69,8 +69,8 @@ public:
|
|||||||
virtual void init(ICallback * CB){};
|
virtual void init(ICallback * CB){};
|
||||||
virtual void receivedResource(int type, int val){};
|
virtual void receivedResource(int type, int val){};
|
||||||
virtual void showInfoDialog(const std::string &text, const std::vector<Component*> &components){};
|
virtual void showInfoDialog(const std::string &text, const std::vector<Component*> &components){};
|
||||||
virtual void showSelDialog(std::string &text, const std::vector<Component*> &components, ui32 askID){};
|
virtual void showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID){};
|
||||||
virtual void showYesNoDialog(std::string &text, const std::vector<Component*> &components, ui32 askID){};
|
virtual void showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID){};
|
||||||
virtual void tileHidden(const std::set<int3> &pos){};
|
virtual void tileHidden(const std::set<int3> &pos){};
|
||||||
virtual void tileRevealed(const std::set<int3> &pos){};
|
virtual void tileRevealed(const std::set<int3> &pos){};
|
||||||
virtual void yourTurn(){};
|
virtual void yourTurn(){};
|
||||||
@ -87,7 +87,7 @@ public:
|
|||||||
virtual void battleStacksAttacked(std::set<BattleStackAttacked> & bsa){}; //called when stack receives damage (after battleAttack())
|
virtual void battleStacksAttacked(std::set<BattleStackAttacked> & bsa){}; //called when stack receives damage (after battleAttack())
|
||||||
virtual void battleEnd(BattleResult *br){};
|
virtual void battleEnd(BattleResult *br){};
|
||||||
virtual void battleNewRound(int round){}; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
virtual void battleNewRound(int round){}; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||||
virtual void battleStackMoved(int ID, int dest, int distance){};
|
virtual void battleStackMoved(int ID, int dest, int distance, bool end){};
|
||||||
virtual void battleSpellCasted(SpellCasted *sc){};
|
virtual void battleSpellCasted(SpellCasted *sc){};
|
||||||
virtual void battleStacksEffectsSet(SetStackEffect & sse){};//called when a specific effect is set to stacks
|
virtual void battleStacksEffectsSet(SetStackEffect & sse){};//called when a specific effect is set to stacks
|
||||||
virtual void battleStart(CCreatureSet *army1, CCreatureSet *army2, int3 tile, CGHeroInstance *hero1, CGHeroInstance *hero2, bool side){}; //called by engine when battle starts; side=0 - left, side=1 - right
|
virtual void battleStart(CCreatureSet *army1, CCreatureSet *army2, int3 tile, CGHeroInstance *hero1, CGHeroInstance *hero2, bool side){}; //called by engine when battle starts; side=0 - left, side=1 - right
|
||||||
|
@ -2018,7 +2018,7 @@ void CPlayerInterface::receivedResource(int type, int val)
|
|||||||
castleInt->resdatabar->draw();
|
castleInt->resdatabar->draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlayerInterface::showSelDialog(std::string &text, const std::vector<Component*> &components, ui32 askID)
|
void CPlayerInterface::showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID)
|
||||||
//void CPlayerInterface::showSelDialog(std::string text, std::vector<CSelectableComponent*> & components, int askID)
|
//void CPlayerInterface::showSelDialog(std::string text, std::vector<CSelectableComponent*> & components, int askID)
|
||||||
{
|
{
|
||||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||||
@ -2301,10 +2301,10 @@ void CPlayerInterface::battleResultQuited()
|
|||||||
LOCPLINT->showingDialog->setn(false);
|
LOCPLINT->showingDialog->setn(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlayerInterface::battleStackMoved(int ID, int dest, int distance)
|
void CPlayerInterface::battleStackMoved(int ID, int dest, int distance, bool end)
|
||||||
{
|
{
|
||||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||||
battleInt->stackMoved(ID, dest, dest==curAction->destinationTile, distance);
|
battleInt->stackMoved(ID, dest, end, distance);
|
||||||
}
|
}
|
||||||
void CPlayerInterface::battleSpellCasted(SpellCasted *sc)
|
void CPlayerInterface::battleSpellCasted(SpellCasted *sc)
|
||||||
{
|
{
|
||||||
@ -2391,7 +2391,7 @@ void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector
|
|||||||
|
|
||||||
std::vector<std::pair<std::string,CFunctionList<void()> > > pom;
|
std::vector<std::pair<std::string,CFunctionList<void()> > > pom;
|
||||||
pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
|
pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
|
||||||
CInfoWindow * temp = new CInfoWindow(text,playerID,32,components,pom);
|
CInfoWindow * temp = new CInfoWindow(text,playerID,36,components,pom);
|
||||||
|
|
||||||
if(makingTurn && curint)
|
if(makingTurn && curint)
|
||||||
{
|
{
|
||||||
@ -2409,7 +2409,7 @@ void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector
|
|||||||
dialogs.push_back(temp);
|
dialogs.push_back(temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void CPlayerInterface::showYesNoDialog(std::string &text, const std::vector<SComponent*> & components, CFunctionList<void()> onYes, CFunctionList<void()> onNo, bool deactivateCur, bool DelComps)
|
void CPlayerInterface::showYesNoDialog(const std::string &text, const std::vector<SComponent*> & components, CFunctionList<void()> onYes, CFunctionList<void()> onNo, bool deactivateCur, bool DelComps)
|
||||||
{
|
{
|
||||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||||
LOCPLINT->showingDialog->setn(true);
|
LOCPLINT->showingDialog->setn(true);
|
||||||
@ -2418,7 +2418,7 @@ void CPlayerInterface::showYesNoDialog(std::string &text, const std::vector<SCom
|
|||||||
std::vector<std::pair<std::string,CFunctionList<void()> > > pom;
|
std::vector<std::pair<std::string,CFunctionList<void()> > > pom;
|
||||||
pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
|
pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
|
||||||
pom.push_back(std::pair<std::string,CFunctionList<void()> >("ICANCEL.DEF",0));
|
pom.push_back(std::pair<std::string,CFunctionList<void()> >("ICANCEL.DEF",0));
|
||||||
CInfoWindow * temp = new CInfoWindow(text,playerID,32,components,pom);
|
CInfoWindow * temp = new CInfoWindow(text,playerID,36,components,pom);
|
||||||
temp->delComps = DelComps;
|
temp->delComps = DelComps;
|
||||||
for(int i=0;i<onYes.funcs.size();i++)
|
for(int i=0;i<onYes.funcs.size();i++)
|
||||||
temp->buttons[0]->callback += onYes.funcs[i];
|
temp->buttons[0]->callback += onYes.funcs[i];
|
||||||
@ -2433,7 +2433,7 @@ void CPlayerInterface::showYesNoDialog(std::string &text, const std::vector<SCom
|
|||||||
LOCPLINT->objsToBlit.push_back(temp);
|
LOCPLINT->objsToBlit.push_back(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlayerInterface::showYesNoDialog( std::string &text, const std::vector<Component*> &components, ui32 askID )
|
void CPlayerInterface::showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID )
|
||||||
{
|
{
|
||||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||||
LOCPLINT->showingDialog->setn(false);
|
LOCPLINT->showingDialog->setn(false);
|
||||||
@ -2446,7 +2446,7 @@ void CPlayerInterface::showYesNoDialog( std::string &text, const std::vector<Com
|
|||||||
pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
|
pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
|
||||||
pom.push_back(std::pair<std::string,CFunctionList<void()> >("ICANCEL.DEF",0));
|
pom.push_back(std::pair<std::string,CFunctionList<void()> >("ICANCEL.DEF",0));
|
||||||
|
|
||||||
CInfoWindow * temp = new CInfoWindow(text,playerID,32,intComps,pom);
|
CInfoWindow * temp = new CInfoWindow(text,playerID,36,intComps,pom);
|
||||||
temp->buttons[0]->callback += boost::bind(&IActivable::activate,curint);
|
temp->buttons[0]->callback += boost::bind(&IActivable::activate,curint);
|
||||||
temp->buttons[1]->callback += boost::bind(&IActivable::activate,curint);
|
temp->buttons[1]->callback += boost::bind(&IActivable::activate,curint);
|
||||||
temp->buttons[0]->callback += boost::bind(&CCallback::selectionMade,cb,0,askID);
|
temp->buttons[0]->callback += boost::bind(&CCallback::selectionMade,cb,0,askID);
|
||||||
|
@ -539,8 +539,8 @@ public:
|
|||||||
void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town);
|
void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town);
|
||||||
void receivedResource(int type, int val);
|
void receivedResource(int type, int val);
|
||||||
void showInfoDialog(const std::string &text, const std::vector<Component*> &components);
|
void showInfoDialog(const std::string &text, const std::vector<Component*> &components);
|
||||||
void showSelDialog(std::string &text, const std::vector<Component*> &components, ui32 askID);
|
void showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID);
|
||||||
void showYesNoDialog(std::string &text, const std::vector<Component*> &components, ui32 askID);
|
void showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID);
|
||||||
void tileHidden(const std::set<int3> &pos);
|
void tileHidden(const std::set<int3> &pos);
|
||||||
void tileRevealed(const std::set<int3> &pos);
|
void tileRevealed(const std::set<int3> &pos);
|
||||||
void yourTurn();
|
void yourTurn();
|
||||||
@ -557,7 +557,7 @@ public:
|
|||||||
void battleEnd(BattleResult *br); //end of battle
|
void battleEnd(BattleResult *br); //end of battle
|
||||||
void battleResultQuited();
|
void battleResultQuited();
|
||||||
void battleNewRound(int round); //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
void battleNewRound(int round); //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||||
void battleStackMoved(int ID, int dest, int distance);
|
void battleStackMoved(int ID, int dest, int distance, bool end);
|
||||||
void battleSpellCasted(SpellCasted *sc);
|
void battleSpellCasted(SpellCasted *sc);
|
||||||
void battleStacksEffectsSet(SetStackEffect & sse); //called when a specific effect is set to stacks
|
void battleStacksEffectsSet(SetStackEffect & sse); //called when a specific effect is set to stacks
|
||||||
void battleStacksAttacked(std::set<BattleStackAttacked> & bsa);
|
void battleStacksAttacked(std::set<BattleStackAttacked> & bsa);
|
||||||
@ -581,7 +581,7 @@ public:
|
|||||||
int3 repairScreenPos(int3 pos); //returns position closest to pos we can center screen on
|
int3 repairScreenPos(int3 pos); //returns position closest to pos we can center screen on
|
||||||
void removeObjToBlit(IShowable* obj);
|
void removeObjToBlit(IShowable* obj);
|
||||||
void showInfoDialog(const std::string &text, const std::vector<SComponent*> & components, bool deactivateCur=true);
|
void showInfoDialog(const std::string &text, const std::vector<SComponent*> & components, bool deactivateCur=true);
|
||||||
void showYesNoDialog(std::string &text, const std::vector<SComponent*> & components, CFunctionList<void()> onYes, CFunctionList<void()> onNo, bool deactivateCur, bool DelComps); //deactivateCur - whether current main interface should be deactivated; delComps - if components will be deleted on window close
|
void showYesNoDialog(const std::string &text, const std::vector<SComponent*> & components, CFunctionList<void()> onYes, CFunctionList<void()> onNo, bool deactivateCur, bool DelComps); //deactivateCur - whether current main interface should be deactivated; delComps - if components will be deleted on window close
|
||||||
bool moveHero(const CGHeroInstance *h, CPath * path);
|
bool moveHero(const CGHeroInstance *h, CPath * path);
|
||||||
|
|
||||||
CPlayerInterface(int Player, int serial);//c-tor
|
CPlayerInterface(int Player, int serial);//c-tor
|
||||||
|
@ -330,8 +330,8 @@ void BattleResult::applyFirstCl( CClient *cl )
|
|||||||
|
|
||||||
void BattleStackMoved::applyFirstCl( CClient *cl )
|
void BattleStackMoved::applyFirstCl( CClient *cl )
|
||||||
{
|
{
|
||||||
INTERFACE_CALL_IF_PRESENT(GS(cl)->curB->side1,battleStackMoved,stack,tile,distance);
|
INTERFACE_CALL_IF_PRESENT(GS(cl)->curB->side1,battleStackMoved,stack,tile,distance,ending);
|
||||||
INTERFACE_CALL_IF_PRESENT(GS(cl)->curB->side2,battleStackMoved,stack,tile,distance);
|
INTERFACE_CALL_IF_PRESENT(GS(cl)->curB->side2,battleStackMoved,stack,tile,distance,ending);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BattleStackAttacked::applyCl( CClient *cl )
|
void BattleStackAttacked::applyCl( CClient *cl )
|
||||||
|
@ -464,8 +464,9 @@ void CCreatureHandler::loadCreatures()
|
|||||||
|
|
||||||
creatures[47].abilities += MULTI_HEAD_ATTACK; //cerberus
|
creatures[47].abilities += MULTI_HEAD_ATTACK; //cerberus
|
||||||
|
|
||||||
creatures[88].abilities += TWICE_ATTACK; //wolf raider
|
creatures[87].abilities += TWICE_ATTACK; //wolf raider
|
||||||
|
|
||||||
|
creatures[147].abilities += NOT_ACTIVE; //First Aid Tent //TODO: remove when support is added
|
||||||
creatures[148].abilities += NOT_ACTIVE; //Ammo Cart
|
creatures[148].abilities += NOT_ACTIVE; //Ammo Cart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -647,13 +647,14 @@ struct BattleResult : public CPackForClient//3003
|
|||||||
|
|
||||||
struct BattleStackMoved : public CPackForClient//3004
|
struct BattleStackMoved : public CPackForClient//3004
|
||||||
{
|
{
|
||||||
ui32 stack, tile, distance;
|
ui32 stack, tile;
|
||||||
|
ui8 ending, distance;
|
||||||
BattleStackMoved(){type = 3004;};
|
BattleStackMoved(){type = 3004;};
|
||||||
void applyFirstCl(CClient *cl);
|
void applyFirstCl(CClient *cl);
|
||||||
void applyGs(CGameState *gs);
|
void applyGs(CGameState *gs);
|
||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & stack & tile & distance;
|
h & stack & tile & ending & distance;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
9
map.cpp
9
map.cpp
@ -1041,15 +1041,6 @@ void Mapa::readHeader( unsigned char * bufor, int &i)
|
|||||||
for (int zz=0; zz<lenbuf; zz++)
|
for (int zz=0; zz<lenbuf; zz++)
|
||||||
disposedHeroes[g].name+=bufor[i++];
|
disposedHeroes[g].name+=bufor[i++];
|
||||||
disposedHeroes[g].players = bufor[i++];
|
disposedHeroes[g].players = bufor[i++];
|
||||||
//int players = bufor[i++];
|
|
||||||
//for(int zz=0;zz<8;zz++)
|
|
||||||
//{
|
|
||||||
// int por = (1<<zz);
|
|
||||||
// if(players & por)
|
|
||||||
// disposedHeroes[g].players[zz] = true;
|
|
||||||
// else
|
|
||||||
// disposedHeroes[g].players[zz] = false;
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,17 +114,7 @@ void giveExp(BattleResult &r)
|
|||||||
r.exp[r.winner] += VLC->creh->creatures[i->first].hitPoints * i->second;
|
r.exp[r.winner] += VLC->creh->creatures[i->first].hitPoints * i->second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//bool CGameState::checkFunc(int obid, std::string name)
|
|
||||||
//{
|
|
||||||
// if (objscr.find(obid)!=objscr.end())
|
|
||||||
// {
|
|
||||||
// if(objscr[obid].find(name)!=objscr[obid].end())
|
|
||||||
// {
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return false;
|
|
||||||
//}
|
|
||||||
PlayerStatus PlayerStatuses::operator[](ui8 player)
|
PlayerStatus PlayerStatuses::operator[](ui8 player)
|
||||||
{
|
{
|
||||||
boost::unique_lock<boost::mutex> l(mx);
|
boost::unique_lock<boost::mutex> l(mx);
|
||||||
@ -205,15 +195,7 @@ void PlayerStatuses::removeQuery(ui8 player, ui32 id)
|
|||||||
}
|
}
|
||||||
cv.notify_all();
|
cv.notify_all();
|
||||||
}
|
}
|
||||||
//void CGameHandler::handleCPPObjS(std::map<int,CCPPObjectScript*> * mapa, CCPPObjectScript * script)
|
|
||||||
//{
|
|
||||||
// std::vector<int> tempv = script->yourObjects();
|
|
||||||
// for (unsigned i=0;i<tempv.size();i++)
|
|
||||||
// {
|
|
||||||
// (*mapa)[tempv[i]]=script;
|
|
||||||
// }
|
|
||||||
// cppscripts.insert(script);
|
|
||||||
//}
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void callWith(std::vector<T> args, boost::function<void(T)> fun, ui32 which)
|
void callWith(std::vector<T> args, boost::function<void(T)> fun, ui32 which)
|
||||||
{
|
{
|
||||||
@ -387,6 +369,7 @@ void CGameHandler::startBattle(CCreatureSet army1, CCreatureSet army2, int3 tile
|
|||||||
|
|
||||||
askInterfaceForMove:
|
askInterfaceForMove:
|
||||||
//ask interface and wait for answer
|
//ask interface and wait for answer
|
||||||
|
if(!battleResult.get())
|
||||||
{
|
{
|
||||||
BattleSetActiveStack sas;
|
BattleSetActiveStack sas;
|
||||||
sas.stack = next->ID;
|
sas.stack = next->ID;
|
||||||
@ -396,6 +379,11 @@ askInterfaceForMove:
|
|||||||
battleMadeAction.cond.wait(lock);
|
battleMadeAction.cond.wait(lock);
|
||||||
battleMadeAction.data = false;
|
battleMadeAction.data = false;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//we're after action, all results applied
|
//we're after action, all results applied
|
||||||
checkForBattleEnd(stacks); //check if this action ended the battle
|
checkForBattleEnd(stacks); //check if this action ended the battle
|
||||||
|
|
||||||
@ -571,6 +559,7 @@ void CGameHandler::moveStack(int stack, int dest)
|
|||||||
sm.stack = curStack->ID;
|
sm.stack = curStack->ID;
|
||||||
sm.tile = path.first[0];
|
sm.tile = path.first[0];
|
||||||
sm.distance = path.second;
|
sm.distance = path.second;
|
||||||
|
sm.ending = true;
|
||||||
sendAndApply(&sm);
|
sendAndApply(&sm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -584,6 +573,7 @@ void CGameHandler::moveStack(int stack, int dest)
|
|||||||
sm.stack = curStack->ID;
|
sm.stack = curStack->ID;
|
||||||
sm.tile = path.first[v];
|
sm.tile = path.first[v];
|
||||||
sm.distance = path.second;
|
sm.distance = path.second;
|
||||||
|
sm.ending = v==tilesToMove;
|
||||||
sendAndApply(&sm);
|
sendAndApply(&sm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -610,32 +600,6 @@ void CGameHandler::init(StartInfo *si, int Seed)
|
|||||||
gs->init(si,map,Seed);
|
gs->init(si,map,Seed);
|
||||||
tlog0 << "Gamestate initialized!" << std::endl;
|
tlog0 << "Gamestate initialized!" << std::endl;
|
||||||
|
|
||||||
/****************************LUA OBJECT SCRIPTS************************************************/
|
|
||||||
//std::vector<std::string> * lf = CLuaHandler::searchForScripts("scripts/lua/objects"); //files
|
|
||||||
//for (int i=0; i<lf->size(); i++)
|
|
||||||
//{
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// std::vector<std::string> * temp = CLuaHandler::functionList((*lf)[i]);
|
|
||||||
// CLuaObjectScript * objs = new CLuaObjectScript((*lf)[i]);
|
|
||||||
// CLuaCallback::registerFuncs(objs->is);
|
|
||||||
// //objs
|
|
||||||
// for (int j=0; j<temp->size(); j++)
|
|
||||||
// {
|
|
||||||
// int obid ; //obj ID
|
|
||||||
// int dspos = (*temp)[j].find_first_of('_');
|
|
||||||
// obid = atoi((*temp)[j].substr(dspos+1,(*temp)[j].size()-dspos-1).c_str());
|
|
||||||
// std::string fname = (*temp)[j].substr(0,dspos);
|
|
||||||
// if (skrypty->find(obid)==skrypty->end())
|
|
||||||
// skrypty->insert(std::pair<int, std::map<std::string, CObjectScript*> >(obid,std::map<std::string,CObjectScript*>()));
|
|
||||||
// (*skrypty)[obid].insert(std::pair<std::string, CObjectScript*>(fname,objs));
|
|
||||||
// }
|
|
||||||
// delete temp;
|
|
||||||
// }HANDLE_EXCEPTION
|
|
||||||
//}
|
|
||||||
|
|
||||||
//delete lf;
|
|
||||||
|
|
||||||
for(std::map<ui8,PlayerState>::iterator i = gs->players.begin(); i != gs->players.end(); i++)
|
for(std::map<ui8,PlayerState>::iterator i = gs->players.begin(); i != gs->players.end(); i++)
|
||||||
states.addPlayer(i->first);
|
states.addPlayer(i->first);
|
||||||
}
|
}
|
||||||
@ -768,42 +732,6 @@ void CGameHandler::run(bool resume)
|
|||||||
boost::thread(boost::bind(&CGameHandler::handleConnection,this,pom,boost::ref(**i)));
|
boost::thread(boost::bind(&CGameHandler::handleConnection,this,pom,boost::ref(**i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************SCRIPTS************************************************/
|
|
||||||
//std::map<int, std::map<std::string, CObjectScript*> > * skrypty = &objscr; //alias for easier access
|
|
||||||
/****************************C++ OBJECT SCRIPTS************************************************/
|
|
||||||
//std::map<int,CCPPObjectScript*> scripts;
|
|
||||||
//CScriptCallback * csc = new CScriptCallback();
|
|
||||||
//csc->gh = this;
|
|
||||||
//handleCPPObjS(&scripts,new CVisitableOPH(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CVisitableOPW(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CPickable(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CMines(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CTownScript(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CHeroScript(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CMonsterS(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CCreatureGen(csc));
|
|
||||||
//handleCPPObjS(&scripts,new CTeleports(csc));
|
|
||||||
|
|
||||||
/****************************INITIALIZING OBJECT SCRIPTS************************************************/
|
|
||||||
//std::string temps("newObject");
|
|
||||||
//for (unsigned i=0; i<gs->map->objects.size(); i++)
|
|
||||||
//{
|
|
||||||
//c++ scripts
|
|
||||||
//if (scripts.find(gs->map->objects[i]->ID) != scripts.end())
|
|
||||||
//{
|
|
||||||
// gs->map->objects[i]->state = scripts[gs->map->objects[i]->ID];
|
|
||||||
// gs->map->objects[i]->state->newObject(gs->map->objects[i]->id);
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// gs->map->objects[i]->state = NULL;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//// lua scripts
|
|
||||||
//if(checkFunc(map->objects[i]->ID,temps))
|
|
||||||
// (*skrypty)[map->objects[i]->ID][temps]->newObject(map->objects[i]);
|
|
||||||
//}
|
|
||||||
|
|
||||||
while (!end2)
|
while (!end2)
|
||||||
{
|
{
|
||||||
if(!resume)
|
if(!resume)
|
||||||
@ -1450,6 +1378,7 @@ void CGameHandler::ask( Query * sel, ui8 player, const CFunctionList<void(ui32)>
|
|||||||
|
|
||||||
void CGameHandler::sendToAllClients( CPackForClient * info )
|
void CGameHandler::sendToAllClients( CPackForClient * info )
|
||||||
{
|
{
|
||||||
|
tlog5 << "Sending to all clients a package of type " << typeid(*info).name() << std::endl;
|
||||||
for(std::set<CConnection*>::iterator i=conns.begin(); i!=conns.end();i++)
|
for(std::set<CConnection*>::iterator i=conns.begin(); i!=conns.end();i++)
|
||||||
{
|
{
|
||||||
(*i)->wmx->lock();
|
(*i)->wmx->lock();
|
||||||
|
Reference in New Issue
Block a user