mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-26 03:52:01 +02:00
* fixed bug in campaigns
* turned off artifacts.json creation * minor changes
This commit is contained in:
parent
2001aeac92
commit
657ed41088
15
Global.h
15
Global.h
@ -371,7 +371,6 @@ namespace vstd
|
|||||||
vec.erase(boost::remove_if(vec, pred),vec.end());
|
vec.erase(boost::remove_if(vec, pred),vec.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
//set has its own order, so remove_if won't work. TODO - reuse for map
|
|
||||||
template<typename Elem, typename Predicate>
|
template<typename Elem, typename Predicate>
|
||||||
void erase_if(std::set<Elem> &setContainer, Predicate pred)
|
void erase_if(std::set<Elem> &setContainer, Predicate pred)
|
||||||
{
|
{
|
||||||
@ -385,6 +384,20 @@ namespace vstd
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//works for map and bmap, maybe something else
|
||||||
|
template<typename Key, typename Val, typename Predicate>
|
||||||
|
void erase_if(std::map<Key, Val> &container, Predicate pred)
|
||||||
|
{
|
||||||
|
auto itr = container.begin();
|
||||||
|
auto endItr = container.end();
|
||||||
|
while(itr != endItr)
|
||||||
|
{
|
||||||
|
auto tmpItr = itr++;
|
||||||
|
if(pred(*tmpItr))
|
||||||
|
container.erase(tmpItr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template<typename InputRange, typename OutputIterator, typename Predicate>
|
template<typename InputRange, typename OutputIterator, typename Predicate>
|
||||||
OutputIterator copy_if(const InputRange &input, OutputIterator result, Predicate pred)
|
OutputIterator copy_if(const InputRange &input, OutputIterator result, Predicate pred)
|
||||||
{
|
{
|
||||||
|
@ -274,7 +274,7 @@ void CClient::loadGame( const std::string & fname )
|
|||||||
{
|
{
|
||||||
*serv << ui8(it->first); //players
|
*serv << ui8(it->first); //players
|
||||||
}
|
}
|
||||||
*serv << ui8(255); // neutrals
|
*serv << ui8(GameConstants::NEUTRAL_PLAYER);
|
||||||
tlog0 <<"Sent info to server: "<<tmh.getDiff()<<std::endl;
|
tlog0 <<"Sent info to server: "<<tmh.getDiff()<<std::endl;
|
||||||
|
|
||||||
serv->enableStackSendingByID();
|
serv->enableStackSendingByID();
|
||||||
@ -312,7 +312,7 @@ void CClient::newGame( CConnection *con, StartInfo *si )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(networkMode != GUEST)
|
if(networkMode != GUEST)
|
||||||
myPlayers.insert(255); //neutral
|
myPlayers.insert(GameConstants::NEUTRAL_PLAYER);
|
||||||
|
|
||||||
CStopWatch tmh;
|
CStopWatch tmh;
|
||||||
const_cast<CGameInfo*>(CGI)->state = new CGameState();
|
const_cast<CGameInfo*>(CGI)->state = new CGameState();
|
||||||
@ -466,7 +466,7 @@ void CClient::serialize( Handler &h, const int version )
|
|||||||
CGameInterface *nInt = NULL;
|
CGameInterface *nInt = NULL;
|
||||||
if(dllname.length())
|
if(dllname.length())
|
||||||
{
|
{
|
||||||
if(pid == 255)
|
if(pid == GameConstants::NEUTRAL_PLAYER)
|
||||||
{
|
{
|
||||||
//CBattleCallback * cbc = new CBattleCallback(gs, pid, this);//FIXME: unused?
|
//CBattleCallback * cbc = new CBattleCallback(gs, pid, this);//FIXME: unused?
|
||||||
CBattleGameInterface *cbgi = CDynLibHandler::getNewBattleAI(dllname);
|
CBattleGameInterface *cbgi = CDynLibHandler::getNewBattleAI(dllname);
|
||||||
@ -617,10 +617,10 @@ void CClient::battleFinished()
|
|||||||
|
|
||||||
void CClient::loadNeutralBattleAI()
|
void CClient::loadNeutralBattleAI()
|
||||||
{
|
{
|
||||||
battleints[255] = CDynLibHandler::getNewBattleAI(settings["server"]["neutralAI"].String());
|
battleints[GameConstants::NEUTRAL_PLAYER] = CDynLibHandler::getNewBattleAI(settings["server"]["neutralAI"].String());
|
||||||
auto cbc = make_shared<CBattleCallback>(gs, 255, this);
|
auto cbc = make_shared<CBattleCallback>(gs, GameConstants::NEUTRAL_PLAYER, this);
|
||||||
battleCallbacks[255] = cbc;
|
battleCallbacks[GameConstants::NEUTRAL_PLAYER] = cbc;
|
||||||
battleints[255]->init(cbc.get());
|
battleints[GameConstants::NEUTRAL_PLAYER]->init(cbc.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CClient::commitPackage( CPackForClient *pack )
|
void CClient::commitPackage( CPackForClient *pack )
|
||||||
|
@ -910,22 +910,22 @@ void CArtHandler::addBonuses()
|
|||||||
ART_PRIM_SKILL (154, 0, +6); //Hardened Shield
|
ART_PRIM_SKILL (154, 0, +6); //Hardened Shield
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonNode cfg;
|
// JsonNode cfg;
|
||||||
BOOST_FOREACH(auto art, artifacts)
|
// BOOST_FOREACH(auto art, artifacts)
|
||||||
{
|
// {
|
||||||
JsonNode jn;
|
// JsonNode jn;
|
||||||
jn["id"].Float() = art->id;
|
// jn["id"].Float() = art->id;
|
||||||
BOOST_FOREACH (auto b, art->getBonusList())
|
// BOOST_FOREACH (auto b, art->getBonusList())
|
||||||
{
|
// {
|
||||||
JsonNode bn;
|
// JsonNode bn;
|
||||||
UnparseBonus(bn, b);
|
// UnparseBonus(bn, b);
|
||||||
jn["bonuses"].Vector().push_back(bn);
|
// jn["bonuses"].Vector().push_back(bn);
|
||||||
}
|
// }
|
||||||
cfg.Vector().push_back(jn);
|
// cfg.Vector().push_back(jn);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
std::ofstream artconfigOutput("config/artifacts.json");
|
// std::ofstream artconfigOutput("config/artifacts.json");
|
||||||
JsonWriter(artconfigOutput, cfg);
|
// JsonWriter(artconfigOutput, cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CArtHandler::clear()
|
void CArtHandler::clear()
|
||||||
|
@ -390,14 +390,10 @@ void CCampaignScenario::prepareCrossoverHeroes( std::vector<CGHeroInstance *> he
|
|||||||
//trimming creatures
|
//trimming creatures
|
||||||
BOOST_FOREACH(CGHeroInstance * cgh, crossoverHeroes)
|
BOOST_FOREACH(CGHeroInstance * cgh, crossoverHeroes)
|
||||||
{
|
{
|
||||||
for (TSlots::const_iterator j = cgh->Slots().begin(); j != cgh->Slots().end(); j++)
|
vstd::erase_if(cgh->stacks, [&](const std::pair<TSlot, CStackInstance *> & j)
|
||||||
{
|
{
|
||||||
if (!(travelOptions.monstersKeptByHero[j->first / 8] & (1 << (j->first%8)) ))
|
return !(travelOptions.monstersKeptByHero[j.first / 8] & (1 << (j.first%8)) );
|
||||||
{
|
});
|
||||||
cgh->eraseStack(j->first);
|
|
||||||
j = cgh->Slots().begin();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1535,7 +1535,7 @@ void CGDwelling::initObj()
|
|||||||
hoverName = VLC->generaltexth->creGens[subID];
|
hoverName = VLC->generaltexth->creGens[subID];
|
||||||
if(crs->level > 4)
|
if(crs->level > 4)
|
||||||
putStack(0, new CStackInstance(crs, (crs->growth) * 3));
|
putStack(0, new CStackInstance(crs, (crs->growth) * 3));
|
||||||
if (getOwner() != 255)
|
if (getOwner() != GameConstants::NEUTRAL_PLAYER)
|
||||||
cb->gameState()->players[getOwner()].dwellings.push_back (this);
|
cb->gameState()->players[getOwner()].dwellings.push_back (this);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2167,7 +2167,7 @@ ui8 CGTownInstance::getPassableness() const
|
|||||||
{
|
{
|
||||||
if (!armedGarrison())//empty castle - anyone can visit
|
if (!armedGarrison())//empty castle - anyone can visit
|
||||||
return GameConstants::ALL_PLAYERS;
|
return GameConstants::ALL_PLAYERS;
|
||||||
if ( tempOwner == 255 )//neutral guarded - no one can visit
|
if ( tempOwner == GameConstants::NEUTRAL_PLAYER )//neutral guarded - no one can visit
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ui8 mask = 0;
|
ui8 mask = 0;
|
||||||
@ -5623,7 +5623,7 @@ ui8 CGGarrison::getPassableness() const
|
|||||||
{
|
{
|
||||||
if ( !stacksCount() )//empty - anyone can visit
|
if ( !stacksCount() )//empty - anyone can visit
|
||||||
return GameConstants::ALL_PLAYERS;
|
return GameConstants::ALL_PLAYERS;
|
||||||
if ( tempOwner == 255 )//neutral guarded - no one can visit
|
if ( tempOwner == GameConstants::NEUTRAL_PLAYER )//neutral guarded - no one can visit
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ui8 mask = 0;
|
ui8 mask = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user