From 2b45e13c5cf7b3e3fbbd367309b49103dd8c75bb Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Wed, 26 Jun 2013 11:18:27 +0000 Subject: [PATCH] c++03 -> c++11 switch: - use std versions of function, bind and ref - OVERRIDE -> override - NULL -> nullptr - use std versions of random distributions NOTE: this may be last revision that supports gcc-4.5 --- AI/BattleAI/BattleAI.cpp | 6 +- AI/BattleAI/BattleAI.h | 42 +-- AI/StupidAI/StupidAI.cpp | 4 +- AI/StupidAI/StupidAI.h | 44 +-- AI/VCAI/StdInc.h | 11 - AI/VCAI/VCAI.cpp | 41 +-- AI/VCAI/VCAI.h | 136 ++++----- CCallback.cpp | 2 +- CCallback.h | 14 +- Global.h | 80 +++--- client/AdventureMapClasses.cpp | 12 +- client/CAdvmapInterface.cpp | 82 +++--- client/CAdvmapInterface.h | 4 +- client/CAnimation.cpp | 36 +-- client/CAnimation.h | 10 +- client/CBitmapHandler.cpp | 4 +- client/CCastleInterface.cpp | 60 ++-- client/CCastleInterface.h | 2 +- client/CCreatureWindow.cpp | 76 ++--- client/CCreatureWindow.h | 18 +- client/CDefHandler.cpp | 4 +- client/CGameInfo.cpp | 2 +- client/CHeroWindow.cpp | 26 +- client/CHeroWindow.h | 2 +- client/CKingdomInterface.cpp | 50 ++-- client/CMT.cpp | 29 +- client/CMessage.cpp | 10 +- client/CMusicHandler.cpp | 18 +- client/CMusicHandler.h | 6 +- client/CPlayerInterface.cpp | 34 +-- client/CPlayerInterface.h | 144 +++++----- client/CPreGame.cpp | 132 ++++----- client/CPreGame.h | 12 +- client/CQuestLog.cpp | 14 +- client/CQuestLog.h | 4 +- client/CSpellWindow.cpp | 32 +-- client/CSpellWindow.h | 10 +- client/CVideoHandler.cpp | 91 +++--- client/Client.cpp | 28 +- client/Client.h | 97 ++++--- client/GUIClasses.cpp | 325 +++++++++++----------- client/GUIClasses.h | 54 ++-- client/Graphics.cpp | 20 +- client/Graphics.h | 2 +- client/NetPacksClient.cpp | 6 +- client/battle/CBattleAnimations.cpp | 14 +- client/battle/CBattleInterface.cpp | 124 ++++----- client/battle/CBattleInterface.h | 8 +- client/battle/CBattleInterfaceClasses.cpp | 28 +- client/battle/CCreatureAnimation.cpp | 2 +- client/battle/CCreatureAnimation.h | 6 +- client/gui/CCursorHandler.cpp | 2 +- client/gui/CCursorHandler.h | 2 +- client/gui/CGuiHandler.cpp | 12 +- client/gui/CGuiHandler.h | 2 +- client/gui/CIntObject.cpp | 2 +- client/gui/CIntObjectClasses.cpp | 56 ++-- client/gui/CIntObjectClasses.h | 24 +- client/gui/Fonts.cpp | 6 +- client/gui/SDL_Extensions.cpp | 16 +- client/mapHandler.cpp | 16 +- lib/BattleState.cpp | 25 +- lib/BattleState.h | 18 +- lib/CArtHandler.cpp | 17 +- lib/CArtHandler.h | 8 +- lib/CBattleCallback.cpp | 26 +- lib/CBattleCallback.h | 14 +- lib/CConfigHandler.cpp | 4 +- lib/CConfigHandler.h | 4 +- lib/CConsoleHandler.cpp | 14 +- lib/CConsoleHandler.h | 2 +- lib/CCreatureHandler.cpp | 2 +- lib/CCreatureHandler.h | 2 +- lib/CCreatureSet.cpp | 22 +- lib/CCreatureSet.h | 16 +- lib/CGameInterface.h | 2 +- lib/CGameState.cpp | 59 ++-- lib/CGameState.h | 10 +- lib/CModHandler.cpp | 8 +- lib/CModHandler.h | 10 +- lib/CObjectHandler.cpp | 68 ++--- lib/CObjectHandler.h | 70 ++--- lib/CObstacleInstance.h | 8 +- lib/CRandomGenerator.h | 33 +-- lib/CSpellHandler.h | 2 +- lib/CThreadHelper.cpp | 4 +- lib/CThreadHelper.h | 14 +- lib/Connection.cpp | 6 +- lib/Connection.h | 26 +- lib/ConstTransitivePtr.h | 4 +- lib/HeroBonus.cpp | 32 +-- lib/HeroBonus.h | 32 +-- lib/IGameCallback.cpp | 52 ++-- lib/IGameCallback.h | 6 +- lib/IGameEventsReceiver.h | 2 +- lib/JsonNode.cpp | 2 +- lib/JsonNode.h | 2 +- lib/NetPacks.h | 6 +- lib/NetPacksLib.cpp | 34 +-- lib/StartInfo.h | 2 +- lib/UnlockGuard.h | 6 +- lib/VCMIDirs.cpp | 4 +- lib/VCMI_Lib.cpp | 2 +- lib/mapping/CMap.cpp | 4 +- lib/mapping/CMap.h | 6 +- server/CGameHandler.cpp | 96 ++++--- server/CGameHandler.h | 94 +++---- server/CQuery.h | 30 +- server/CVCMIServer.cpp | 22 +- server/CVCMIServer.h | 2 +- 110 files changed, 1523 insertions(+), 1567 deletions(-) diff --git a/AI/BattleAI/BattleAI.cpp b/AI/BattleAI/BattleAI.cpp index bb0e529e8..40d0b4e65 100644 --- a/AI/BattleAI/BattleAI.cpp +++ b/AI/BattleAI/BattleAI.cpp @@ -31,7 +31,7 @@ struct Priorities } priorities; -int distToNearestNeighbour(BattleHex hex, const ReachabilityInfo::TDistances& dists, BattleHex *chosenHex = NULL) +int distToNearestNeighbour(BattleHex hex, const ReachabilityInfo::TDistances& dists, BattleHex *chosenHex = nullptr) { int ret = 1000000; BOOST_FOREACH(BattleHex n, hex.neighbouringTiles()) @@ -145,7 +145,7 @@ BattleAction CBattleAI::activeStack( const CStack * stack ) { ThreatMap threatsToUs(stack); auto dists = cbc->battleGetDistances(stack); - const EnemyInfo &ei= *range::min_element(targets.unreachableEnemies, boost::bind(isCloser, _1, _2, boost::ref(dists))); + const EnemyInfo &ei= *range::min_element(targets.unreachableEnemies, std::bind(isCloser, _1, _2, std::ref(dists))); if(distToNearestNeighbour(ei.s->position, dists) < GameConstants::BFIELD_SIZE) { return goTowards(stack, ei.s->position); @@ -592,7 +592,7 @@ ThreatMap::ThreatMap(const CStack *Endangered) : endangered(Endangered) } } -const TBonusListPtr StackWithBonuses::getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= NULL*/, const std::string &cachingStr /*= ""*/) const +const TBonusListPtr StackWithBonuses::getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= nullptr*/, const std::string &cachingStr /*= ""*/) const { TBonusListPtr ret = make_shared(); const TBonusListPtr originalList = stack->getAllBonuses(selector, limit, root, cachingStr); diff --git a/AI/BattleAI/BattleAI.h b/AI/BattleAI/BattleAI.h index 939bf7e31..eb892f30d 100644 --- a/AI/BattleAI/BattleAI.h +++ b/AI/BattleAI/BattleAI.h @@ -13,7 +13,7 @@ public: const CStack *stack; mutable std::vector bonusesToAdd; - virtual const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = NULL, const std::string &cachingStr = "") const OVERRIDE; + virtual const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = nullptr, const std::string &cachingStr = "") const override; }; struct EnemyInfo @@ -120,27 +120,27 @@ public: CBattleAI(void); ~CBattleAI(void); - void init(shared_ptr CB) OVERRIDE; - void actionFinished(const BattleAction &action) OVERRIDE;//occurs AFTER every action taken by any stack or by the hero - void actionStarted(const BattleAction &action) OVERRIDE;//occurs BEFORE every action taken by any stack or by the hero - BattleAction activeStack(const CStack * stack) OVERRIDE; //called when it's turn of that stack + void init(shared_ptr CB) override; + void actionFinished(const BattleAction &action) override;//occurs AFTER every action taken by any stack or by the hero + void actionStarted(const BattleAction &action) override;//occurs BEFORE every action taken by any stack or by the hero + BattleAction activeStack(const CStack * stack) override; //called when it's turn of that stack - void battleAttack(const BattleAttack *ba) OVERRIDE; //called when stack is performing attack - void battleStacksAttacked(const std::vector & bsa) OVERRIDE; //called when stack receives damage (after battleAttack()) - void battleEnd(const BattleResult *br) OVERRIDE; - //void battleResultsApplied() OVERRIDE; //called when all effects of last battle are applied - void battleNewRoundFirst(int round) OVERRIDE; //called at the beginning of each turn before changes are applied; - void battleNewRound(int round) OVERRIDE; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn - void battleStackMoved(const CStack * stack, std::vector dest, int distance) OVERRIDE; - void battleSpellCast(const BattleSpellCast *sc) OVERRIDE; - void battleStacksEffectsSet(const SetStackEffect & sse) OVERRIDE;//called when a specific effect is set to stacks - //void battleTriggerEffect(const BattleTriggerEffect & bte) OVERRIDE; - void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) OVERRIDE; //called by engine when battle starts; side=0 - left, side=1 - right - void battleStacksHealedRes(const std::vector > & healedStacks, bool lifeDrain, bool tentHeal, si32 lifeDrainFrom) OVERRIDE; //called when stacks are healed / resurrected first element of pair - stack id, second - healed hp - void battleNewStackAppeared(const CStack * stack) OVERRIDE; //not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned - void battleObstaclesRemoved(const std::set & removedObstacles) OVERRIDE; //called when a certain set of obstacles is removed from batlefield; IDs of them are given - void battleCatapultAttacked(const CatapultAttack & ca) OVERRIDE; //called when catapult makes an attack - void battleStacksRemoved(const BattleStacksRemoved & bsr) OVERRIDE; //called when certain stack is completely removed from battlefield + void battleAttack(const BattleAttack *ba) override; //called when stack is performing attack + void battleStacksAttacked(const std::vector & bsa) override; //called when stack receives damage (after battleAttack()) + void battleEnd(const BattleResult *br) override; + //void battleResultsApplied() override; //called when all effects of last battle are applied + void battleNewRoundFirst(int round) override; //called at the beginning of each turn before changes are applied; + void battleNewRound(int round) override; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn + void battleStackMoved(const CStack * stack, std::vector dest, int distance) override; + void battleSpellCast(const BattleSpellCast *sc) override; + void battleStacksEffectsSet(const SetStackEffect & sse) override;//called when a specific effect is set to stacks + //void battleTriggerEffect(const BattleTriggerEffect & bte) override; + void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) override; //called by engine when battle starts; side=0 - left, side=1 - right + void battleStacksHealedRes(const std::vector > & healedStacks, bool lifeDrain, bool tentHeal, si32 lifeDrainFrom) override; //called when stacks are healed / resurrected first element of pair - stack id, second - healed hp + void battleNewStackAppeared(const CStack * stack) override; //not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned + void battleObstaclesRemoved(const std::set & removedObstacles) override; //called when a certain set of obstacles is removed from batlefield; IDs of them are given + void battleCatapultAttacked(const CatapultAttack & ca) override; //called when catapult makes an attack + void battleStacksRemoved(const BattleStacksRemoved & bsr) override; //called when certain stack is completely removed from battlefield BattleAction goTowards(const CStack * stack, BattleHex hex ); BattleAction useCatapult(const CStack * stack); diff --git a/AI/StupidAI/StupidAI.cpp b/AI/StupidAI/StupidAI.cpp index 322739975..993abd852 100644 --- a/AI/StupidAI/StupidAI.cpp +++ b/AI/StupidAI/StupidAI.cpp @@ -60,7 +60,7 @@ bool isMoreProfitable(const EnemyInfo &ei1, const EnemyInfo& ei2) return (ei1.adi-ei1.adr) < (ei2.adi - ei2.adr); } -int distToNearestNeighbour(BattleHex hex, const ReachabilityInfo::TDistances& dists, BattleHex *chosenHex = NULL) +int distToNearestNeighbour(BattleHex hex, const ReachabilityInfo::TDistances& dists, BattleHex *chosenHex = nullptr) { int ret = 1000000; BOOST_FOREACH(BattleHex n, hex.neighbouringTiles()) @@ -157,7 +157,7 @@ BattleAction CStupidAI::activeStack( const CStack * stack ) else if(enemiesUnreachable.size()) //due to #955 - a buggy battle may occur when there are no enemies { assert(enemiesUnreachable.size()); - const EnemyInfo &ei= *std::min_element(enemiesUnreachable.begin(), enemiesUnreachable.end(), boost::bind(isCloser, _1, _2, boost::ref(dists))); + const EnemyInfo &ei= *std::min_element(enemiesUnreachable.begin(), enemiesUnreachable.end(), std::bind(isCloser, _1, _2, std::ref(dists))); assert(ei.s); if(distToNearestNeighbour(ei.s->position, dists) < GameConstants::BFIELD_SIZE) { diff --git a/AI/StupidAI/StupidAI.h b/AI/StupidAI/StupidAI.h index a142851bc..cb850d9ac 100644 --- a/AI/StupidAI/StupidAI.h +++ b/AI/StupidAI/StupidAI.h @@ -12,32 +12,32 @@ public: CStupidAI(void); ~CStupidAI(void); - void init(shared_ptr CB) OVERRIDE; - void actionFinished(const BattleAction &action) OVERRIDE;//occurs AFTER every action taken by any stack or by the hero - void actionStarted(const BattleAction &action) OVERRIDE;//occurs BEFORE every action taken by any stack or by the hero - BattleAction activeStack(const CStack * stack) OVERRIDE; //called when it's turn of that stack + void init(shared_ptr CB) override; + void actionFinished(const BattleAction &action) override;//occurs AFTER every action taken by any stack or by the hero + void actionStarted(const BattleAction &action) override;//occurs BEFORE every action taken by any stack or by the hero + BattleAction activeStack(const CStack * stack) override; //called when it's turn of that stack - void battleAttack(const BattleAttack *ba) OVERRIDE; //called when stack is performing attack - void battleStacksAttacked(const std::vector & bsa) OVERRIDE; //called when stack receives damage (after battleAttack()) - void battleEnd(const BattleResult *br) OVERRIDE; - //void battleResultsApplied() OVERRIDE; //called when all effects of last battle are applied - void battleNewRoundFirst(int round) OVERRIDE; //called at the beginning of each turn before changes are applied; - void battleNewRound(int round) OVERRIDE; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn - void battleStackMoved(const CStack * stack, std::vector dest, int distance) OVERRIDE; - void battleSpellCast(const BattleSpellCast *sc) OVERRIDE; - void battleStacksEffectsSet(const SetStackEffect & sse) OVERRIDE;//called when a specific effect is set to stacks - //void battleTriggerEffect(const BattleTriggerEffect & bte) OVERRIDE; - void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) OVERRIDE; //called by engine when battle starts; side=0 - left, side=1 - right - void battleStacksHealedRes(const std::vector > & healedStacks, bool lifeDrain, bool tentHeal, si32 lifeDrainFrom) OVERRIDE; //called when stacks are healed / resurrected first element of pair - stack id, second - healed hp - void battleNewStackAppeared(const CStack * stack) OVERRIDE; //not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned - void battleObstaclesRemoved(const std::set & removedObstacles) OVERRIDE; //called when a certain set of obstacles is removed from batlefield; IDs of them are given - void battleCatapultAttacked(const CatapultAttack & ca) OVERRIDE; //called when catapult makes an attack - void battleStacksRemoved(const BattleStacksRemoved & bsr) OVERRIDE; //called when certain stack is completely removed from battlefield + void battleAttack(const BattleAttack *ba) override; //called when stack is performing attack + void battleStacksAttacked(const std::vector & bsa) override; //called when stack receives damage (after battleAttack()) + void battleEnd(const BattleResult *br) override; + //void battleResultsApplied() override; //called when all effects of last battle are applied + void battleNewRoundFirst(int round) override; //called at the beginning of each turn before changes are applied; + void battleNewRound(int round) override; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn + void battleStackMoved(const CStack * stack, std::vector dest, int distance) override; + void battleSpellCast(const BattleSpellCast *sc) override; + void battleStacksEffectsSet(const SetStackEffect & sse) override;//called when a specific effect is set to stacks + //void battleTriggerEffect(const BattleTriggerEffect & bte) override; + void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) override; //called by engine when battle starts; side=0 - left, side=1 - right + void battleStacksHealedRes(const std::vector > & healedStacks, bool lifeDrain, bool tentHeal, si32 lifeDrainFrom) override; //called when stacks are healed / resurrected first element of pair - stack id, second - healed hp + void battleNewStackAppeared(const CStack * stack) override; //not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned + void battleObstaclesRemoved(const std::set & removedObstacles) override; //called when a certain set of obstacles is removed from batlefield; IDs of them are given + void battleCatapultAttacked(const CatapultAttack & ca) override; //called when catapult makes an attack + void battleStacksRemoved(const BattleStacksRemoved & bsr) override; //called when certain stack is completely removed from battlefield BattleAction goTowards(const CStack * stack, BattleHex hex ); - virtual void saveGame(COSer &h, const int version) OVERRIDE; - virtual void loadGame(CISer &h, const int version) OVERRIDE; + virtual void saveGame(COSer &h, const int version) override; + virtual void loadGame(CISer &h, const int version) override; }; diff --git a/AI/VCAI/StdInc.h b/AI/VCAI/StdInc.h index eadc19fc2..6448c2288 100644 --- a/AI/VCAI/StdInc.h +++ b/AI/VCAI/StdInc.h @@ -1,15 +1,4 @@ #pragma once #include "../../Global.h" -#include -#include -#include -#include -#include - -#include -#include #include "Fuzzy.h" - -#include -#include diff --git a/AI/VCAI/VCAI.cpp b/AI/VCAI/VCAI.cpp index 617d02d84..48fd0dca0 100644 --- a/AI/VCAI/VCAI.cpp +++ b/AI/VCAI/VCAI.cpp @@ -140,8 +140,8 @@ void removeDuplicates(std::vector &vec) struct AtScopeExit { - boost::function foo; - AtScopeExit(const boost::function &FOO) : foo(FOO) + std::function foo; + AtScopeExit(const std::function &FOO) : foo(FOO) {} ~AtScopeExit() { @@ -149,7 +149,7 @@ struct AtScopeExit } }; -void foreach_tile_pos(boost::function foo) +void foreach_tile_pos(std::function foo) { for(int i = 0; i < cb->getMapSize().x; i++) for(int j = 0; j < cb->getMapSize().y; j++) @@ -157,7 +157,7 @@ void foreach_tile_pos(boost::function foo) foo(int3(i,j,k)); } -void foreach_neighbour(const int3 &pos, boost::function foo) +void foreach_neighbour(const int3 &pos, std::function foo) { BOOST_FOREACH(const int3 &dir, dirs) { @@ -177,7 +177,7 @@ const unsigned char &retreiveTileN(const std::vector< std::vector< std::vector > > &vectors, boost::function foo) +void foreach_tile(std::vector< std::vector< std::vector > > &vectors, std::function foo) { for(auto i = vectors.begin(); i != vectors.end(); i++) for(auto j = i->begin(); j != i->end(); j++) @@ -323,7 +323,10 @@ ui64 evaluateDanger(crint3 tile, const CGHeroInstance *visitor) auto visitableObjects = cb->getVisitableObjs(tile); // in some scenarios hero happens to be "under" the object (eg town). Then we consider ONLY the hero. if(vstd::contains_if(visitableObjects, objWithID)) - erase_if(visitableObjects, ! boost::bind(objWithID, _1)); + erase_if(visitableObjects, [](const CGObjectInstance * obj) + { + return !objWithID(obj); + }); if(const CGObjectInstance * dangerousObject = backOrNull(visitableObjects)) { @@ -532,7 +535,7 @@ void VCAI::gameOver(PlayerColor player, bool victory) // { // //play dirty: crash the whole engine to avoid lose // //that way AI is unbeatable! -// *(int*)NULL = 666; +// *(int*)nullptr = 666; // } // TODO - at least write some insults on stdout @@ -579,7 +582,7 @@ void VCAI::heroVisit(const CGHeroInstance *visitor, const CGObjectInstance *visi } } -void VCAI::availableArtifactsChanged(const CGBlackMarket *bm /*= NULL*/) +void VCAI::availableArtifactsChanged(const CGBlackMarket *bm /*= nullptr*/) { LOG_TRACE(logAi); NET_EVENT_HANDLER; @@ -1560,7 +1563,7 @@ void VCAI::battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int NET_EVENT_HANDLER; assert(playerID > PlayerColor::PLAYER_LIMIT || status.getBattle() == UPCOMING_BATTLE); status.setBattle(ONGOING_BATTLE); - const CGObjectInstance *presumedEnemy = backOrNull(cb->getVisitableObjs(tile)); //may be NULL in some very are cases -> eg. visited monolith and fighting with an enemy at the FoW covered exit + const CGObjectInstance *presumedEnemy = backOrNull(cb->getVisitableObjs(tile)); //may be nullptr in some very are cases -> eg. visited monolith and fighting with an enemy at the FoW covered exit battlename = boost::str(boost::format("Starting battle of %s attacking %s at %s") % (hero1 ? hero1->name : "a army") % (presumedEnemy ? presumedEnemy->hoverName : "unknown enemy") % tile); CAdventureAI::battleStart(army1, army2, tile, hero1, hero2, side); } @@ -1649,7 +1652,7 @@ const CGObjectInstance * VCAI::lookForArt(int aid) const return obj; } - return NULL; + return nullptr; //TODO what if more than one artifact is available? return them all or some slection criteria } @@ -1673,17 +1676,17 @@ HeroPtr VCAI::getHeroWithGrail() const if(h->hasArt(2)) //grail return h; - return NULL; + return nullptr; } -const CGObjectInstance * VCAI::getUnvisitedObj(const boost::function &predicate) +const CGObjectInstance * VCAI::getUnvisitedObj(const std::function &predicate) { //TODO smarter definition of unvisited BOOST_FOREACH(const CGObjectInstance *obj, visitableObjs) if(predicate(obj) && !vstd::contains(alreadyVisited, obj)) return obj; - return NULL; + return nullptr; } bool VCAI::isAccessibleForHero(const int3 & pos, HeroPtr h, bool includeAllies /*= false*/) const @@ -1986,7 +1989,7 @@ const CGTownInstance * VCAI::findTownWithTavern() const if(t->hasBuilt(BuildingID::TAVERN) && !t->visitingHero) return t; - return NULL; + return nullptr; } std::vector VCAI::getUnblockedHeroes() const @@ -2009,7 +2012,7 @@ HeroPtr VCAI::primaryHero() const boost::sort(hs, compareHeroStrength); if(hs.empty()) - return NULL; + return nullptr; return hs.back(); } @@ -2498,7 +2501,7 @@ void VCAI::finish() makingTurn->interrupt(); } -void VCAI::requestActionASAP(boost::function whatToDo) +void VCAI::requestActionASAP(std::function whatToDo) { // static boost::mutex m; // boost::unique_lock mylock(m); @@ -2834,7 +2837,7 @@ TSubgoal CGoal::whatToDoToAchieve() break; case FIND_OBJ: { - const CGObjectInstance * o = NULL; + const CGObjectInstance * o = nullptr; if (resID > -1) //specified { BOOST_FOREACH(const CGObjectInstance *obj, ai->visitableObjs) @@ -3071,7 +3074,7 @@ TSubgoal CGoal::whatToDoToAchieve() return CGoal(EXPLORE); if(hero && !ai->isAccessibleForHero(tile, hero)) - hero = NULL; + hero = nullptr; if(!hero) { @@ -3384,7 +3387,7 @@ TSubgoal CGoal::whatToDoToAchieve() else { boost::sort(objs, isCloser); - HeroPtr h = NULL; + HeroPtr h = nullptr; BOOST_FOREACH(const CGObjectInstance *obj, objs) { //find safe dwelling auto pos = obj->visitablePos(); diff --git a/AI/VCAI/VCAI.h b/AI/VCAI/VCAI.h index 5c2fc2fb0..319ea5dd2 100644 --- a/AI/VCAI/VCAI.h +++ b/AI/VCAI/VCAI.h @@ -154,12 +154,12 @@ struct CGoal aid = -1; resID = -1; tile = int3(-1, -1, -1); - town = NULL; + town = nullptr; } bool invalid() const; - static TSubgoal goVisitOrLookFor(const CGObjectInstance *obj); //if obj is NULL, then we'll explore + static TSubgoal goVisitOrLookFor(const CGObjectInstance *obj); //if obj is nullptr, then we'll explore static TSubgoal lookForArtSmart(int aid); //checks non-standard ways of obtaining art (merchants, quests, etc.) static TSubgoal tryRecruitHero(); @@ -229,9 +229,9 @@ struct SectorMap struct CIssueCommand : CGoal { - boost::function command; + std::function command; - CIssueCommand(boost::function _command): CGoal(ISSUE_COMMAND), command(_command) {} + CIssueCommand(std::function _command): CGoal(ISSUE_COMMAND), command(_command) {} }; @@ -304,69 +304,69 @@ public: int3 explorationNewPoint(int radius, HeroPtr h, std::vector > &tiles); void recruitHero(); - virtual std::string getBattleAIName() const OVERRIDE; + virtual std::string getBattleAIName() const override; - virtual void init(shared_ptr CB) OVERRIDE; - virtual void yourTurn() OVERRIDE; + virtual void init(shared_ptr CB) override; + virtual void yourTurn() override; - virtual void heroGotLevel(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, QueryID queryID) OVERRIDE; //pskill is gained primary skill, interface has to choose one of given skills and call callback with selection id - virtual void commanderGotLevel (const CCommanderInstance * commander, std::vector skills, QueryID queryID) OVERRIDE; //TODO - virtual void showBlockingDialog(const std::string &text, const std::vector &components, QueryID askID, const int soundID, bool selection, bool cancel) OVERRIDE; //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID. - virtual void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, bool removableUnits, QueryID queryID) OVERRIDE; //all stacks operations between these objects become allowed, interface has to call onEnd when done - virtual void saveGame(COSer &h, const int version) OVERRIDE; //saving - virtual void loadGame(CISer &h, const int version) OVERRIDE; //loading - virtual void finish() OVERRIDE; + virtual void heroGotLevel(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, QueryID queryID) override; //pskill is gained primary skill, interface has to choose one of given skills and call callback with selection id + virtual void commanderGotLevel (const CCommanderInstance * commander, std::vector skills, QueryID queryID) override; //TODO + virtual void showBlockingDialog(const std::string &text, const std::vector &components, QueryID askID, const int soundID, bool selection, bool cancel) override; //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID. + virtual void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, bool removableUnits, QueryID queryID) override; //all stacks operations between these objects become allowed, interface has to call onEnd when done + virtual void saveGame(COSer &h, const int version) override; //saving + virtual void loadGame(CISer &h, const int version) override; //loading + virtual void finish() override; - virtual void availableCreaturesChanged(const CGDwelling *town) OVERRIDE; - virtual void heroMoved(const TryMoveHero & details) OVERRIDE; - virtual void stackChagedCount(const StackLocation &location, const TQuantity &change, bool isAbsolute) OVERRIDE; - virtual void heroInGarrisonChange(const CGTownInstance *town) OVERRIDE; - virtual void centerView(int3 pos, int focusTime) OVERRIDE; - virtual void tileHidden(const boost::unordered_set &pos) OVERRIDE; - virtual void artifactMoved(const ArtifactLocation &src, const ArtifactLocation &dst) OVERRIDE; - virtual void artifactAssembled(const ArtifactLocation &al) OVERRIDE; - virtual void showTavernWindow(const CGObjectInstance *townOrTavern) OVERRIDE; - virtual void showThievesGuildWindow (const CGObjectInstance * obj) OVERRIDE; - virtual void playerBlocked(int reason) OVERRIDE; - virtual void showPuzzleMap() OVERRIDE; - virtual void showShipyardDialog(const IShipyard *obj) OVERRIDE; - virtual void gameOver(PlayerColor player, bool victory) OVERRIDE; - virtual void artifactPut(const ArtifactLocation &al) OVERRIDE; - virtual void artifactRemoved(const ArtifactLocation &al) OVERRIDE; - virtual void stacksErased(const StackLocation &location) OVERRIDE; - virtual void artifactDisassembled(const ArtifactLocation &al) OVERRIDE; - virtual void heroVisit(const CGHeroInstance *visitor, const CGObjectInstance *visitedObj, bool start) OVERRIDE; - virtual void availableArtifactsChanged(const CGBlackMarket *bm = NULL) OVERRIDE; - virtual void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town) OVERRIDE; - virtual void tileRevealed(const boost::unordered_set &pos) OVERRIDE; - virtual void heroExchangeStarted(ObjectInstanceID hero1, ObjectInstanceID hero2, QueryID query) OVERRIDE; - virtual void heroPrimarySkillChanged(const CGHeroInstance * hero, int which, si64 val) OVERRIDE; - virtual void showRecruitmentDialog(const CGDwelling *dwelling, const CArmedInstance *dst, int level) OVERRIDE; - virtual void heroMovePointsChanged(const CGHeroInstance * hero) OVERRIDE; - virtual void stackChangedType(const StackLocation &location, const CCreature &newType) OVERRIDE; - virtual void stacksRebalanced(const StackLocation &src, const StackLocation &dst, TQuantity count) OVERRIDE; - virtual void newObject(const CGObjectInstance * obj) OVERRIDE; - virtual void showHillFortWindow(const CGObjectInstance *object, const CGHeroInstance *visitor) OVERRIDE; - virtual void playerBonusChanged(const Bonus &bonus, bool gain) OVERRIDE; - virtual void newStackInserted(const StackLocation &location, const CStackInstance &stack) OVERRIDE; - virtual void heroCreated(const CGHeroInstance*) OVERRIDE; - virtual void advmapSpellCast(const CGHeroInstance * caster, int spellID) OVERRIDE; - virtual void showInfoDialog(const std::string &text, const std::vector &components, int soundID) OVERRIDE; - virtual void requestRealized(PackageApplied *pa) OVERRIDE; - virtual void receivedResource(int type, int val) OVERRIDE; - virtual void stacksSwapped(const StackLocation &loc1, const StackLocation &loc2) OVERRIDE; - virtual void objectRemoved(const CGObjectInstance *obj) OVERRIDE; - virtual void showUniversityWindow(const IMarket *market, const CGHeroInstance *visitor) OVERRIDE; - virtual void heroManaPointsChanged(const CGHeroInstance * hero) OVERRIDE; - virtual void heroSecondarySkillChanged(const CGHeroInstance * hero, int which, int val) OVERRIDE; - virtual void battleResultsApplied() OVERRIDE; - virtual void objectPropertyChanged(const SetObjectProperty * sop) OVERRIDE; - virtual void buildChanged(const CGTownInstance *town, BuildingID buildingID, int what) OVERRIDE; - virtual void heroBonusChanged(const CGHeroInstance *hero, const Bonus &bonus, bool gain) OVERRIDE; - virtual void showMarketWindow(const IMarket *market, const CGHeroInstance *visitor) OVERRIDE; + virtual void availableCreaturesChanged(const CGDwelling *town) override; + virtual void heroMoved(const TryMoveHero & details) override; + virtual void stackChagedCount(const StackLocation &location, const TQuantity &change, bool isAbsolute) override; + virtual void heroInGarrisonChange(const CGTownInstance *town) override; + virtual void centerView(int3 pos, int focusTime) override; + virtual void tileHidden(const boost::unordered_set &pos) override; + virtual void artifactMoved(const ArtifactLocation &src, const ArtifactLocation &dst) override; + virtual void artifactAssembled(const ArtifactLocation &al) override; + virtual void showTavernWindow(const CGObjectInstance *townOrTavern) override; + virtual void showThievesGuildWindow (const CGObjectInstance * obj) override; + virtual void playerBlocked(int reason) override; + virtual void showPuzzleMap() override; + virtual void showShipyardDialog(const IShipyard *obj) override; + virtual void gameOver(PlayerColor player, bool victory) override; + virtual void artifactPut(const ArtifactLocation &al) override; + virtual void artifactRemoved(const ArtifactLocation &al) override; + virtual void stacksErased(const StackLocation &location) override; + virtual void artifactDisassembled(const ArtifactLocation &al) override; + virtual void heroVisit(const CGHeroInstance *visitor, const CGObjectInstance *visitedObj, bool start) override; + virtual void availableArtifactsChanged(const CGBlackMarket *bm = nullptr) override; + virtual void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town) override; + virtual void tileRevealed(const boost::unordered_set &pos) override; + virtual void heroExchangeStarted(ObjectInstanceID hero1, ObjectInstanceID hero2, QueryID query) override; + virtual void heroPrimarySkillChanged(const CGHeroInstance * hero, int which, si64 val) override; + virtual void showRecruitmentDialog(const CGDwelling *dwelling, const CArmedInstance *dst, int level) override; + virtual void heroMovePointsChanged(const CGHeroInstance * hero) override; + virtual void stackChangedType(const StackLocation &location, const CCreature &newType) override; + virtual void stacksRebalanced(const StackLocation &src, const StackLocation &dst, TQuantity count) override; + virtual void newObject(const CGObjectInstance * obj) override; + virtual void showHillFortWindow(const CGObjectInstance *object, const CGHeroInstance *visitor) override; + virtual void playerBonusChanged(const Bonus &bonus, bool gain) override; + virtual void newStackInserted(const StackLocation &location, const CStackInstance &stack) override; + virtual void heroCreated(const CGHeroInstance*) override; + virtual void advmapSpellCast(const CGHeroInstance * caster, int spellID) override; + virtual void showInfoDialog(const std::string &text, const std::vector &components, int soundID) override; + virtual void requestRealized(PackageApplied *pa) override; + virtual void receivedResource(int type, int val) override; + virtual void stacksSwapped(const StackLocation &loc1, const StackLocation &loc2) override; + virtual void objectRemoved(const CGObjectInstance *obj) override; + virtual void showUniversityWindow(const IMarket *market, const CGHeroInstance *visitor) override; + virtual void heroManaPointsChanged(const CGHeroInstance * hero) override; + virtual void heroSecondarySkillChanged(const CGHeroInstance * hero, int which, int val) override; + virtual void battleResultsApplied() override; + virtual void objectPropertyChanged(const SetObjectProperty * sop) override; + virtual void buildChanged(const CGTownInstance *town, BuildingID buildingID, int what) override; + virtual void heroBonusChanged(const CGHeroInstance *hero, const Bonus &bonus, bool gain) override; + virtual void showMarketWindow(const IMarket *market, const CGHeroInstance *visitor) override; - virtual void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) OVERRIDE; - virtual void battleEnd(const BattleResult *br) OVERRIDE; + virtual void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) override; + virtual void battleEnd(const BattleResult *br) override; void makeTurn(); void makeTurnInternal(); @@ -413,7 +413,7 @@ public: bool isAccessible(const int3 &pos); HeroPtr getHeroWithGrail() const; - const CGObjectInstance *getUnvisitedObj(const boost::function &predicate); + const CGObjectInstance *getUnvisitedObj(const std::function &predicate); bool isAccessibleForHero(const int3 & pos, HeroPtr h, bool includeAllies = false) const; const CGTownInstance *findTownWithTavern() const; @@ -424,10 +424,10 @@ public: bool containsSavedRes(const TResources &cost) const; void checkHeroArmy (HeroPtr h); - void requestSent(const CPackForServer *pack, int requestID) OVERRIDE; + void requestSent(const CPackForServer *pack, int requestID) override; void answerQuery(QueryID queryID, int selection); //special function that can be called ONLY from game events handling thread and will send request ASAP - void requestActionASAP(boost::function whatToDo); + void requestActionASAP(std::function whatToDo); template void serializeInternal(Handler &h, const int version) @@ -453,7 +453,7 @@ public: { }; - const char *what() const throw () OVERRIDE + const char *what() const throw () override { return msg.c_str(); } @@ -471,7 +471,7 @@ public: { }; - const char *what() const throw () OVERRIDE + const char *what() const throw () override { return goal.name().c_str(); } diff --git a/CCallback.cpp b/CCallback.cpp index 34ac1aada..c95f01e88 100644 --- a/CCallback.cpp +++ b/CCallback.cpp @@ -216,7 +216,7 @@ void CCallback::buyArtifact(const CGHeroInstance *hero, ArtifactID aid) sendRequest(&pack); } -void CCallback::trade(const CGObjectInstance *market, EMarketMode::EMarketMode mode, int id1, int id2, int val1, const CGHeroInstance *hero/* = NULL*/) +void CCallback::trade(const CGObjectInstance *market, EMarketMode::EMarketMode mode, int id1, int id2, int val1, const CGHeroInstance *hero/* = nullptr*/) { TradeOnMarketplace pack; pack.market = market; diff --git a/CCallback.h b/CCallback.h index ce88dda3d..1614beb60 100644 --- a/CCallback.h +++ b/CCallback.h @@ -56,7 +56,7 @@ public: virtual bool upgradeCreature(const CArmedInstance *obj, SlotID stackPos, CreatureID newID=CreatureID::NONE)=0; //if newID==-1 then best possible upgrade will be made virtual void swapGarrisonHero(const CGTownInstance *town)=0; - virtual void trade(const CGObjectInstance *market, EMarketMode::EMarketMode mode, int id1, int id2, int val1, const CGHeroInstance *hero = NULL)=0; //mode==0: sell val1 units of id1 resource for id2 resiurce + virtual void trade(const CGObjectInstance *market, EMarketMode::EMarketMode mode, int id1, int id2, int val1, const CGHeroInstance *hero = nullptr)=0; //mode==0: sell val1 units of id1 resource for id2 resiurce virtual int selectionMade(int selection, QueryID queryID) =0; virtual int swapCreatures(const CArmedInstance *s1, const CArmedInstance *s2, SlotID p1, SlotID p2)=0;//swaps creatures between two possibly different garrisons // TODO: AI-unsafe code - fix it! @@ -89,8 +89,8 @@ protected: public: CBattleCallback(CGameState *GS, boost::optional Player, CClient *C); - int battleMakeAction(BattleAction* action) OVERRIDE;//for casting spells by hero - DO NOT use it for moving active stack - bool battleMakeTacticAction(BattleAction * action) OVERRIDE; // performs tactic phase actions + int battleMakeAction(BattleAction* action) override;//for casting spells by hero - DO NOT use it for moving active stack + bool battleMakeTacticAction(BattleAction * action) override; // performs tactic phase actions friend class CCallback; friend class CClient; @@ -135,14 +135,14 @@ public: //bool moveArtifact(const CGHeroInstance * hero, ui16 src, const CStackInstance * stack, ui16 dest); // TODO: unify classes //bool moveArtifact(const CStackInstance * stack, ui16 src , const CGHeroInstance * hero, ui16 dest); // TODO: unify classes bool assembleArtifacts(const CGHeroInstance * hero, ArtifactPosition artifactSlot, bool assemble, ArtifactID assembleTo); - bool buildBuilding(const CGTownInstance *town, BuildingID buildingID) OVERRIDE; + bool buildBuilding(const CGTownInstance *town, BuildingID buildingID) override; void recruitCreatures(const CGObjectInstance *obj, CreatureID ID, ui32 amount, si32 level=-1); bool dismissCreature(const CArmedInstance *obj, SlotID stackPos); - bool upgradeCreature(const CArmedInstance *obj, SlotID stackPos, CreatureID newID=CreatureID::NONE) OVERRIDE; + bool upgradeCreature(const CArmedInstance *obj, SlotID stackPos, CreatureID newID=CreatureID::NONE) override; void endTurn(); void swapGarrisonHero(const CGTownInstance *town); - void buyArtifact(const CGHeroInstance *hero, ArtifactID aid) OVERRIDE; - void trade(const CGObjectInstance *market, EMarketMode::EMarketMode mode, int id1, int id2, int val1, const CGHeroInstance *hero = NULL); + void buyArtifact(const CGHeroInstance *hero, ArtifactID aid) override; + void trade(const CGObjectInstance *market, EMarketMode::EMarketMode mode, int id1, int id2, int val1, const CGHeroInstance *hero = nullptr); void setFormation(const CGHeroInstance * hero, bool tight); void setSelection(const CArmedInstance * obj); void recruitHero(const CGObjectInstance *townOrTavern, const CGHeroInstance *hero); diff --git a/Global.h b/Global.h index 196c00b42..89fd08f17 100644 --- a/Global.h +++ b/Global.h @@ -35,23 +35,20 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size."); //defining available c++11 features //initialization lists - only gcc-4.4 or later -#if defined(__clang__) || (defined(__GNUC__) && (GCC_VERSION >= 440)) +#if defined(__clang__) || defined(__GNUC__) #define CPP11_USE_INITIALIZERS_LIST #endif -//nullptr - only msvc and gcc-4.6 or later, othervice define it as NULL -#if !defined(_MSC_VER) && !(defined(__GNUC__) && (GCC_VERSION >= 460)) && !(defined(__clang__)) +//nullptr - only msvc and gcc-4.6 or later, othervice define it as nullptr +#if (defined(__GNUC__)) && (GCC_VERSION < 460) #define nullptr NULL #endif //override keyword - only msvc and gcc-4.7 or later. -#if !defined(_MSC_VER) && !(defined(__GNUC__) && (GCC_VERSION >= 470)) && !(defined(__clang__)) +#if !defined(_MSC_VER) && !defined(__clang__) && !(defined(__GNUC__) && (GCC_VERSION >= 470)) #define override #endif -//workaround to support existing code -#define OVERRIDE override - /* ---------------------------------------------------------------------------- */ /* Suppress some compiler warnings */ /* ---------------------------------------------------------------------------- */ @@ -72,6 +69,7 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size."); #include #include #include +#include #include #include #include @@ -79,6 +77,7 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size."); #include #include #include +#include #include #include #include @@ -93,12 +92,11 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size."); #define BOOST_THREAD_VERSION 3 #endif #define BOOST_THREAD_DONT_PROVIDE_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE 1 +#define BOOST_BIND_NO_PLACEHOLDERS //#define BOOST_SYSTEM_NO_DEPRECATED 1 #include -#include #include -#include #include #include #include @@ -106,17 +104,15 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size."); #include #include #include -#include #include #include -#include #include -#include +#include #include +#include #include #include #include -#include #include #ifdef ANDROID @@ -129,6 +125,7 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size."); using std::shared_ptr; using std::unique_ptr; using std::make_shared; +using namespace std::placeholders; namespace range = boost::range; /* ---------------------------------------------------------------------------- */ @@ -153,37 +150,33 @@ typedef boost::lock_guard TLockGuardRec; /* ---------------------------------------------------------------------------- */ // Import + Export macro declarations #ifdef _WIN32 -#ifdef __GNUC__ -#define DLL_EXPORT __attribute__((dllexport)) +# ifdef __GNUC__ +# define DLL_EXPORT __attribute__((dllexport)) +# else +# define DLL_EXPORT __declspec(dllexport) +# endif #else -#define DLL_EXPORT __declspec(dllexport) -#endif -#else -#if defined(__GNUC__) && GCC_VERSION >= 400 -#define DLL_EXPORT __attribute__ ((visibility("default"))) -#else -#define DLL_EXPORT -#endif +# ifdef __GNUC__ +# define DLL_EXPORT __attribute__ ((visibility("default"))) +# endif #endif #ifdef _WIN32 -#ifdef __GNUC__ -#define DLL_IMPORT __attribute__((dllimport)) +# ifdef __GNUC__ +# define DLL_IMPORT __attribute__((dllimport)) +# else +# define DLL_IMPORT __declspec(dllimport) +# endif #else -#define DLL_IMPORT __declspec(dllimport) -#endif -#else -#if defined(__GNUC__) && GCC_VERSION >= 400 -#define DLL_IMPORT __attribute__ ((visibility("default"))) -#else -#define DLL_IMPORT -#endif +# ifdef __GNUC__ +# define DLL_IMPORT __attribute__ ((visibility("default"))) +# endif #endif #ifdef VCMI_DLL -#define DLL_LINKAGE DLL_EXPORT +# define DLL_LINKAGE DLL_EXPORT #else -#define DLL_LINKAGE DLL_IMPORT +# define DLL_LINKAGE DLL_IMPORT #endif #define THROW_FORMAT(message, formatting_elems) throw std::runtime_error(boost::str(boost::format(message) % formatting_elems)) @@ -246,11 +239,6 @@ public: bmap() {} -#if 0 // What is _Myt? gcc\clang does not have that - bmap(const typename std::map::_Myt& _Right) - : std::map(_Right) - {} -#endif explicit bmap(const typename std::map::key_compare& _Pred) : std::map(_Pred) {} @@ -439,12 +427,12 @@ namespace vstd return assigner(a1,a2); } - //deleted pointer and sets it to NULL + //deleted pointer and sets it to nullptr template void clear_pointer(T* &ptr) { delete ptr; - ptr = NULL; + ptr = nullptr; } template @@ -550,7 +538,7 @@ namespace vstd }); } - static inline int retreiveRandNum(const boost::function &randGen) + static inline int retreiveRandNum(const std::function &randGen) { if (randGen) return randGen(); @@ -558,7 +546,7 @@ namespace vstd return rand(); } - template const T & pickRandomElementOf(const std::vector &v, const boost::function &randGen) + template const T & pickRandomElementOf(const std::vector &v, const std::function &randGen) { return v.at(retreiveRandNum(randGen) % v.size()); } @@ -570,7 +558,7 @@ namespace vstd } template - typename Container::value_type backOrNull(const Container &c) //returns last element of container or NULL if it is empty (to be used with containers of pointers) + typename Container::value_type backOrNull(const Container &c) //returns last element of container or nullptr if it is empty (to be used with containers of pointers) { if(c.size()) return c.back(); @@ -579,7 +567,7 @@ namespace vstd } template - typename Container::value_type frontOrNull(const Container &c) //returns first element of container or NULL if it is empty (to be used with containers of pointers) + typename Container::value_type frontOrNull(const Container &c) //returns first element of container or nullptr if it is empty (to be used with containers of pointers) { if(c.size()) return c.front(); diff --git a/client/AdventureMapClasses.cpp b/client/AdventureMapClasses.cpp index e5806fc42..380dfdd1c 100644 --- a/client/AdventureMapClasses.cpp +++ b/client/AdventureMapClasses.cpp @@ -97,11 +97,11 @@ CList::CList(int Size, Point position, std::string btnUp, std::string btnDown, s list = new CListBox(create, destroy, Point(1,scrollUp->pos.h), Point(0, 32), size, listAmount); //assign callback only after list was created - scrollUp->callback = boost::bind(&CListBox::moveToPrev, list); - scrollDown = new CAdventureMapButton(CGI->generaltexth->zelp[helpDown], boost::bind(&CListBox::moveToNext, list), 0, scrollUp->pos.h + 32*size, btnDown); + scrollUp->callback = std::bind(&CListBox::moveToPrev, list); + scrollDown = new CAdventureMapButton(CGI->generaltexth->zelp[helpDown], std::bind(&CListBox::moveToNext, list), 0, scrollUp->pos.h + 32*size, btnDown); - scrollDown->callback += boost::bind(&CList::update, this); - scrollUp->callback += boost::bind(&CList::update, this); + scrollDown->callback += std::bind(&CList::update, this); + scrollUp->callback += std::bind(&CList::update, this); update(); } @@ -236,7 +236,7 @@ CIntObject * CHeroList::createHeroItem(size_t index) } CHeroList::CHeroList(int size, Point position, std::string btnUp, std::string btnDown): - CList(size, position, btnUp, btnDown, LOCPLINT->wanderingHeroes.size(), 303, 304, boost::bind(&CHeroList::createHeroItem, this, _1)) + CList(size, position, btnUp, btnDown, LOCPLINT->wanderingHeroes.size(), 303, 304, std::bind(&CHeroList::createHeroItem, this, _1)) { } @@ -321,7 +321,7 @@ std::string CTownList::CTownItem::getHoverText() } CTownList::CTownList(int size, Point position, std::string btnUp, std::string btnDown): - CList(size, position, btnUp, btnDown, LOCPLINT->towns.size(), 306, 307, boost::bind(&CTownList::createTownItem, this, _1)) + CList(size, position, btnUp, btnDown, LOCPLINT->towns.size(), 306, 307, std::bind(&CTownList::createTownItem, this, _1)) { } diff --git a/client/CAdvmapInterface.cpp b/client/CAdvmapInterface.cpp index 25cd25daa..dd540f501 100644 --- a/client/CAdvmapInterface.cpp +++ b/client/CAdvmapInterface.cpp @@ -55,7 +55,7 @@ CAdvMapInt *adventureInt; CTerrainRect::CTerrainRect() - :curHoveredTile(-1,-1,-1), currentPath(NULL) + :curHoveredTile(-1,-1,-1), currentPath(nullptr) { tilesw=(ADVOPT.advmapW+31)/32; tilesh=(ADVOPT.advmapH+31)/32; @@ -199,7 +199,7 @@ void CTerrainRect::showPath(const SDL_Rect * extRect, SDL_Surface * to) if (hvx<0 && hvy<0) { Rect dstRect = genRect(32, 32, x + moveX, y + moveY); - CSDL_Ext::blit8bppAlphaTo24bpp(arrows->ourImages[pn].bitmap, NULL, to, &dstRect); + CSDL_Ext::blit8bppAlphaTo24bpp(arrows->ourImages[pn].bitmap, nullptr, to, &dstRect); } else if(hvx<0) { @@ -225,7 +225,7 @@ void CTerrainRect::showPath(const SDL_Rect * extRect, SDL_Surface * to) if (hvx<0 && hvy<0) { Rect dstRect = genRect(32, 32, x, y); - CSDL_Ext::blit8bppAlphaTo24bpp(arrows->ourImages[pn].bitmap, NULL, to, &dstRect); + CSDL_Ext::blit8bppAlphaTo24bpp(arrows->ourImages[pn].bitmap, nullptr, to, &dstRect); } else if(hvx<0) { @@ -364,34 +364,34 @@ CAdvMapInt::CAdvMapInt(): minimap(Rect(ADVOPT.minimapX, ADVOPT.minimapY, ADVOPT.minimapW, ADVOPT.minimapH)), statusbar(ADVOPT.statusbarX,ADVOPT.statusbarY,ADVOPT.statusbarG), kingOverview(CGI->generaltexth->zelp[293].first,CGI->generaltexth->zelp[293].second, - boost::bind(&CAdvMapInt::fshowOverview,this),&ADVOPT.kingOverview, SDLK_k), + std::bind(&CAdvMapInt::fshowOverview,this),&ADVOPT.kingOverview, SDLK_k), underground(CGI->generaltexth->zelp[294].first,CGI->generaltexth->zelp[294].second, - boost::bind(&CAdvMapInt::fswitchLevel,this),&ADVOPT.underground, SDLK_u), + std::bind(&CAdvMapInt::fswitchLevel,this),&ADVOPT.underground, SDLK_u), questlog(CGI->generaltexth->zelp[295].first,CGI->generaltexth->zelp[295].second, - boost::bind(&CAdvMapInt::fshowQuestlog,this),&ADVOPT.questlog, SDLK_q), + std::bind(&CAdvMapInt::fshowQuestlog,this),&ADVOPT.questlog, SDLK_q), sleepWake(CGI->generaltexth->zelp[296].first,CGI->generaltexth->zelp[296].second, - boost::bind(&CAdvMapInt::fsleepWake,this), &ADVOPT.sleepWake, SDLK_w), + std::bind(&CAdvMapInt::fsleepWake,this), &ADVOPT.sleepWake, SDLK_w), moveHero(CGI->generaltexth->zelp[297].first,CGI->generaltexth->zelp[297].second, - boost::bind(&CAdvMapInt::fmoveHero,this), &ADVOPT.moveHero, SDLK_m), + std::bind(&CAdvMapInt::fmoveHero,this), &ADVOPT.moveHero, SDLK_m), spellbook(CGI->generaltexth->zelp[298].first,CGI->generaltexth->zelp[298].second, - boost::bind(&CAdvMapInt::fshowSpellbok,this), &ADVOPT.spellbook, SDLK_c), + std::bind(&CAdvMapInt::fshowSpellbok,this), &ADVOPT.spellbook, SDLK_c), advOptions(CGI->generaltexth->zelp[299].first,CGI->generaltexth->zelp[299].second, - boost::bind(&CAdvMapInt::fadventureOPtions,this), &ADVOPT.advOptions, SDLK_a), + std::bind(&CAdvMapInt::fadventureOPtions,this), &ADVOPT.advOptions, SDLK_a), sysOptions(CGI->generaltexth->zelp[300].first,CGI->generaltexth->zelp[300].second, - boost::bind(&CAdvMapInt::fsystemOptions,this), &ADVOPT.sysOptions, SDLK_o), + std::bind(&CAdvMapInt::fsystemOptions,this), &ADVOPT.sysOptions, SDLK_o), nextHero(CGI->generaltexth->zelp[301].first,CGI->generaltexth->zelp[301].second, - boost::bind(&CAdvMapInt::fnextHero,this), &ADVOPT.nextHero, SDLK_h), + std::bind(&CAdvMapInt::fnextHero,this), &ADVOPT.nextHero, SDLK_h), endTurn(CGI->generaltexth->zelp[302].first,CGI->generaltexth->zelp[302].second, - boost::bind(&CAdvMapInt::fendTurn,this), &ADVOPT.endTurn, SDLK_e), + std::bind(&CAdvMapInt::fendTurn,this), &ADVOPT.endTurn, SDLK_e), heroList(ADVOPT.hlistSize, Point(ADVOPT.hlistX, ADVOPT.hlistY), ADVOPT.hlistAU, ADVOPT.hlistAD), townList(ADVOPT.tlistSize, Point(ADVOPT.tlistX, ADVOPT.tlistY), ADVOPT.tlistAU, ADVOPT.tlistAD), @@ -399,12 +399,12 @@ infoBar(Rect(ADVOPT.infoboxX, ADVOPT.infoboxY, 192, 192) ) { duringAITurn = false; state = NA; - spellBeingCasted = NULL; + spellBeingCasted = nullptr; pos.x = pos.y = 0; pos.w = screen->w; pos.h = screen->h; - selection = NULL; - townList.onSelect = boost::bind(&CAdvMapInt::selectionChanged,this); + selection = nullptr; + townList.onSelect = std::bind(&CAdvMapInt::selectionChanged,this); adventureInt=this; bg = BitmapHandler::loadBitmap(ADVOPT.mainGraphic); scrollingDir = 0; @@ -527,7 +527,7 @@ void CAdvMapInt::fendTurn() for (int i = 0; i < LOCPLINT->wanderingHeroes.size(); i++) if (!isHeroSleeping(LOCPLINT->wanderingHeroes[i]) && (LOCPLINT->wanderingHeroes[i]->movement > 0)) { - LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[55], boost::bind(&CAdvMapInt::endingTurn, this), 0, false); + LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[55], std::bind(&CAdvMapInt::endingTurn, this), 0, false); return; } } @@ -698,7 +698,7 @@ void CAdvMapInt::setHeroSleeping(const CGHeroInstance *hero, bool sleep) LOCPLINT->sleepingHeroes += hero; else LOCPLINT->sleepingHeroes -= hero; - updateNextHero(NULL); + updateNextHero(nullptr); } void CAdvMapInt::show(SDL_Surface * to) @@ -721,8 +721,8 @@ void CAdvMapInt::show(SDL_Surface * to) if((animValHitCount % (4/scrollSpeed)) == 0 && ( (GH.topInt() == this) - || SDL_GetKeyState(NULL)[SDLK_LCTRL] - || SDL_GetKeyState(NULL)[SDLK_RCTRL] + || SDL_GetKeyState(nullptr)[SDLK_LCTRL] + || SDL_GetKeyState(nullptr)[SDLK_RCTRL] ) ) { @@ -799,7 +799,11 @@ void CAdvMapInt::keyPressed(const SDL_KeyboardEvent & key) { //find first town with tavern - auto itr = range::find_if(LOCPLINT->towns, boost::bind(&CGTownInstance::hasBuilt, _1, BuildingID::TAVERN)); + auto itr = range::find_if(LOCPLINT->towns, [](const CGTownInstance * town) + { + return town->hasBuilt(BuildingID::TAVERN); + }); + if(itr != LOCPLINT->towns.end()) LOCPLINT->showThievesGuildWindow(*itr); else @@ -878,7 +882,7 @@ void CAdvMapInt::keyPressed(const SDL_KeyboardEvent & key) if(LOCPLINT->ctrlPressed()) //CTRL + T => open marketplace { //check if we have any marketplace - const CGTownInstance *townWithMarket = NULL; + const CGTownInstance *townWithMarket = nullptr; BOOST_FOREACH(const CGTownInstance *t, LOCPLINT->cb->getTownsInfo()) { if(t->hasBuilt(BuildingID::MARKETPLACE)) @@ -937,7 +941,7 @@ void CAdvMapInt::keyPressed(const SDL_KeyboardEvent & key) terrain.currentPath = &path; if(!LOCPLINT->cb->getPath2(h->getPosition(false) + dir, path)) { - terrain.currentPath = NULL; + terrain.currentPath = nullptr; return; } @@ -986,7 +990,7 @@ void CAdvMapInt::select(const CArmedInstance *sel, bool centerView /*= true*/) assert(sel); LOCPLINT->cb->setSelection(sel); selection = sel; - if (LOCPLINT->battleInt == NULL && LOCPLINT->makingTurn) + if (LOCPLINT->battleInt == nullptr && LOCPLINT->makingTurn) { auto pos = sel->visitablePos(); auto tile = LOCPLINT->cb->getTile(pos); @@ -996,7 +1000,7 @@ void CAdvMapInt::select(const CArmedInstance *sel, bool centerView /*= true*/) if(centerView) centerOn(sel); - terrain.currentPath = NULL; + terrain.currentPath = nullptr; if(sel->ID==Obj::TOWN) { auto town = dynamic_cast(sel); @@ -1005,8 +1009,8 @@ void CAdvMapInt::select(const CArmedInstance *sel, bool centerView /*= true*/) townList.select(town); heroList.select(nullptr); - updateSleepWake(NULL); - updateMoveHero(NULL); + updateSleepWake(nullptr); + updateMoveHero(nullptr); } else //hero selected { @@ -1028,7 +1032,7 @@ void CAdvMapInt::select(const CArmedInstance *sel, bool centerView /*= true*/) void CAdvMapInt::mouseMoved( const SDL_MouseMotionEvent & sEvent ) { //adventure map scrolling with mouse - if(!SDL_GetKeyState(NULL)[SDLK_LCTRL] && isActive()) + if(!SDL_GetKeyState(nullptr)[SDLK_LCTRL] && isActive()) { if(sEvent.x<15) { @@ -1452,7 +1456,7 @@ void CAdvMapInt::leaveCastingMode(bool cast /*= false*/, int3 dest /*= int3(-1, { assert(spellBeingCasted); SpellID id = spellBeingCasted->id; - spellBeingCasted = NULL; + spellBeingCasted = nullptr; terrain.deactivate(); activate(); @@ -1467,7 +1471,7 @@ const CGHeroInstance * CAdvMapInt::curHero() const if(selection && selection->ID == Obj::HERO) return static_cast(selection); else - return NULL; + return nullptr; } const CGTownInstance * CAdvMapInt::curTown() const @@ -1475,7 +1479,7 @@ const CGTownInstance * CAdvMapInt::curTown() const if(selection && selection->ID == Obj::TOWN) return static_cast(selection); else - return NULL; + return nullptr; } const IShipyard * CAdvMapInt::ourInaccessibleShipyard(const CGObjectInstance *obj) const @@ -1483,7 +1487,7 @@ const IShipyard * CAdvMapInt::ourInaccessibleShipyard(const CGObjectInstance *ob const IShipyard *ret = IShipyard::castFrom(obj); if(!ret || obj->tempOwner != player || CCS->curh->type || (CCS->curh->frame != 6 && CCS->curh->frame != 0)) - return NULL; + return nullptr; return ret; } @@ -1513,19 +1517,19 @@ CAdventureOptions::CAdventureOptions(): { OBJ_CONSTRUCTION_CAPTURING_ALL; - exit = new CAdventureMapButton("","",boost::bind(&CAdventureOptions::close, this), 204, 313, "IOK6432.DEF",SDLK_RETURN); + exit = new CAdventureMapButton("","",std::bind(&CAdventureOptions::close, this), 204, 313, "IOK6432.DEF",SDLK_RETURN); exit->assignedKeys.insert(SDLK_ESCAPE); - scenInfo = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 198, "ADVINFO.DEF",SDLK_i); + scenInfo = new CAdventureMapButton("","", std::bind(&CAdventureOptions::close, this), 24, 198, "ADVINFO.DEF",SDLK_i); scenInfo->callback += CAdventureOptions::showScenarioInfo; - //viewWorld = new CAdventureMapButton("","",boost::bind(&CGuiHandler::popIntTotally, &GH, this), 204, 313, "IOK6432.DEF",SDLK_RETURN); + //viewWorld = new CAdventureMapButton("","",std::bind(&CGuiHandler::popIntTotally, &GH, this), 204, 313, "IOK6432.DEF",SDLK_RETURN); - puzzle = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 81, "ADVPUZ.DEF"); - puzzle->callback += boost::bind(&CPlayerInterface::showPuzzleMap, LOCPLINT); + puzzle = new CAdventureMapButton("","", std::bind(&CAdventureOptions::close, this), 24, 81, "ADVPUZ.DEF"); + puzzle->callback += std::bind(&CPlayerInterface::showPuzzleMap, LOCPLINT); - dig = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 139, "ADVDIG.DEF"); + dig = new CAdventureMapButton("","", std::bind(&CAdventureOptions::close, this), 24, 139, "ADVDIG.DEF"); if(const CGHeroInstance *h = adventureInt->curHero()) - dig->callback += boost::bind(&CPlayerInterface::tryDiggging, LOCPLINT, h); + dig->callback += std::bind(&CPlayerInterface::tryDiggging, LOCPLINT, h); else dig->block(true); } diff --git a/client/CAdvmapInterface.h b/client/CAdvmapInterface.h index 522e31efa..847261b9c 100644 --- a/client/CAdvmapInterface.h +++ b/client/CAdvmapInterface.h @@ -128,7 +128,7 @@ public: CTownList townList; CInfoBar infoBar; - const CSpell *spellBeingCasted; //NULL if none + const CSpell *spellBeingCasted; //nullptr if none const CArmedInstance *selection; //currently selected town/hero @@ -178,7 +178,7 @@ public: void leaveCastingMode(bool cast = false, int3 dest = int3(-1, -1, -1)); const CGHeroInstance * curHero() const; const CGTownInstance * curTown() const; - const IShipyard * ourInaccessibleShipyard(const CGObjectInstance *obj) const; //checks if obj is our ashipyard and cursor is 0,0 -> returns shipyard or NULL else + const IShipyard * ourInaccessibleShipyard(const CGObjectInstance *obj) const; //checks if obj is our ashipyard and cursor is 0,0 -> returns shipyard or nullptr else //button updates void updateSleepWake(const CGHeroInstance *h); void updateMoveHero(const CGHeroInstance *h, tribool hasPath = boost::logic::indeterminate); diff --git a/client/CAnimation.cpp b/client/CAnimation.cpp index 238afff32..649fb2cfb 100644 --- a/client/CAnimation.cpp +++ b/client/CAnimation.cpp @@ -123,8 +123,8 @@ static CFileCache animationCache; *************************************************************************/ CDefFile::CDefFile(std::string Name): - data(NULL), - palette(NULL) + data(nullptr), + palette(nullptr) { //First 8 colors in def palette used for transparency static SDL_Color H3Palette[8] = @@ -340,8 +340,8 @@ const std::map CDefFile::getEntries() const SDLImageLoader::SDLImageLoader(SDLImage * Img): image(Img), - lineStart(NULL), - position(NULL) + lineStart(nullptr), + position(nullptr) { } @@ -394,8 +394,8 @@ SDLImageLoader::~SDLImageLoader() CompImageLoader::CompImageLoader(CompImage * Img): image(Img), - position(NULL), - entry(NULL), + position(nullptr), + entry(nullptr), currentLine(0) { @@ -550,7 +550,7 @@ void CompImageLoader::EndLine() { currentLine++; image->line[currentLine] = position - image->surf; - entry = NULL; + entry = nullptr; } @@ -586,7 +586,7 @@ void IImage::increaseRef() } SDLImage::SDLImage(CDefFile *data, size_t frame, size_t group, bool compressed): - surf(NULL) + surf(nullptr) { SDLImageLoader loader(this); data->loadFrame(frame, group, loader); @@ -607,7 +607,7 @@ SDLImage::SDLImage(std::string filename, bool compressed): { surf = BitmapHandler::loadBitmap(filename); - if (surf == NULL) + if (surf == nullptr) { logGlobal->errorStream() << "Error: failed to load image "<playerColorPalette + 32*player.getNum(); @@ -900,7 +900,7 @@ IImage * CAnimation::getFromExtraDef(std::string filename) { size_t pos = filename.find(':'); if (pos == -1) - return NULL; + return nullptr; CAnimation anim(filename.substr(0, pos)); pos++; size_t frame = atoi(filename.c_str()+pos); @@ -1052,7 +1052,7 @@ CDefFile * CAnimation::getFile() const if (CResourceHandler::get()->existsResource(identifier)) return new CDefFile(name); - return NULL; + return nullptr; } void CAnimation::printError(size_t frame, size_t group, std::string type) const @@ -1079,7 +1079,7 @@ CAnimation::CAnimation(): name(""), compressed(false) { - init(NULL); + init(nullptr); loadedAnims.insert(this); } @@ -1114,7 +1114,7 @@ IImage * CAnimation::getImage(size_t frame, size_t group, bool verbose) const } if (verbose) printError(frame, group, "GetImage"); - return NULL; + return nullptr; } void CAnimation::load() @@ -1494,7 +1494,7 @@ void CCreatureAnim::reset() void CCreatureAnim::startPreview(bool warMachine) { - callback = boost::bind(&CCreatureAnim::loopPreview, this, warMachine); + callback = std::bind(&CCreatureAnim::loopPreview, this, warMachine); } void CCreatureAnim::clearAndSet(EAnimType type) diff --git a/client/CAnimation.h b/client/CAnimation.h index b56321313..72af31be9 100644 --- a/client/CAnimation.h +++ b/client/CAnimation.h @@ -61,7 +61,7 @@ class IImage public: //draws image on surface "where" at position - virtual void draw(SDL_Surface *where, int posX=0, int posY=0, Rect *src=NULL, ui8 alpha=255) const=0; + virtual void draw(SDL_Surface *where, int posX=0, int posY=0, Rect *src=nullptr, ui8 alpha=255) const=0; //decrease ref count, returns true if image can be deleted (refCount <= 0) bool decreaseRef(); @@ -97,7 +97,7 @@ public: SDLImage(SDL_Surface * from, bool extraRef); ~SDLImage(); - void draw(SDL_Surface *where, int posX=0, int posY=0, Rect *src=NULL, ui8 alpha=255) const; + void draw(SDL_Surface *where, int posX=0, int posY=0, Rect *src=nullptr, ui8 alpha=255) const; void playerColored(PlayerColor player); int width() const; int height() const; @@ -143,7 +143,7 @@ public: CompImage(SDL_Surface * surf); ~CompImage(); - void draw(SDL_Surface *where, int posX=0, int posY=0, Rect *src=NULL, ui8 alpha=255) const; + void draw(SDL_Surface *where, int posX=0, int posY=0, Rect *src=nullptr, ui8 alpha=255) const; void playerColored(PlayerColor player); int width() const; int height() const; @@ -201,7 +201,7 @@ public: //add custom surface to the selected position. void setCustom(std::string filename, size_t frame, size_t group=0); - //get pointer to image from specific group, NULL if not found + //get pointer to image from specific group, nullptr if not found IImage * getImage(size_t frame, size_t group=0, bool verbose=true) const; //all available frames @@ -287,7 +287,7 @@ protected: public: //called when next animation sequence is required - boost::function callback; + std::function callback; //Set per-surface alpha, 0 = transparent, 255 = opaque void setAlpha(ui32 alphaValue); diff --git a/client/CBitmapHandler.cpp b/client/CBitmapHandler.cpp index c4633a16b..7bf28be81 100644 --- a/client/CBitmapHandler.cpp +++ b/client/CBitmapHandler.cpp @@ -103,14 +103,14 @@ SDL_Surface * BitmapHandler::loadBitmapFromDir(std::string path, std::string fna if(!fname.size()) { logGlobal->warnStream() << "Call to loadBitmap with void fname!"; - return NULL; + return nullptr; } if (!CResourceHandler::get()->existsResource(ResourceID(path + fname, EResType::IMAGE))) { return nullptr; } - SDL_Surface * ret=NULL; + SDL_Surface * ret=nullptr; auto readFile = CResourceHandler::get()->loadData( ResourceID(path + fname, EResType::IMAGE)); diff --git a/client/CCastleInterface.cpp b/client/CCastleInterface.cpp index 3dc505a54..c42c34f30 100644 --- a/client/CCastleInterface.cpp +++ b/client/CCastleInterface.cpp @@ -63,12 +63,12 @@ CBuildingRect::CBuildingRect(CCastleBuildings * Par, const CGTownInstance *Town, if (!str->borderName.empty()) border = BitmapHandler::loadBitmap(str->borderName, true); else - border = NULL; + border = nullptr; if (!str->areaName.empty()) area = BitmapHandler::loadBitmap(str->areaName); else - area = NULL; + area = nullptr; } CBuildingRect::~CBuildingRect() @@ -97,7 +97,7 @@ void CBuildingRect::hover(bool on) if(parent->selectedBuilding == this) { - parent->selectedBuilding = NULL; + parent->selectedBuilding = nullptr; GH.statusbar->clear(); } } @@ -237,7 +237,7 @@ void CBuildingRect::mouseMoved (const SDL_MouseMotionEvent & sEvent) { if(parent->selectedBuilding == this) { - parent->selectedBuilding = NULL; + parent->selectedBuilding = nullptr; GH.statusbar->clear(); } } @@ -436,7 +436,7 @@ void CHeroGSlot::set(const CGHeroInstance *newHero) else if(!upg && owner->showEmpty) //up garrison image = new CAnimImage("CREST58", LOCPLINT->castleInt->town->getOwner().getNum(), 0, 0, 0); else - image = NULL; + image = nullptr; } template @@ -456,7 +456,7 @@ SORTHELP structSorter; CCastleBuildings::CCastleBuildings(const CGTownInstance* Town): town(Town), - selectedBuilding(NULL) + selectedBuilding(nullptr) { OBJ_CONSTRUCTION_CAPTURING_ALL; @@ -575,7 +575,7 @@ const CGHeroInstance* CCastleBuildings::getHero() return town->visitingHero; if (town->garrisonHero) return town->garrisonHero; - return NULL; + return nullptr; } void CCastleBuildings::buildingClicked(BuildingID building) @@ -753,7 +753,7 @@ void CCastleBuildings::enterCastleGate() for(size_t i=0;iid != this->town->id && t->visitingHero == NULL && //another town, empty and this is + if (t->id != this->town->id && t->visitingHero == nullptr && //another town, empty and this is t->hasBuilt(BuildingID::CASTLE_GATE, ETownType::INFERNO)) { availableTowns.push_back(t->id.getNum());//add to the list @@ -761,7 +761,7 @@ void CCastleBuildings::enterCastleGate() } CPicture *titlePic = new CPicture (LOCPLINT->castleInt->bicons->ourImages[BuildingID::CASTLE_GATE].bitmap, 0,0, false);//will be deleted by selection window GH.pushInt (new CObjectListWindow(availableTowns, titlePic, CGI->generaltexth->jktexts[40], - CGI->generaltexth->jktexts[41], boost::bind (&CCastleInterface::castleTeleport, LOCPLINT->castleInt, _1))); + CGI->generaltexth->jktexts[41], std::bind (&CCastleInterface::castleTeleport, LOCPLINT->castleInt, _1))); } void CCastleBuildings::enterDwelling(int level) @@ -833,7 +833,7 @@ void CCastleBuildings::enterTownHall() else { LOCPLINT->showInfoDialog(CGI->generaltexth->allTexts[673]); - (dynamic_cast(GH.topInt()))->buttons[0]->callback += boost::bind(&CCastleBuildings::openTownHall, this); + (dynamic_cast(GH.topInt()))->buttons[0]->callback += std::bind(&CCastleBuildings::openTownHall, this); } } else @@ -854,8 +854,8 @@ void CCastleBuildings::openTownHall() CCastleInterface::CCastleInterface(const CGTownInstance * Town, const CGTownInstance * from): CWindowObject(PLAYER_COLORED | BORDERED), - hall(NULL), - fort(NULL), + hall(nullptr), + fort(nullptr), town(Town) { OBJ_CONSTRUCTION_CAPTURING_ALL; @@ -876,12 +876,12 @@ CCastleInterface::CCastleInterface(const CGTownInstance * Town, const CGTownInst income = new CLabel(195, 443, FONT_SMALL, CENTER); icon = new CAnimImage("ITPT", 0, 0, 15, 387); - exit = new CAdventureMapButton(CGI->generaltexth->tcommands[8], "", boost::bind(&CCastleInterface::close,this), 744, 544, "TSBTNS", SDLK_RETURN); + exit = new CAdventureMapButton(CGI->generaltexth->tcommands[8], "", std::bind(&CCastleInterface::close,this), 744, 544, "TSBTNS", SDLK_RETURN); exit->assignedKeys.insert(SDLK_ESCAPE); exit->setOffset(4); - split = new CAdventureMapButton(CGI->generaltexth->tcommands[3], "", boost::bind(&CGarrisonInt::splitClick,garr), 744, 382, "TSBTNS.DEF"); - split->callback += boost::bind(&HeroSlots::splitClicked, heroes); + split = new CAdventureMapButton(CGI->generaltexth->tcommands[3], "", std::bind(&CGarrisonInt::splitClick,garr), 744, 382, "TSBTNS.DEF"); + split->callback += std::bind(&HeroSlots::splitClicked, heroes); garr->addSplitBtn(split); Rect barRect(9, 182, 732, 18); @@ -893,7 +893,7 @@ CCastleInterface::CCastleInterface(const CGTownInstance * Town, const CGTownInst townlist->select(from); townlist->select(town); //this will scroll list to select current town - townlist->onSelect = boost::bind(&CCastleInterface::townChange, this); + townlist->onSelect = std::bind(&CCastleInterface::townChange, this); recreateIcons(); CCS->musich->playMusic(town->town->clientInfo.musicTheme, true); @@ -903,7 +903,7 @@ CCastleInterface::CCastleInterface(const CGTownInstance * Town, const CGTownInst CCastleInterface::~CCastleInterface() { - LOCPLINT->castleInt = NULL; + LOCPLINT->castleInt = nullptr; delete bicons; } @@ -987,8 +987,8 @@ CCreaInfo::CCreaInfo(Point position, const CGTownInstance *Town, int Level, bool if ( town->creatures.size() <= level || town->creatures[level].second.empty()) { level = -1; - label = NULL; - picture = NULL; + label = nullptr; + picture = nullptr; return;//No creature } addUsedEvents(LCLICK | RCLICK | HOVER); @@ -1092,7 +1092,7 @@ void CCreaInfo::clickRight(tribool down, bool previousState) CTownInfo::CTownInfo(int posX, int posY, const CGTownInstance* Town, bool townHall): town(Town), - building(NULL) + building(nullptr) { OBJ_CONSTRUCTION_CAPTURING_ALL; addUsedEvents(RCLICK | HOVER); @@ -1298,7 +1298,7 @@ CHallInterface::CHallInterface(const CGTownInstance *Town): title = new CLabel(399, 12, FONT_MEDIUM, CENTER, Colors::WHITE, town->town->buildings[BuildingID(town->hallLevel()+BuildingID::VILLAGE_HALL)]->Name()); exit = new CAdventureMapButton(CGI->generaltexth->hcommands[8], "", - boost::bind(&CHallInterface::close,this), 748, 556, "TPMAGE1.DEF", SDLK_RETURN); + std::bind(&CHallInterface::close,this), 748, 556, "TPMAGE1.DEF", SDLK_RETURN); exit->assignedKeys.insert(SDLK_ESCAPE); auto & boxList = town->town->clientInfo.hallSlots; @@ -1307,7 +1307,7 @@ CHallInterface::CHallInterface(const CGTownInstance *Town): { for(size_t col=0; colgeneraltexth->allTexts[595]) % building->Name()), - "", boost::bind(&CBuildWindow::buyFunc,this), 45, 446,"IBUY30", SDLK_RETURN); + "", std::bind(&CBuildWindow::buyFunc,this), 45, 446,"IBUY30", SDLK_RETURN); buy->borderColor = Colors::METALLIC_GOLD; buy->borderEnabled = true; cancel = new CAdventureMapButton(boost::str(boost::format(CGI->generaltexth->allTexts[596]) % building->Name()), - "", boost::bind(&CBuildWindow::close,this), 290, 445, "ICANCEL", SDLK_ESCAPE); + "", std::bind(&CBuildWindow::close,this), 290, 445, "ICANCEL", SDLK_ESCAPE); cancel->borderColor = Colors::METALLIC_GOLD; cancel->borderEnabled = true; buy->block(state!=7 || LOCPLINT->playerID != town->tempOwner); @@ -1428,7 +1428,7 @@ CFortScreen::CFortScreen(const CGTownInstance * town): title = new CLabel(400, 12, FONT_BIG, CENTER, Colors::WHITE, fortBuilding->Name()); std::string text = boost::str(boost::format(CGI->generaltexth->fcommands[6]) % fortBuilding->Name()); - exit = new CAdventureMapButton(text, "", boost::bind(&CFortScreen::close,this) ,748, 556, "TPMAGE1", SDLK_RETURN); + exit = new CAdventureMapButton(text, "", std::bind(&CFortScreen::close,this) ,748, 556, "TPMAGE1", SDLK_RETURN); exit->assignedKeys.insert(SDLK_ESCAPE); std::vector positions; @@ -1518,7 +1518,7 @@ void LabeledValue::hover(bool on) CFortScreen::RecruitArea::RecruitArea(int posX, int posY, const CGTownInstance *Town, BuildingID buildingID, int Level): town(Town), level(Level), - availableCount(NULL) + availableCount(nullptr) { OBJ_CONSTRUCTION_CAPTURING_ALL; pos.x +=posX; @@ -1532,7 +1532,7 @@ CFortScreen::RecruitArea::RecruitArea(int posX, int posY, const CGTownInstance * icons = new CPicture("TPCAINFO", 261, 3); buildingPic = new CAnimImage(town->town->clientInfo.buildingsIcons, buildingID, 0, 4, 21); - const CCreature* creature = NULL; + const CCreature* creature = nullptr; if (!town->creatures[level].second.empty()) creature = CGI->creh->creatures[town->creatures[level].second.back()]; @@ -1608,7 +1608,7 @@ CMageGuildScreen::CMageGuildScreen(CCastleInterface * owner): Rect barRect(7, 556, 737, 18); statusBar = new CGStatusBar(new CPicture(*background, barRect, 7, 556, false)); - exit = new CAdventureMapButton(CGI->generaltexth->allTexts[593],"",boost::bind(&CMageGuildScreen::close,this), 748, 556,"TPMAGE1.DEF",SDLK_RETURN); + exit = new CAdventureMapButton(CGI->generaltexth->allTexts[593],"",std::bind(&CMageGuildScreen::close,this), 748, 556,"TPMAGE1.DEF",SDLK_RETURN); exit->assignedKeys.insert(SDLK_ESCAPE); std::vector > positions; @@ -1685,10 +1685,10 @@ CBlacksmithDialog::CBlacksmithDialog(bool possible, CreatureID creMachineID, Art boost::lexical_cast(CGI->arth->artifacts[aid]->price)); std::string text = boost::str(boost::format(CGI->generaltexth->allTexts[595]) % creature->nameSing); - buy = new CAdventureMapButton(text,"",boost::bind(&CBlacksmithDialog::close, this), 42, 312,"IBUY30.DEF",SDLK_RETURN); + buy = new CAdventureMapButton(text,"",std::bind(&CBlacksmithDialog::close, this), 42, 312,"IBUY30.DEF",SDLK_RETURN); text = boost::str(boost::format(CGI->generaltexth->allTexts[596]) % creature->nameSing); - cancel = new CAdventureMapButton(text,"",boost::bind(&CBlacksmithDialog::close, this), 224, 312,"ICANCEL.DEF",SDLK_ESCAPE); + cancel = new CAdventureMapButton(text,"",std::bind(&CBlacksmithDialog::close, this), 224, 312,"ICANCEL.DEF",SDLK_ESCAPE); if(possible) buy->callback += [=]{ LOCPLINT->cb->buyArtifact(LOCPLINT->cb->getHero(hid),aid); }; diff --git a/client/CCastleInterface.h b/client/CCastleInterface.h index 365729ab7..f0dfde795 100644 --- a/client/CCastleInterface.h +++ b/client/CCastleInterface.h @@ -84,7 +84,7 @@ public: int upg; //0 - up garrison, 1 - down garrison CAnimImage *image; - CAnimImage *selection; //selection border. NULL if not selected + CAnimImage *selection; //selection border. nullptr if not selected void setHighlight(bool on); void set(const CGHeroInstance *newHero); diff --git a/client/CCreatureWindow.cpp b/client/CCreatureWindow.cpp index 888b9b63d..c965239c9 100644 --- a/client/CCreatureWindow.cpp +++ b/client/CCreatureWindow.cpp @@ -52,7 +52,7 @@ CCreatureWindow::CCreatureWindow (const CStack &stack, CreWinType Type): else { CStackInstance * s = new CStackInstance(stack.type, 1); //TODO: war machines and summons should be regular stacks - init(s, &stack, NULL); + init(s, &stack, nullptr); delete s; } } @@ -73,11 +73,11 @@ CCreatureWindow::CCreatureWindow(CreatureID Cid, CreWinType Type, int creatureCo OBJ_CONSTRUCTION_CAPTURING_ALL; CStackInstance * stack = new CStackInstance(Cid, creatureCount); //TODO: simplify? - init(stack, CGI->creh->creatures[Cid], NULL); + init(stack, CGI->creh->creatures[Cid], nullptr); delete stack; } -CCreatureWindow::CCreatureWindow(const CStackInstance &st, CreWinType Type, boost::function Upg, boost::function Dsm, UpgradeInfo *ui): +CCreatureWindow::CCreatureWindow(const CStackInstance &st, CreWinType Type, std::function Upg, std::function Dsm, UpgradeInfo *ui): CWindowObject(PLAYER_COLORED | (Type == OTHER ? RCLICK_POPUP : 0 ) ), type(Type), dismiss(0), @@ -104,14 +104,14 @@ CCreatureWindow::CCreatureWindow(const CStackInstance &st, CreWinType Type, boos { CFunctionList fs; fs += Upg; - fs += boost::bind(&CCreatureWindow::close,this); + fs += std::bind(&CCreatureWindow::close,this); CFunctionList cfl; - cfl = boost::bind(&CPlayerInterface::showYesNoDialog, LOCPLINT, CGI->generaltexth->allTexts[207], fs, 0, false, boost::ref(upgResCost)); + cfl = std::bind(&CPlayerInterface::showYesNoDialog, LOCPLINT, CGI->generaltexth->allTexts[207], fs, 0, false, std::ref(upgResCost)); upgrade = new CAdventureMapButton("",CGI->generaltexth->zelp[446].second,cfl,385, 148,"IVIEWCR.DEF",SDLK_u); } else { - upgrade = new CAdventureMapButton("",CGI->generaltexth->zelp[446].second,boost::function(),385, 148,"IVIEWCR.DEF"); + upgrade = new CAdventureMapButton("",CGI->generaltexth->zelp[446].second,std::function(),385, 148,"IVIEWCR.DEF"); upgrade->callback.funcs.clear(); upgrade->setOffset(2); } @@ -122,9 +122,9 @@ CCreatureWindow::CCreatureWindow(const CStackInstance &st, CreWinType Type, boos CFunctionList fs[2]; //on dismiss confirmed fs[0] += Dsm; //dismiss - fs[0] += boost::bind(&CCreatureWindow::close,this);//close this window + fs[0] += std::bind(&CCreatureWindow::close,this);//close this window CFunctionList cfl; - cfl = boost::bind(&CPlayerInterface::showYesNoDialog,LOCPLINT,CGI->generaltexth->allTexts[12],fs[0],fs[1],false,std::vector()); + cfl = std::bind(&CPlayerInterface::showYesNoDialog,LOCPLINT,CGI->generaltexth->allTexts[12],fs[0],fs[1],false,std::vector()); dismiss = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second,cfl,333, 148,"IVIEWCR2.DEF",SDLK_d); } } @@ -146,18 +146,18 @@ CCreatureWindow::CCreatureWindow (const CCommanderInstance * Commander, const CS init(commander, commander, dynamic_cast(commander->armyObj)); } - boost::function Dsm; + std::function Dsm; CFunctionList fs[2]; //on dismiss confirmed fs[0] += Dsm; //dismiss - fs[0] += boost::bind(&CCreatureWindow::close,this);//close this window + fs[0] += std::bind(&CCreatureWindow::close,this);//close this window CFunctionList cfl; - cfl = boost::bind(&CPlayerInterface::showYesNoDialog,LOCPLINT,CGI->generaltexth->allTexts[12],fs[0],fs[1],false,std::vector()); + cfl = std::bind(&CPlayerInterface::showYesNoDialog,LOCPLINT,CGI->generaltexth->allTexts[12],fs[0],fs[1],false,std::vector()); if (type < COMMANDER_LEVEL_UP) //can dismiss only in regular window dismiss = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second, cfl, 333, 148,"IVIEWCR2.DEF", SDLK_d); } -CCreatureWindow::CCreatureWindow (std::vector &skills, const CCommanderInstance * Commander, boost::function callback): +CCreatureWindow::CCreatureWindow (std::vector &skills, const CCommanderInstance * Commander, std::function callback): CWindowObject(PLAYER_COLORED), type(COMMANDER_LEVEL_UP), commander (Commander), @@ -169,21 +169,21 @@ CCreatureWindow::CCreatureWindow (std::vector &skills, const CCommanderIns init(commander, commander, dynamic_cast(commander->armyObj)); - boost::function Dsm; + std::function Dsm; CFunctionList fs[2]; //on dismiss confirmed fs[0] += Dsm; //dismiss - fs[0] += boost::bind(&CCreatureWindow::close,this);//close this window + fs[0] += std::bind(&CCreatureWindow::close,this);//close this window CFunctionList cfl; - cfl = boost::bind(&CPlayerInterface::showYesNoDialog,LOCPLINT,CGI->generaltexth->allTexts[12],fs[0],fs[1],false,std::vector()); + cfl = std::bind(&CPlayerInterface::showYesNoDialog,LOCPLINT,CGI->generaltexth->allTexts[12],fs[0],fs[1],false,std::vector()); if (type < COMMANDER_LEVEL_UP) //can dismiss only in regular window dismiss = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second, cfl, 333, 148,"IVIEWCR2.DEF", SDLK_d); } void CCreatureWindow::init(const CStackInstance *Stack, const CBonusSystemNode *StackNode, const CGHeroInstance *HeroOwner) { - creatureArtifact = NULL; //may be set later - artifactImage = NULL; + creatureArtifact = nullptr; //may be set later + artifactImage = nullptr; stack = Stack; c = stack->type; if(!StackNode) @@ -199,7 +199,7 @@ void CCreatureWindow::init(const CStackInstance *Stack, const CBonusSystemNode * count = boost::lexical_cast(Stack->count); if (type < COMMANDER) - commander = NULL; + commander = nullptr; bool creArt = false; displayedArtifact = ArtifactPosition::CREATURE_SLOT; // 0 @@ -229,7 +229,7 @@ void CCreatureWindow::init(const CStackInstance *Stack, const CBonusSystemNode * { ui32 index = selectableSkills.size(); CSelectableSkill * selectableSkill = new CSelectableSkill(); - selectableSkill->callback = boost::bind(&CCreatureWindow::selectSkill, this, index); + selectableSkill->callback = std::bind(&CCreatureWindow::selectSkill, this, index); if (option < 100) { @@ -324,13 +324,13 @@ void CCreatureWindow::init(const CStackInstance *Stack, const CBonusSystemNode * setBackground("CreWin" + boost::lexical_cast(bonusRows) + ".pcx"); //1 to 4 rows for now //Buttons - ok = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second, boost::bind(&CCreatureWindow::close,this), 489, 148, "hsbtns.def", SDLK_RETURN); + ok = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second, std::bind(&CCreatureWindow::close,this), 489, 148, "hsbtns.def", SDLK_RETURN); ok->assignedKeys.insert(SDLK_ESCAPE); if (type <= BATTLE) //in battle or info window { - upgrade = NULL; - dismiss = NULL; + upgrade = nullptr; + dismiss = nullptr; } anim = new CCreaturePic(22, 48, c); @@ -403,10 +403,10 @@ void CCreatureWindow::init(const CStackInstance *Stack, const CBonusSystemNode * if (type > BATTLE && type < COMMANDER_BATTLE) //artifact buttons inactive in battle { //TODO: disable buttons if no artifact is equipped - leftArtRoll = new CAdventureMapButton(std::string(), std::string(), boost::bind (&CCreatureWindow::scrollArt, this, -1), 437, 98, "hsbtns3.def", SDLK_LEFT); - rightArtRoll = new CAdventureMapButton(std::string(), std::string(), boost::bind (&CCreatureWindow::scrollArt, this, +1), 516, 98, "hsbtns5.def", SDLK_RIGHT); + leftArtRoll = new CAdventureMapButton(std::string(), std::string(), std::bind (&CCreatureWindow::scrollArt, this, -1), 437, 98, "hsbtns3.def", SDLK_LEFT); + rightArtRoll = new CAdventureMapButton(std::string(), std::string(), std::bind (&CCreatureWindow::scrollArt, this, +1), 516, 98, "hsbtns5.def", SDLK_RIGHT); if (heroOwner) - passArtToHero = new CAdventureMapButton(std::string(), std::string(), boost::bind (&CCreatureWindow::passArtifactToHero, this), 437, 148, "OVBUTN1.DEF", SDLK_HOME); + passArtToHero = new CAdventureMapButton(std::string(), std::string(), std::bind (&CCreatureWindow::passArtifactToHero, this), 437, 148, "OVBUTN1.DEF", SDLK_HOME); } } @@ -437,7 +437,7 @@ void CCreatureWindow::init(const CStackInstance *Stack, const CBonusSystemNode * if (bonusItems.size() > (bonusRows << 1)) //only after graphics are created { - slider = new CSlider(528, 231 + commanderOffset, bonusRows*60, boost::bind (&CCreatureWindow::sliderMoved, this, _1), + slider = new CSlider(528, 231 + commanderOffset, bonusRows*60, std::bind (&CCreatureWindow::sliderMoved, this, _1), bonusRows, (bonusItems.size() + 1) >> 1, 0, false, 0); } else //slider automatically places bonus Items @@ -624,13 +624,13 @@ void CCreatureWindow::setArt(const CArtifactInstance *art) creatureArtifact = art; if (creatureArtifact) { - if (artifactImage == NULL) + if (artifactImage == nullptr) artifactImage = new CAnimImage("ARTIFACT", creatureArtifact->artType->iconIndex, 0, 466, 100); else artifactImage->setFrame(creatureArtifact->artType->iconIndex); } else - artifactImage = NULL; + artifactImage = nullptr; redraw(); } @@ -704,7 +704,7 @@ CBonusItem::CBonusItem(const Rect &Pos, const std::string &Name, const std::stri if (graphicsName.size()) bonusGraphics = new CPicture(graphicsName, 26, 232); else - bonusGraphics = NULL; + bonusGraphics = nullptr; removeUsedEvents(ALL); //no actions atm } @@ -737,7 +737,7 @@ void CCreInfoWindow::show(SDL_Surface * to) creatureCount->showAll(to); } -CCreInfoWindow::CCreInfoWindow(const CStackInstance &stack, bool LClicked, boost::function upgradeFunc, boost::function dismissFunc, UpgradeInfo *upgradeInfo): +CCreInfoWindow::CCreInfoWindow(const CStackInstance &stack, bool LClicked, std::function upgradeFunc, std::function dismissFunc, UpgradeInfo *upgradeInfo): CWindowObject(PLAYER_COLORED | (LClicked ? 0 : RCLICK_POPUP), "CRSTKPU") { OBJ_CONSTRUCTION_CAPTURING_ALL; @@ -746,7 +746,7 @@ CCreInfoWindow::CCreInfoWindow(const CStackInstance &stack, bool LClicked, boost //additional buttons if opened with left click if(LClicked) { - boost::function closeFunc = boost::bind(&CCreInfoWindow::close,this); + std::function closeFunc = std::bind(&CCreInfoWindow::close,this); if(upgradeFunc && upgradeInfo) { @@ -761,11 +761,11 @@ CCreInfoWindow::CCreInfoWindow(const CStackInstance &stack, bool LClicked, boost onUpgrade += upgradeFunc; onUpgrade += closeFunc; - boost::function dialog = boost::bind(&CPlayerInterface::showYesNoDialog, + std::function dialog = std::bind(&CPlayerInterface::showYesNoDialog, LOCPLINT, CGI->generaltexth->allTexts[207], onUpgrade, 0, false, - boost::ref(upgResCost)); + std::ref(upgResCost)); upgrade = new CAdventureMapButton("", CGI->generaltexth->zelp[446].second, dialog, 76, 237, "IVIEWCR", SDLK_u); upgrade->block(!LOCPLINT->cb->getResourceAmount().canAfford(upgradeCost)); @@ -777,7 +777,7 @@ CCreInfoWindow::CCreInfoWindow(const CStackInstance &stack, bool LClicked, boost onDismiss += dismissFunc; onDismiss += closeFunc; - boost::function dialog = boost::bind(&CPlayerInterface::showYesNoDialog, + std::function dialog = std::bind(&CPlayerInterface::showYesNoDialog, LOCPLINT, CGI->generaltexth->allTexts[12], onDismiss, 0, true, std::vector()); @@ -792,7 +792,7 @@ CCreInfoWindow::CCreInfoWindow(int creatureID, bool LClicked, int creatureCount) { OBJ_CONSTRUCTION_CAPTURING_ALL; const CCreature *creature = CGI->creh->creatures[creatureID]; - init(creature, NULL, NULL, creatureCount, LClicked); + init(creature, nullptr, nullptr, creatureCount, LClicked); } CCreInfoWindow::CCreInfoWindow(const CStack &stack, bool LClicked): @@ -869,9 +869,9 @@ void CCreInfoWindow::init(const CCreature *creature, const CBonusSystemNode *sta } else { - abilityText = NULL; + abilityText = nullptr; ok = new CAdventureMapButton("", CGI->generaltexth->zelp[445].second, - boost::bind(&CCreInfoWindow::close,this), 216, 237, "IOKAY.DEF", SDLK_RETURN); + std::bind(&CCreInfoWindow::close,this), 216, 237, "IOKAY.DEF", SDLK_RETURN); ok->assignedKeys.insert(SDLK_ESCAPE); } @@ -913,7 +913,7 @@ CIntObject * createCreWindow(CreatureID Cid, CCreatureWindow::CreWinType Type, i return new CCreatureWindow(Cid, Type, creatureCount); } -CIntObject * createCreWindow(const CStackInstance *s, CCreatureWindow::CreWinType type, boost::function Upg, boost::function Dsm, UpgradeInfo *ui) +CIntObject * createCreWindow(const CStackInstance *s, CCreatureWindow::CreWinType type, std::function Upg, std::function Dsm, UpgradeInfo *ui) { if(settings["general"]["classicCreatureWindow"].Bool()) return new CCreInfoWindow(*s, type==CCreatureWindow::HERO, Upg, Dsm, ui); diff --git a/client/CCreatureWindow.h b/client/CCreatureWindow.h index e05a7e7e2..204eb84d7 100644 --- a/client/CCreatureWindow.h +++ b/client/CCreatureWindow.h @@ -82,15 +82,15 @@ public: void artifactDisassembled (const ArtifactLocation &artLoc) {return;}; void artifactAssembled (const ArtifactLocation &artLoc) {return;}; - boost::function dsm; //dismiss button callback - boost::function Upg; //upgrade button callback - boost::function levelUp; //choose commander skill to level up + std::function dsm; //dismiss button callback + std::function Upg; //upgrade button callback + std::function levelUp; //choose commander skill to level up CCreatureWindow(const CStack & stack, CreWinType type); //battle c-tor CCreatureWindow (const CStackInstance &stack, CreWinType Type); //pop-up c-tor - CCreatureWindow(const CStackInstance &st, CreWinType Type, boost::function Upg, boost::function Dsm, UpgradeInfo *ui); //full garrison window - CCreatureWindow(const CCommanderInstance * commander, const CStack * stack = NULL); //commander window - CCreatureWindow(std::vector &skills, const CCommanderInstance * commander, boost::function callback); + CCreatureWindow(const CStackInstance &st, CreWinType Type, std::function Upg, std::function Dsm, UpgradeInfo *ui); //full garrison window + CCreatureWindow(const CCommanderInstance * commander, const CStack * stack = nullptr); //commander window + CCreatureWindow(std::vector &skills, const CCommanderInstance * commander, std::function callback); CCreatureWindow(CreatureID Cid, CreWinType Type, int creatureCount); //c-tor void init(const CStackInstance *stack, const CBonusSystemNode *stackNode, const CGHeroInstance *heroOwner); @@ -123,7 +123,7 @@ public: class CSelectableSkill : public LRClickableAreaWText { public: - boost::function callback; //TODO: create more generic clickable class than AdvMapButton? + std::function callback; //TODO: create more generic clickable class than AdvMapButton? virtual void clickLeft(tribool down, bool previousState); virtual void clickRight(tribool down, bool previousState){}; @@ -146,7 +146,7 @@ public: CAdventureMapButton * dismiss, * upgrade, * ok; - CCreInfoWindow(const CStackInstance & st, bool LClicked, boost::function Upg = 0, boost::function Dsm = 0, UpgradeInfo * ui = NULL); + CCreInfoWindow(const CStackInstance & st, bool LClicked, std::function Upg = 0, std::function Dsm = 0, UpgradeInfo * ui = nullptr); CCreInfoWindow(const CStack & st, bool LClicked = 0); CCreInfoWindow(int Cid, bool LClicked, int creatureCount); ~CCreInfoWindow(); @@ -159,4 +159,4 @@ public: CIntObject *createCreWindow(const CStack *s, bool lclick = false); CIntObject *createCreWindow(CreatureID Cid, CCreatureWindow::CreWinType Type, int creatureCount); -CIntObject *createCreWindow(const CStackInstance *s, CCreatureWindow::CreWinType type, boost::function Upg = 0, boost::function Dsm = 0, UpgradeInfo *ui = NULL); +CIntObject *createCreWindow(const CStackInstance *s, CCreatureWindow::CreWinType type, std::function Upg = 0, std::function Dsm = 0, UpgradeInfo *ui = nullptr); diff --git a/client/CDefHandler.cpp b/client/CDefHandler.cpp index 553da9b0e..4f24ee4b3 100644 --- a/client/CDefHandler.cpp +++ b/client/CDefHandler.cpp @@ -40,7 +40,7 @@ CDefHandler::~CDefHandler() if (ourImages[i].bitmap) { SDL_FreeSurface(ourImages[i].bitmap); - ourImages[i].bitmap=NULL; + ourImages[i].bitmap=nullptr; } } } @@ -130,7 +130,7 @@ void CDefHandler::expand(ui8 N,ui8 & BL, ui8 & BR) SDL_Surface * CDefHandler::getSprite (int SIndex, const ui8 * FDef, const BMPPalette * palette) const { - SDL_Surface * ret=NULL; + SDL_Surface * ret=nullptr; ui32 BaseOffset, SpriteWidth, SpriteHeight, //format of sprite diff --git a/client/CGameInfo.cpp b/client/CGameInfo.cpp index 0855d51ac..c144d47d4 100644 --- a/client/CGameInfo.cpp +++ b/client/CGameInfo.cpp @@ -18,7 +18,7 @@ CClientState * CCS; CGameInfo::CGameInfo() { - mh = NULL; + mh = nullptr; } void CGameInfo::setFromLib() diff --git a/client/CHeroWindow.cpp b/client/CHeroWindow.cpp index 47727fbc7..5d0743f10 100644 --- a/client/CHeroWindow.cpp +++ b/client/CHeroWindow.cpp @@ -41,13 +41,13 @@ using namespace boost::assign; -const TBonusListPtr CHeroWithMaybePickedArtifact::getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= NULL*/, const std::string &cachingStr /*= ""*/) const +const TBonusListPtr CHeroWithMaybePickedArtifact::getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= nullptr*/, const std::string &cachingStr /*= ""*/) const { TBonusListPtr out(new BonusList); TBonusListPtr heroBonuses = hero->getAllBonuses(selector, limit, hero); TBonusListPtr bonusesFromPickedUpArtifact; - CArtifactsOfHero::SCommonPart *cp = cww->artSets.size() ? cww->artSets.front()->commonInfo : NULL; + CArtifactsOfHero::SCommonPart *cp = cww->artSets.size() ? cww->artSets.front()->commonInfo : nullptr; if(cp && cp->src.art && cp->src.valid() && cp->src.AOH && cp->src.AOH->getHero() == hero) { bonusesFromPickedUpArtifact = cp->src.art->getAllBonuses(selector, limit, hero); @@ -103,20 +103,20 @@ CHeroWindow::CHeroWindow(const CGHeroInstance *hero): //artifs = new CArtifactsOfHero(pos.topLeft(), true); ourBar = new CGStatusBar(7, 559, "ADROLLVR.bmp", 660); // new CStatusBar(pos.x+72, pos.y+567, "ADROLLVR.bmp", 660); - quitButton = new CAdventureMapButton(CGI->generaltexth->heroscrn[17], std::string(),boost::bind(&CHeroWindow::close,this), 609, 516, "hsbtns.def", SDLK_RETURN); + quitButton = new CAdventureMapButton(CGI->generaltexth->heroscrn[17], std::string(),std::bind(&CHeroWindow::close,this), 609, 516, "hsbtns.def", SDLK_RETURN); quitButton->assignedKeys.insert(SDLK_ESCAPE); - dismissButton = new CAdventureMapButton(std::string(), CGI->generaltexth->heroscrn[28], boost::bind(&CHeroWindow::dismissCurrent,this), 454, 429, "hsbtns2.def", SDLK_d); - questlogButton = new CAdventureMapButton(CGI->generaltexth->heroscrn[0], std::string(), boost::bind(&CHeroWindow::questlog,this), 314, 429, "hsbtns4.def", SDLK_q); + dismissButton = new CAdventureMapButton(std::string(), CGI->generaltexth->heroscrn[28], std::bind(&CHeroWindow::dismissCurrent,this), 454, 429, "hsbtns2.def", SDLK_d); + questlogButton = new CAdventureMapButton(CGI->generaltexth->heroscrn[0], std::string(), std::bind(&CHeroWindow::questlog,this), 314, 429, "hsbtns4.def", SDLK_q); formations = new CHighlightableButtonsGroup(0); formations->addButton(map_list_of(0,CGI->generaltexth->heroscrn[23]),CGI->generaltexth->heroscrn[29], "hsbtns6.def", 481, 483, 0, 0, SDLK_t); formations->addButton(map_list_of(0,CGI->generaltexth->heroscrn[24]),CGI->generaltexth->heroscrn[30], "hsbtns7.def", 481, 519, 1, 0, SDLK_l); - tacticsButton = new CHighlightableButton(0, 0, map_list_of(0,CGI->generaltexth->heroscrn[26])(3,CGI->generaltexth->heroscrn[25]), CGI->generaltexth->heroscrn[31], false, "hsbtns8.def", NULL, 539, 483, SDLK_b); + tacticsButton = new CHighlightableButton(0, 0, map_list_of(0,CGI->generaltexth->heroscrn[26])(3,CGI->generaltexth->heroscrn[25]), CGI->generaltexth->heroscrn[31], false, "hsbtns8.def", nullptr, 539, 483, SDLK_b); if (hero->commander) { - commanderButton = new CAdventureMapButton ("Commander", "Commander info", boost::bind(&CHeroWindow::commanderWindow, this), 317, 18, "chftke.def", SDLK_c, NULL, false); + commanderButton = new CAdventureMapButton ("Commander", "Commander info", std::bind(&CHeroWindow::commanderWindow, this), 317, 18, "chftke.def", SDLK_c, nullptr, false); } @@ -183,7 +183,7 @@ void CHeroWindow::update(const CGHeroInstance * hero, bool redrawNeeded /*= fals { if(!hero) //something strange... no hero? it shouldn't happen { - logGlobal->errorStream() << "Set NULL hero? no way..."; + logGlobal->errorStream() << "Set nullptr hero? no way..."; return; } @@ -201,13 +201,13 @@ void CHeroWindow::update(const CGHeroInstance * hero, bool redrawNeeded /*= fals portraitImage->setFrame(curHero->portrait); { - CAdventureMapButton * split = NULL; + CAdventureMapButton * split = nullptr; OBJ_CONSTRUCTION_CAPTURING_ALL; if(!garr) { garr = new CGarrisonInt(15, 485, 8, Point(), background->bg, Point(15,485), curHero); split = new CAdventureMapButton(CGI->generaltexth->allTexts[256], CGI->generaltexth->heroscrn[32], - boost::bind(&CGarrisonInt::splitClick,garr), 539, 519, "hsbtns9.def", false, NULL, false); //deleted by garrison destructor + std::bind(&CGarrisonInt::splitClick,garr), 539, 519, "hsbtns9.def", false, nullptr, false); //deleted by garrison destructor boost::algorithm::replace_first(split->hoverTexts[0],"%s",CGI->generaltexth->allTexts[43]); garr->addSplitBtn(split); @@ -282,7 +282,7 @@ void CHeroWindow::update(const CGHeroInstance * hero, bool redrawNeeded /*= fals //setting formations formations->onChange = 0; formations->select(curHero->formation,true); - formations->onChange = boost::bind(&CCallback::setFormation, LOCPLINT->cb.get(), curHero, _1); + formations->onChange = std::bind(&CCallback::setFormation, LOCPLINT->cb.get(), curHero, _1); morale->set(&heroWArt); luck->set(&heroWArt); @@ -293,8 +293,8 @@ void CHeroWindow::update(const CGHeroInstance * hero, bool redrawNeeded /*= fals void CHeroWindow::dismissCurrent() { - CFunctionList ony = boost::bind(&CHeroWindow::close,this); - ony += boost::bind(&CCallback::dismissHero, LOCPLINT->cb.get(), curHero); + CFunctionList ony = std::bind(&CHeroWindow::close,this); + ony += std::bind(&CCallback::dismissHero, LOCPLINT->cb.get(), curHero); LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[22], ony, 0, false); } diff --git a/client/CHeroWindow.h b/client/CHeroWindow.h index 07efe2447..d23443f64 100644 --- a/client/CHeroWindow.h +++ b/client/CHeroWindow.h @@ -46,7 +46,7 @@ public: CWindowWithArtifacts *cww; CHeroWithMaybePickedArtifact(CWindowWithArtifacts *Cww, const CGHeroInstance *Hero); - const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = NULL, const std::string &cachingStr = "") const OVERRIDE; + const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = nullptr, const std::string &cachingStr = "") const override; }; class CHeroWindow: public CWindowObject, public CWindowWithGarrison, public CWindowWithArtifacts diff --git a/client/CKingdomInterface.cpp b/client/CKingdomInterface.cpp index 3d9cb456d..8ebdefdc2 100644 --- a/client/CKingdomInterface.cpp +++ b/client/CKingdomInterface.cpp @@ -32,8 +32,8 @@ InfoBox::InfoBox(Point position, InfoPos Pos, InfoSize Size, IInfoBoxData *Data) size(Size), infoPos(Pos), data(Data), - value(NULL), - name(NULL) + value(nullptr), + name(nullptr) { assert(data); addUsedEvents(LCLICK | RCLICK); @@ -253,7 +253,7 @@ bool InfoBoxAbstractHeroData::prepareMessage(std::string &text, CComponent **com { case HERO_SPECIAL: text = CGI->heroh->heroes[getSubID()]->specDescr; - *comp = NULL; + *comp = nullptr; return true; case HERO_PRIMARY_SKILL: text = CGI->generaltexth->arraytxt[2+getSubID()]; @@ -261,11 +261,11 @@ bool InfoBoxAbstractHeroData::prepareMessage(std::string &text, CComponent **com return true; case HERO_MANA: text = CGI->generaltexth->allTexts[149]; - *comp = NULL; + *comp = nullptr; return true; case HERO_EXPERIENCE: text = CGI->generaltexth->allTexts[241]; - *comp = NULL; + *comp = nullptr; return true; case HERO_SECONDARY_SKILL: { @@ -383,7 +383,7 @@ bool InfoBoxHeroData::prepareMessage(std::string &text, CComponent**comp) boost::replace_first(text, "%s", boost::lexical_cast(hero->name)); boost::replace_first(text, "%d", boost::lexical_cast(hero->mana)); boost::replace_first(text, "%d", boost::lexical_cast(hero->manaLimit())); - *comp = NULL; + *comp = nullptr; return true; case HERO_EXPERIENCE: @@ -391,7 +391,7 @@ bool InfoBoxHeroData::prepareMessage(std::string &text, CComponent**comp) boost::replace_first(text, "%d", boost::lexical_cast(hero->level)); boost::replace_first(text, "%d", boost::lexical_cast(CGI->heroh->reqExp(hero->level+1))); boost::replace_first(text, "%d", boost::lexical_cast(hero->exp)); - *comp = NULL; + *comp = nullptr; return true; default: @@ -462,7 +462,7 @@ CKingdomInterface::CKingdomInterface(): OBJ_CONSTRUCTION_CAPTURING_ALL; ui32 footerPos = conf.go()->ac.overviewSize * 116; - tabArea = new CTabbedInt(boost::bind(&CKingdomInterface::createMainTab, this, _1), CTabbedInt::DestroyFunc(), Point(4,4)); + tabArea = new CTabbedInt(std::bind(&CKingdomInterface::createMainTab, this, _1), CTabbedInt::DestroyFunc(), Point(4,4)); std::vector ownedObjects = LOCPLINT->cb->getMyObjects(); generateObjectsList(ownedObjects); @@ -522,7 +522,7 @@ void CKingdomInterface::generateObjectsList(const std::vectorgeneraltexth->overview[11], CGI->generaltexth->overview[6], - boost::bind(&CKingdomInterface::activateTab, this, 0),748,28+footerPos,"OVBUTN1.DEF", SDLK_h); + std::bind(&CKingdomInterface::activateTab, this, 0),748,28+footerPos,"OVBUTN1.DEF", SDLK_h); btnHeroes->block(true); btnTowns = new CAdventureMapButton (CGI->generaltexth->overview[12], CGI->generaltexth->overview[7], - boost::bind(&CKingdomInterface::activateTab, this, 1),748,64+footerPos,"OVBUTN6.DEF", SDLK_t); + std::bind(&CKingdomInterface::activateTab, this, 1),748,64+footerPos,"OVBUTN6.DEF", SDLK_t); btnExit = new CAdventureMapButton (CGI->generaltexth->allTexts[600],"", - boost::bind(&CKingdomInterface::close, this),748,99+footerPos,"OVBUTN1.DEF", SDLK_RETURN); + std::bind(&CKingdomInterface::close, this),748,99+footerPos,"OVBUTN1.DEF", SDLK_RETURN); btnExit->assignedKeys.insert(SDLK_ESCAPE); btnExit->setOffset(3); //Object list control buttons - dwellTop = new CAdventureMapButton ("", "", boost::bind(&CListBox::moveToPos, dwellingsList, 0), + dwellTop = new CAdventureMapButton ("", "", std::bind(&CListBox::moveToPos, dwellingsList, 0), 733, 4, "OVBUTN4.DEF"); - dwellBottom = new CAdventureMapButton ("", "", boost::bind(&CListBox::moveToPos, dwellingsList, -1), + dwellBottom = new CAdventureMapButton ("", "", std::bind(&CListBox::moveToPos, dwellingsList, -1), 733, footerPos+2, "OVBUTN4.DEF"); dwellBottom->setOffset(2); - dwellUp = new CAdventureMapButton ("", "", boost::bind(&CListBox::moveToPrev, dwellingsList), + dwellUp = new CAdventureMapButton ("", "", std::bind(&CListBox::moveToPrev, dwellingsList), 733, 24, "OVBUTN4.DEF"); dwellUp->setOffset(4); - dwellDown = new CAdventureMapButton ("", "", boost::bind(&CListBox::moveToNext, dwellingsList), + dwellDown = new CAdventureMapButton ("", "", std::bind(&CListBox::moveToNext, dwellingsList), 733, footerPos-18, "OVBUTN4.DEF"); dwellDown->setOffset(6); } @@ -684,7 +684,7 @@ CKingdHeroList::CKingdHeroList(size_t maxSize) ui32 townCount = LOCPLINT->cb->howManyHeroes(false); ui32 size = conf.go()->ac.overviewSize*116 + 19; - heroes = new CListBox(boost::bind(&CKingdHeroList::createHeroItem, this, _1), boost::bind(&CKingdHeroList::destroyHeroItem, this, _1), + heroes = new CListBox(std::bind(&CKingdHeroList::createHeroItem, this, _1), std::bind(&CKingdHeroList::destroyHeroItem, this, _1), Point(19,21), Point(0,116), maxSize, townCount, 0, 1, Rect(-19, -21, size, size) ); } @@ -737,7 +737,7 @@ CKingdTownList::CKingdTownList(size_t maxSize) ui32 townCount = LOCPLINT->cb->howManyTowns(); ui32 size = conf.go()->ac.overviewSize*116 + 19; - towns = new CListBox(boost::bind(&CKingdTownList::createTownItem, this, _1), CListBox::DestroyFunc(), + towns = new CListBox(std::bind(&CKingdTownList::createTownItem, this, _1), CListBox::DestroyFunc(), Point(19,21), Point(0,116), maxSize, townCount, 0, 1, Rect(-19, -21, size, size) ); } @@ -784,7 +784,7 @@ CTownItem::CTownItem(const CGTownInstance* Town): hall = new CTownInfo( 69, 31, town, true); fort = new CTownInfo(111, 31, town, false); - garr = new CGarrisonInt(313, 3, 4, Point(232,0), NULL, Point(313,2), town->getUpperArmy(), town->visitingHero, true, true, true); + garr = new CGarrisonInt(313, 3, 4, Point(232,0), nullptr, Point(313,2), town->getUpperArmy(), town->visitingHero, true, true, true); heroes = new HeroSlots(town, Point(244,6), Point(475,6), garr, false); size_t iconIndex = town->town->clientInfo.icons[town->hasFort()][town->builded >= CGI->modh->settings.MAX_BUILDING_PER_TURN]; @@ -886,7 +886,7 @@ CHeroItem::CHeroItem(const CGHeroInstance* Hero, CArtifactsOfHero::SCommonPart * heroArts->commonInfo = artsCommonPart; heroArts->setHero(hero); - artsTabs = new CTabbedInt(boost::bind(&CHeroItem::onTabSelected, this, _1), boost::bind(&CHeroItem::onTabDeselected, this, _1)); + artsTabs = new CTabbedInt(std::bind(&CHeroItem::onTabSelected, this, _1), std::bind(&CHeroItem::onTabDeselected, this, _1)); artButtons = new CHighlightableButtonsGroup(0); for (size_t it = 0; it<3; it++) @@ -900,11 +900,11 @@ CHeroItem::CHeroItem(const CGHeroInstance* Hero, CArtifactsOfHero::SCommonPart * artButtons->addButton(tooltip, overlay, "OVBUTN3",364+it*112, 46, it); artButtons->buttons[it]->addTextOverlay(CGI->generaltexth->allTexts[stringID[it]], FONT_SMALL, Colors::YELLOW); } - artButtons->onChange += boost::bind(&CTabbedInt::setActive, artsTabs, _1); - artButtons->onChange += boost::bind(&CHeroItem::onArtChange, this, _1); + artButtons->onChange += std::bind(&CTabbedInt::setActive, artsTabs, _1); + artButtons->onChange += std::bind(&CHeroItem::onArtChange, this, _1); artButtons->select(0,0); - garr = new CGarrisonInt(6, 78, 4, Point(), NULL, Point(), hero, NULL, true, true); + garr = new CGarrisonInt(6, 78, 4, Point(), nullptr, Point(), hero, nullptr, true, true); portrait = new CAnimImage("PortraitsLarge", hero->portrait, 0, 5, 6); heroArea = new CHeroArea(5, 6, hero); diff --git a/client/CMT.cpp b/client/CMT.cpp index 5234555bc..36751a90f 100644 --- a/client/CMT.cpp +++ b/client/CMT.cpp @@ -1,7 +1,6 @@ // CMT.cpp : Defines the entry point for the console application. // #include "StdInc.h" -#include #include #include "gui/SDL_Extensions.h" #include "CGameInfo.h" @@ -68,9 +67,9 @@ namespace po = boost::program_options; std::string NAME_AFFIX = "client"; std::string NAME = GameConstants::VCMI_VERSION + std::string(" (") + NAME_AFFIX + ')'; //application name CGuiHandler GH; -static CClient *client=NULL; -SDL_Surface *screen = NULL, //main screen surface - *screen2 = NULL,//and hlp surface (used to store not-active interfaces layer) +static CClient *client=nullptr; +SDL_Surface *screen = nullptr, //main screen surface + *screen2 = nullptr,//and hlp surface (used to store not-active interfaces layer) *screenBuf = screen; //points to screen (if only advmapint is present) or screen2 (else) - should be used when updating controls which are not regularly redrawed static boost::thread *mainGUIThread; @@ -89,7 +88,7 @@ void dispose(); void playIntro(); static void listenForEvents(); //void requestChangingResolution(); -void startGame(StartInfo * options, CConnection *serv = NULL); +void startGame(StartInfo * options, CConnection *serv = nullptr); #ifndef _WIN32 #ifndef _GNU_SOURCE @@ -212,7 +211,7 @@ int main(int argc, char** argv) // Check that game data is prepared. Otherwise run vcmibuilder helper application FILE* check = fopen((VCMIDirs::get().localPath() + "/game_data_prepared").c_str(), "r"); - if (check == NULL) { + if (check == nullptr) { system("open ./vcmibuilder.app"); return 0; } @@ -276,7 +275,7 @@ int main(int argc, char** argv) CStopWatch total, pomtime; std::cout.flags(std::ios::unitbuf); console = new CConsoleHandler; - *console->cb = boost::bind(&processCommand, _1); + *console->cb = std::bind(&processCommand, _1); console->start(); atexit(dispose); @@ -314,7 +313,7 @@ int main(int argc, char** argv) logGlobal->infoStream() <<"Loading settings: "<infoStream() << NAME; - srand ( time(NULL) ); + srand ( time(nullptr) ); const JsonNode& video = settings["video"]; @@ -367,7 +366,7 @@ int main(int argc, char** argv) { if(!vm.count("battle") && !vm.count("nointro")) playIntro(); - SDL_FillRect(screen,NULL,0); + SDL_FillRect(screen,nullptr,0); } CSDL_Ext::update(screen); @@ -408,7 +407,7 @@ int main(int argc, char** argv) if(!gNoGUI) { - mainGUIThread = new boost::thread(&CGuiHandler::run, boost::ref(GH)); + mainGUIThread = new boost::thread(&CGuiHandler::run, &GH); listenForEvents(); } else @@ -560,7 +559,7 @@ void processCommand(const std::string &message) } else if(cn=="crash") { - int *ptr = NULL; + int *ptr = nullptr; *ptr = 666; //disaster! } @@ -769,7 +768,7 @@ static void setScreenRes(int w, int h, int bpp, bool fullscreen, bool resetVideo SDL_InitSubSystem(SDL_INIT_VIDEO); } - if((screen = SDL_SetVideoMode(w, h, suggestedBpp, SDL_SWSURFACE|(fullscreen?SDL_FULLSCREEN:0))) == NULL) + if((screen = SDL_SetVideoMode(w, h, suggestedBpp, SDL_SWSURFACE|(fullscreen?SDL_FULLSCREEN:0))) == nullptr) { logGlobal->errorStream() << "Requested screen resolution is not available (" << w << "x" << h << "x" << suggestedBpp << "bpp)"; throw std::runtime_error("Requested screen resolution is not available\n"); @@ -914,7 +913,7 @@ static void listenForEvents() } } -void startGame(StartInfo * options, CConnection *serv/* = NULL*/) +void startGame(StartInfo * options, CConnection *serv/* = nullptr*/) { if(vm.count("onlyAI")) { @@ -959,10 +958,10 @@ void handleQuit() GH.terminate = true; mainGUIThread->join(); delete mainGUIThread; - mainGUIThread = NULL; + mainGUIThread = nullptr; } delete console; - console = NULL; + console = nullptr; boost::this_thread::sleep(boost::posix_time::milliseconds(750)); if(!gNoGUI) SDL_Quit(); diff --git a/client/CMessage.cpp b/client/CMessage.cpp index 8b3a20133..056212998 100644 --- a/client/CMessage.cpp +++ b/client/CMessage.cpp @@ -65,7 +65,7 @@ namespace { CDefHandler * ok, *cancel; std::vector > piecesOfBox; //in colors of all players - SDL_Surface * background = NULL; + SDL_Surface * background = nullptr; } void CMessage::init() @@ -352,16 +352,16 @@ void CMessage::drawBorder(PlayerColor playerColor, SDL_Surface * ret, int w, int //corners Rect dstR(x, y, box[0]->w, box[0]->h); - CSDL_Ext::blitSurface(box[0], NULL, ret, &dstR); + CSDL_Ext::blitSurface(box[0], nullptr, ret, &dstR); dstR=Rect(x+w-box[1]->w, y, box[1]->w, box[1]->h); - CSDL_Ext::blitSurface(box[1], NULL, ret, &dstR); + CSDL_Ext::blitSurface(box[1], nullptr, ret, &dstR); dstR=Rect(x, y+h-box[2]->h+1, box[2]->w, box[2]->h); - CSDL_Ext::blitSurface(box[2], NULL, ret, &dstR); + CSDL_Ext::blitSurface(box[2], nullptr, ret, &dstR); dstR=Rect(x+w-box[3]->w, y+h-box[3]->h+1, box[3]->w, box[3]->h); - CSDL_Ext::blitSurface(box[3], NULL, ret, &dstR); + CSDL_Ext::blitSurface(box[3], nullptr, ret, &dstR); } ComponentResolved::ComponentResolved( CComponent *Comp ): diff --git a/client/CMusicHandler.cpp b/client/CMusicHandler.cpp index 63b1c5862..c5fe3b9b8 100644 --- a/client/CMusicHandler.cpp +++ b/client/CMusicHandler.cpp @@ -83,7 +83,7 @@ void CSoundHandler::onVolumeChange(const JsonNode &volumeNode) CSoundHandler::CSoundHandler(): listener(settings.listen["general"]["sound"]) { - listener(boost::bind(&CSoundHandler::onVolumeChange, this, _1)); + listener(std::bind(&CSoundHandler::onVolumeChange, this, _1)); // Vectors for helper(s) pickupSounds += soundBase::pickup01, soundBase::pickup02, soundBase::pickup03, @@ -269,9 +269,9 @@ void CSoundHandler::setVolume(ui32 percent) Mix_Volume(-1, (MIX_MAX_VOLUME * volume)/100); } -void CSoundHandler::setCallback(int channel, boost::function function) +void CSoundHandler::setCallback(int channel, std::function function) { - std::map >::iterator iter; + std::map >::iterator iter; iter = callbacks.find(channel); //channel not found. It may have finished so fire callback now @@ -283,7 +283,7 @@ void CSoundHandler::setCallback(int channel, boost::function function) void CSoundHandler::soundFinishedCallback(int channel) { - std::map >::iterator iter; + std::map >::iterator iter; iter = callbacks.find(channel); assert(iter != callbacks.end()); @@ -302,7 +302,7 @@ void CMusicHandler::onVolumeChange(const JsonNode &volumeNode) CMusicHandler::CMusicHandler(): listener(settings.listen["general"]["music"]) { - listener(boost::bind(&CMusicHandler::onVolumeChange, this, _1)); + listener(std::bind(&CMusicHandler::onVolumeChange, this, _1)); // Map music IDs // Vectors for helper const std::string setEnemy[] = {"AITheme0", "AITheme1", "AITheme2"}; @@ -338,7 +338,7 @@ void CMusicHandler::release() { boost::mutex::scoped_lock guard(musicMutex); - Mix_HookMusicFinished(NULL); + Mix_HookMusicFinished(nullptr); current.reset(); next.reset(); @@ -416,7 +416,7 @@ void CMusicHandler::stopMusic(int fade_ms) boost::mutex::scoped_lock guard(musicMutex); - if (current.get() != NULL) + if (current.get() != nullptr) current->stop(fade_ms); next.reset(); } @@ -433,7 +433,7 @@ void CMusicHandler::musicFinishedCallback(void) { boost::mutex::scoped_lock guard(musicMutex); - if (current.get() != NULL) + if (current.get() != nullptr) { //return if current music still not finished if (current->play()) @@ -442,7 +442,7 @@ void CMusicHandler::musicFinishedCallback(void) current.reset(); } - if (current.get() == NULL && next.get() != NULL) + if (current.get() == nullptr && next.get() != nullptr) { current.reset(next.release()); current->play(); diff --git a/client/CMusicHandler.h b/client/CMusicHandler.h index 3656f8d41..681c6b72c 100644 --- a/client/CMusicHandler.h +++ b/client/CMusicHandler.h @@ -47,8 +47,8 @@ private: Mix_Chunk *GetSoundChunk(std::string &sound); //have entry for every currently active channel - //boost::function will be NULL if callback was not set - std::map > callbacks; + //std::function will be nullptr if callback was not set + std::map > callbacks; public: CSoundHandler(); @@ -65,7 +65,7 @@ public: int playSoundFromSet(std::vector &sound_vec); void stopSound(int handler); - void setCallback(int channel, boost::function function); + void setCallback(int channel, std::function function); void soundFinishedCallback(int channel); std::map spellSounds; diff --git a/client/CPlayerInterface.cpp b/client/CPlayerInterface.cpp index fd3ceff75..d643afb66 100644 --- a/client/CPlayerInterface.cpp +++ b/client/CPlayerInterface.cpp @@ -112,11 +112,11 @@ CPlayerInterface::CPlayerInterface(PlayerColor Player) howManyPeople++; GH.defActionsDef = 0; LOCPLINT = this; - curAction = NULL; + curAction = nullptr; playerID=Player; human=true; - castleInt = NULL; - battleInt = NULL; + castleInt = nullptr; + battleInt = nullptr; //pim = new boost::recursive_mutex; makingTurn = false; showingDialog = new CondSh(false); @@ -138,12 +138,12 @@ CPlayerInterface::~CPlayerInterface() if(adventureInt->active & CIntObject::KEYBOARD) adventureInt->deactivateKeyboard(); delete adventureInt; - adventureInt = NULL; + adventureInt = nullptr; } delete cingconsole; - LOCPLINT = NULL; + LOCPLINT = nullptr; } void CPlayerInterface::init(shared_ptr CB) { @@ -165,7 +165,7 @@ void CPlayerInterface::yourTurn() LOCPLINT = this; GH.curInt = this; - adventureInt->selection = NULL; + adventureInt->selection = nullptr; if(firstCall) { @@ -520,7 +520,7 @@ void CPlayerInterface::heroInGarrisonChange(const CGTownInstance *town) wanderingHeroes.push_back(town->visitingHero); } adventureInt->heroList.update(); - adventureInt->updateNextHero(NULL); + adventureInt->updateNextHero(nullptr); if(CCastleInterface *c = castleInt) { @@ -749,7 +749,7 @@ void CPlayerInterface::actionFinished(const BattleAction &action) battleInt->endAction(curAction); delete curAction; - curAction = NULL; + curAction = nullptr; } BattleAction CPlayerInterface::activeStack(const CStack * stack) //called when it's turn of that stack @@ -792,7 +792,7 @@ BattleAction CPlayerInterface::activeStack(const CStack * stack) //called when i //tidy up BattleAction ret = *(b->givenCommand->data); delete b->givenCommand->data; - b->givenCommand->data = NULL; + b->givenCommand->data = nullptr; //return command logGlobal->traceStream() << "Giving command for " << stack->nodeName(); @@ -1325,12 +1325,12 @@ bool CPlayerInterface::moveHero( const CGHeroInstance *h, CGPath path ) bool CPlayerInterface::shiftPressed() const { - return SDL_GetKeyState(NULL)[SDLK_LSHIFT] || SDL_GetKeyState(NULL)[SDLK_RSHIFT]; + return SDL_GetKeyState(nullptr)[SDLK_LSHIFT] || SDL_GetKeyState(nullptr)[SDLK_RSHIFT]; } bool CPlayerInterface::altPressed() const { - return SDL_GetKeyState(NULL)[SDLK_LALT] || SDL_GetKeyState(NULL)[SDLK_RALT]; + return SDL_GetKeyState(nullptr)[SDLK_LALT] || SDL_GetKeyState(nullptr)[SDLK_RALT]; } void CPlayerInterface::showGarrisonDialog( const CArmedInstance *up, const CGHeroInstance *down, bool removableUnits, QueryID queryID) @@ -1468,7 +1468,7 @@ void CPlayerInterface::initializeHeroTownList() towns.push_back(allTowns[i]); if (adventureInt) - adventureInt->updateNextHero(NULL); + adventureInt->updateNextHero(nullptr); } void CPlayerInterface::showRecruitmentDialog(const CGDwelling *dwelling, const CArmedInstance *dst, int level) @@ -1547,7 +1547,7 @@ void CPlayerInterface::objectRemoved( const CGObjectInstance *obj ) bool CPlayerInterface::ctrlPressed() const { - return SDL_GetKeyState(NULL)[SDLK_LCTRL] || SDL_GetKeyState(NULL)[SDLK_RCTRL]; + return SDL_GetKeyState(nullptr)[SDLK_LCTRL] || SDL_GetKeyState(nullptr)[SDLK_RCTRL]; } void CPlayerInterface::update() @@ -2133,7 +2133,7 @@ void CPlayerInterface::eraseCurrentPathOf( const CGHeroInstance * ho, bool check assert(ho == adventureInt->selection); paths.erase(ho); - adventureInt->terrain.currentPath = NULL; + adventureInt->terrain.currentPath = nullptr; adventureInt->updateMoveHero(ho, false); } @@ -2165,7 +2165,7 @@ CGPath * CPlayerInterface::getAndVerifyPath(const CGHeroInstance * h) } } - return NULL; + return nullptr; } void CPlayerInterface::acceptTurn() @@ -2193,7 +2193,7 @@ void CPlayerInterface::acceptTurn() //show new day animation and sound on infobar adventureInt->infoBar.showDate(); - adventureInt->updateNextHero(NULL); + adventureInt->updateNextHero(nullptr); adventureInt->showAll(screen); if(settings["session"]["autoSkip"].Bool() && !LOCPLINT->shiftPressed()) @@ -2286,7 +2286,7 @@ void CPlayerInterface::showHillFortWindow(const CGObjectInstance *object, const GH.pushInt(chfw); } -void CPlayerInterface::availableArtifactsChanged(const CGBlackMarket *bm /*= NULL*/) +void CPlayerInterface::availableArtifactsChanged(const CGBlackMarket *bm /*= nullptr*/) { EVENT_HANDLER_CALLED_BY_CLIENT; if(CMarketplaceWindow *cmw = dynamic_cast(GH.topInt())) diff --git a/client/CPlayerInterface.h b/client/CPlayerInterface.h index 44a7ac4b2..b390d9cb1 100644 --- a/client/CPlayerInterface.h +++ b/client/CPlayerInterface.h @@ -97,12 +97,12 @@ public: static const int SAVES_COUNT = 5; static int howManyPeople; - CCastleInterface * castleInt; //NULL if castle window isn't opened - static CBattleInterface * battleInt; //NULL if no battle + CCastleInterface * castleInt; //nullptr if castle window isn't opened + static CBattleInterface * battleInt; //nullptr if no battle CInGameConsole * cingconsole; shared_ptr cb; //to communicate with engine - const BattleAction *curAction; //during the battle - action currently performed by active stack (or NULL) + const BattleAction *curAction; //during the battle - action currently performed by active stack (or nullptr) std::list dialogs; //queue of dialogs awaiting to be shown (not currently shown!) @@ -133,13 +133,13 @@ public: int getLastIndex(std::string namePrefix); //overridden funcs from CGameInterface - void buildChanged(const CGTownInstance *town, BuildingID buildingID, int what) OVERRIDE; //what: 1 - built, 2 - demolished - void stackChagedCount(const StackLocation &location, const TQuantity &change, bool isAbsolute) OVERRIDE; //if absolute, change is the new count; otherwise count was modified by adding change - void stackChangedType(const StackLocation &location, const CCreature &newType) OVERRIDE; //used eg. when upgrading creatures - void stacksErased(const StackLocation &location) OVERRIDE; //stack removed from previously filled slot - void stacksSwapped(const StackLocation &loc1, const StackLocation &loc2) OVERRIDE; - void newStackInserted(const StackLocation &location, const CStackInstance &stack) OVERRIDE; //new stack inserted at given (previously empty position) - void stacksRebalanced(const StackLocation &src, const StackLocation &dst, TQuantity count) OVERRIDE; //moves creatures from src stack to dst slot, may be used for merging/splittint/moving stacks + void buildChanged(const CGTownInstance *town, BuildingID buildingID, int what) override; //what: 1 - built, 2 - demolished + void stackChagedCount(const StackLocation &location, const TQuantity &change, bool isAbsolute) override; //if absolute, change is the new count; otherwise count was modified by adding change + void stackChangedType(const StackLocation &location, const CCreature &newType) override; //used eg. when upgrading creatures + void stacksErased(const StackLocation &location) override; //stack removed from previously filled slot + void stacksSwapped(const StackLocation &loc1, const StackLocation &loc2) override; + void newStackInserted(const StackLocation &location, const CStackInstance &stack) override; //new stack inserted at given (previously empty position) + void stacksRebalanced(const StackLocation &src, const StackLocation &dst, TQuantity count) override; //moves creatures from src stack to dst slot, may be used for merging/splittint/moving stacks void artifactPut(const ArtifactLocation &al); void artifactRemoved(const ArtifactLocation &al); @@ -147,70 +147,70 @@ public: void artifactAssembled(const ArtifactLocation &al); void artifactDisassembled(const ArtifactLocation &al); - void heroCreated(const CGHeroInstance* hero) OVERRIDE; - void heroGotLevel(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, QueryID queryID) OVERRIDE; - void commanderGotLevel (const CCommanderInstance * commander, std::vector skills, QueryID queryID) OVERRIDE; - void heroInGarrisonChange(const CGTownInstance *town) OVERRIDE; - void heroMoved(const TryMoveHero & details) OVERRIDE; - void heroPrimarySkillChanged(const CGHeroInstance * hero, int which, si64 val) OVERRIDE; - void heroSecondarySkillChanged(const CGHeroInstance * hero, int which, int val) OVERRIDE; - void heroManaPointsChanged(const CGHeroInstance * hero) OVERRIDE; - void heroMovePointsChanged(const CGHeroInstance * hero) OVERRIDE; - void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town) OVERRIDE; - void receivedResource(int type, int val) OVERRIDE; - void showInfoDialog(const std::string &text, const std::vector &components, int soundID) OVERRIDE; - void showRecruitmentDialog(const CGDwelling *dwelling, const CArmedInstance *dst, int level) OVERRIDE; - void showShipyardDialog(const IShipyard *obj) OVERRIDE; //obj may be town or shipyard; - void showBlockingDialog(const std::string &text, const std::vector &components, QueryID askID, int soundID, bool selection, bool cancel) OVERRIDE; //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID. - void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, bool removableUnits, QueryID queryID) OVERRIDE; - void showPuzzleMap() OVERRIDE; - void showMarketWindow(const IMarket *market, const CGHeroInstance *visitor) OVERRIDE; - void showUniversityWindow(const IMarket *market, const CGHeroInstance *visitor) OVERRIDE; - void showHillFortWindow(const CGObjectInstance *object, const CGHeroInstance *visitor) OVERRIDE; - void showTavernWindow(const CGObjectInstance *townOrTavern) OVERRIDE; - void showThievesGuildWindow (const CGObjectInstance * obj) OVERRIDE; - void showQuestLog() OVERRIDE; - void advmapSpellCast(const CGHeroInstance * caster, int spellID) OVERRIDE; //called when a hero casts a spell - void tileHidden(const boost::unordered_set &pos) OVERRIDE; //called when given tiles become hidden under fog of war - void tileRevealed(const boost::unordered_set &pos) OVERRIDE; //called when fog of war disappears from given tiles - void newObject(const CGObjectInstance * obj) OVERRIDE; - void availableArtifactsChanged(const CGBlackMarket *bm = NULL) OVERRIDE; //bm may be NULL, then artifacts are changed in the global pool (used by merchants in towns) - void yourTurn() OVERRIDE; - void availableCreaturesChanged(const CGDwelling *town) OVERRIDE; - void heroBonusChanged(const CGHeroInstance *hero, const Bonus &bonus, bool gain) OVERRIDE;//if gain hero received bonus, else he lost it - void playerBonusChanged(const Bonus &bonus, bool gain) OVERRIDE; - void requestRealized(PackageApplied *pa) OVERRIDE; - void heroExchangeStarted(ObjectInstanceID hero1, ObjectInstanceID hero2, QueryID query) OVERRIDE; - void centerView (int3 pos, int focusTime) OVERRIDE; - void objectPropertyChanged(const SetObjectProperty * sop) OVERRIDE; - void objectRemoved(const CGObjectInstance *obj) OVERRIDE; - void gameOver(PlayerColor player, bool victory) OVERRIDE; - void playerStartsTurn(PlayerColor player) OVERRIDE; //called before yourTurn on active itnerface - void showComp(const Component &comp, std::string message) OVERRIDE; //display component in the advmapint infobox - void saveGame(COSer &h, const int version) OVERRIDE; //saving - void loadGame(CISer &h, const int version) OVERRIDE; //loading + void heroCreated(const CGHeroInstance* hero) override; + void heroGotLevel(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, QueryID queryID) override; + void commanderGotLevel (const CCommanderInstance * commander, std::vector skills, QueryID queryID) override; + void heroInGarrisonChange(const CGTownInstance *town) override; + void heroMoved(const TryMoveHero & details) override; + void heroPrimarySkillChanged(const CGHeroInstance * hero, int which, si64 val) override; + void heroSecondarySkillChanged(const CGHeroInstance * hero, int which, int val) override; + void heroManaPointsChanged(const CGHeroInstance * hero) override; + void heroMovePointsChanged(const CGHeroInstance * hero) override; + void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town) override; + void receivedResource(int type, int val) override; + void showInfoDialog(const std::string &text, const std::vector &components, int soundID) override; + void showRecruitmentDialog(const CGDwelling *dwelling, const CArmedInstance *dst, int level) override; + void showShipyardDialog(const IShipyard *obj) override; //obj may be town or shipyard; + void showBlockingDialog(const std::string &text, const std::vector &components, QueryID askID, int soundID, bool selection, bool cancel) override; //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID. + void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, bool removableUnits, QueryID queryID) override; + void showPuzzleMap() override; + void showMarketWindow(const IMarket *market, const CGHeroInstance *visitor) override; + void showUniversityWindow(const IMarket *market, const CGHeroInstance *visitor) override; + void showHillFortWindow(const CGObjectInstance *object, const CGHeroInstance *visitor) override; + void showTavernWindow(const CGObjectInstance *townOrTavern) override; + void showThievesGuildWindow (const CGObjectInstance * obj) override; + void showQuestLog() override; + void advmapSpellCast(const CGHeroInstance * caster, int spellID) override; //called when a hero casts a spell + void tileHidden(const boost::unordered_set &pos) override; //called when given tiles become hidden under fog of war + void tileRevealed(const boost::unordered_set &pos) override; //called when fog of war disappears from given tiles + void newObject(const CGObjectInstance * obj) override; + void availableArtifactsChanged(const CGBlackMarket *bm = nullptr) override; //bm may be nullptr, then artifacts are changed in the global pool (used by merchants in towns) + void yourTurn() override; + void availableCreaturesChanged(const CGDwelling *town) override; + void heroBonusChanged(const CGHeroInstance *hero, const Bonus &bonus, bool gain) override;//if gain hero received bonus, else he lost it + void playerBonusChanged(const Bonus &bonus, bool gain) override; + void requestRealized(PackageApplied *pa) override; + void heroExchangeStarted(ObjectInstanceID hero1, ObjectInstanceID hero2, QueryID query) override; + void centerView (int3 pos, int focusTime) override; + void objectPropertyChanged(const SetObjectProperty * sop) override; + void objectRemoved(const CGObjectInstance *obj) override; + void gameOver(PlayerColor player, bool victory) override; + void playerStartsTurn(PlayerColor player) override; //called before yourTurn on active itnerface + void showComp(const Component &comp, std::string message) override; //display component in the advmapint infobox + void saveGame(COSer &h, const int version) override; //saving + void loadGame(CISer &h, const int version) override; //loading //for battles - void actionFinished(const BattleAction& action) OVERRIDE;//occurs AFTER action taken by active stack or by the hero - void actionStarted(const BattleAction& action) OVERRIDE;//occurs BEFORE action taken by active stack or by the hero - BattleAction activeStack(const CStack * stack) OVERRIDE; //called when it's turn of that stack - void battleAttack(const BattleAttack *ba) OVERRIDE; //stack performs attack - void battleEnd(const BattleResult *br) OVERRIDE; //end of battle - void battleNewRoundFirst(int round) OVERRIDE; //called at the beginning of each turn before changes are applied; used for HP regen handling - void battleNewRound(int round) OVERRIDE; //called at the beginning of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn - void battleStackMoved(const CStack * stack, std::vector dest, int distance) OVERRIDE; - void battleSpellCast(const BattleSpellCast *sc) OVERRIDE; - void battleStacksEffectsSet(const SetStackEffect & sse) OVERRIDE; //called when a specific effect is set to stacks - void battleTriggerEffect(const BattleTriggerEffect & bte) OVERRIDE; //various one-shot effect - void battleStacksAttacked(const std::vector & bsa) OVERRIDE; - void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) OVERRIDE; //called by engine when battle starts; side=0 - left, side=1 - right - void battleStacksHealedRes(const std::vector > & healedStacks, bool lifeDrain, bool tentHeal, si32 lifeDrainFrom) OVERRIDE; //called when stacks are healed / resurrected - void battleNewStackAppeared(const CStack * stack) OVERRIDE; //not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned - void battleObstaclesRemoved(const std::set & removedObstacles) OVERRIDE; //called when a certain set of obstacles is removed from batlefield; IDs of them are given - void battleCatapultAttacked(const CatapultAttack & ca) OVERRIDE; //called when catapult makes an attack - void battleStacksRemoved(const BattleStacksRemoved & bsr) OVERRIDE; //called when certain stack is completely removed from battlefield - void battleObstaclePlaced(const CObstacleInstance &obstacle) OVERRIDE; - void yourTacticPhase(int distance) OVERRIDE; + void actionFinished(const BattleAction& action) override;//occurs AFTER action taken by active stack or by the hero + void actionStarted(const BattleAction& action) override;//occurs BEFORE action taken by active stack or by the hero + BattleAction activeStack(const CStack * stack) override; //called when it's turn of that stack + void battleAttack(const BattleAttack *ba) override; //stack performs attack + void battleEnd(const BattleResult *br) override; //end of battle + void battleNewRoundFirst(int round) override; //called at the beginning of each turn before changes are applied; used for HP regen handling + void battleNewRound(int round) override; //called at the beginning of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn + void battleStackMoved(const CStack * stack, std::vector dest, int distance) override; + void battleSpellCast(const BattleSpellCast *sc) override; + void battleStacksEffectsSet(const SetStackEffect & sse) override; //called when a specific effect is set to stacks + void battleTriggerEffect(const BattleTriggerEffect & bte) override; //various one-shot effect + void battleStacksAttacked(const std::vector & bsa) override; + void battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side) override; //called by engine when battle starts; side=0 - left, side=1 - right + void battleStacksHealedRes(const std::vector > & healedStacks, bool lifeDrain, bool tentHeal, si32 lifeDrainFrom) override; //called when stacks are healed / resurrected + void battleNewStackAppeared(const CStack * stack) override; //not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned + void battleObstaclesRemoved(const std::set & removedObstacles) override; //called when a certain set of obstacles is removed from batlefield; IDs of them are given + void battleCatapultAttacked(const CatapultAttack & ca) override; //called when catapult makes an attack + void battleStacksRemoved(const BattleStacksRemoved & bsr) override; //called when certain stack is completely removed from battlefield + void battleObstaclePlaced(const CObstacleInstance &obstacle) override; + void yourTacticPhase(int distance) override; //-------------// void showArtifactAssemblyDialog(ui32 artifactID, ui32 assembleTo, bool assemble, CFunctionList onYes, CFunctionList onNo); diff --git a/client/CPreGame.cpp b/client/CPreGame.cpp index 33f4a3169..78a00b344 100644 --- a/client/CPreGame.cpp +++ b/client/CPreGame.cpp @@ -53,15 +53,15 @@ * */ namespace fs = boost::filesystem; -using boost::bind; -using boost::ref; +using std::bind; +using std::ref; #if _MSC_VER >= 1600 - //#define bind boost::bind - //#define ref boost::ref + //#define bind std::bind + //#define ref std::ref #endif -void startGame(StartInfo * options, CConnection *serv = NULL); +void startGame(StartInfo * options, CConnection *serv = nullptr); CGPreGame * CGP = nullptr; ISelectionScreenInfo *SEL; @@ -92,8 +92,8 @@ struct EvilHlpStruct } else { - serv = NULL; - sInfo = NULL; + serv = nullptr; + sInfo = nullptr; } } @@ -206,7 +206,7 @@ class CBaseForPGApply public: virtual void applyOnPG(CSelectionScreen *selScr, void *pack) const =0; virtual ~CBaseForPGApply(){}; - template static CBaseForPGApply *getApplier(const U * t=NULL) + template static CBaseForPGApply *getApplier(const U * t=nullptr) { return new CApplyOnPG; } @@ -222,7 +222,7 @@ public: } }; -static CApplier *applier = NULL; +static CApplier *applier = nullptr; static CPicture* createPicture(const JsonNode& config) { @@ -253,7 +253,7 @@ CMenuScreen::CMenuScreen(const JsonNode& configNode): //Hardcoded entry menuNameToEntry.push_back("credits"); - tabs = new CTabbedInt(boost::bind(&CMenuScreen::createTab, this, _1), CTabbedInt::DestroyFunc()); + tabs = new CTabbedInt(std::bind(&CMenuScreen::createTab, this, _1), CTabbedInt::DestroyFunc()); tabs->type |= REDRAW_PARENT; } @@ -302,8 +302,8 @@ void CMenuScreen::switchToTab(size_t index) tabs->setActive(index); } -//funciton for std::string -> boost::function conversion for main menu -static boost::function genCommand(CMenuScreen* menu, std::vector menuType, const std::string &string) +//funciton for std::string -> std::function conversion for main menu +static std::function genCommand(CMenuScreen* menu, std::vector menuType, const std::string &string) { static const std::vector commandType = boost::assign::list_of ("to")("campaigns")("start")("load")("exit")("highscores"); @@ -326,11 +326,11 @@ static boost::function genCommand(CMenuScreen* menu, std::vector genCommand(CMenuScreen* menu, std::vector; - case 2: return boost::bind(&CGPreGame::openSel, CGP, CMenuScreen::campaignList, CMenuScreen::SINGLE_PLAYER); - case 3: return boost::function();//TODO: start tutorial + case 2: return std::bind(&CGPreGame::openSel, CGP, CMenuScreen::campaignList, CMenuScreen::SINGLE_PLAYER); + case 3: return std::function();//TODO: start tutorial } } break; case 3://load { switch (std::find(gameType.begin(), gameType.end(), commands.front()) - gameType.begin()) { - case 0: return boost::bind(&CGPreGame::openSel, CGP, CMenuScreen::loadGame, CMenuScreen::SINGLE_PLAYER); - case 1: return boost::bind(&CGPreGame::openSel, CGP, CMenuScreen::loadGame, CMenuScreen::MULTI_HOT_SEAT); - case 2: return boost::function();//TODO: load campaign - case 3: return boost::function();//TODO: load tutorial + case 0: return std::bind(&CGPreGame::openSel, CGP, CMenuScreen::loadGame, CMenuScreen::SINGLE_PLAYER); + case 1: return std::bind(&CGPreGame::openSel, CGP, CMenuScreen::loadGame, CMenuScreen::MULTI_HOT_SEAT); + case 2: return std::function();//TODO: load campaign + case 3: return std::function();//TODO: load tutorial } } break; case 4://exit { - return boost::bind(CInfoWindow::showYesNoDialog, boost::ref(CGI->generaltexth->allTexts[69]), (const std::vector*)0, do_quit, 0, false, PlayerColor(1)); + return std::bind(CInfoWindow::showYesNoDialog, std::ref(CGI->generaltexth->allTexts[69]), (const std::vector*)0, do_quit, 0, false, PlayerColor(1)); } break; case 5://highscores { - return boost::function(); //TODO: high scores &pushIntT; + return std::function(); //TODO: high scores &pushIntT; } } } } logGlobal->errorStream()<<"Failed to parse command: "<(); + return std::function(); } CAdventureMapButton* CMenuEntry::createButton(CMenuScreen* parent, const JsonNode& button) { - boost::function command = genCommand(parent, parent->menuNameToEntry, button["command"].String()); + std::function command = genCommand(parent, parent->menuNameToEntry, button["command"].String()); std::pair help; if (!button["help"].isNull() && button["help"].Float() > 0) @@ -437,8 +437,8 @@ void CreditsScreen::show(SDL_Surface * to) SDL_SetClipRect(screen, &creditsArea); redraw(); CIntObject::showAll(to); - SDL_SetClipRect(screen, NULL); - SDL_SetClipRect(screenBuf, NULL); + SDL_SetClipRect(screen, nullptr); + SDL_SetClipRect(screenBuf, nullptr); //end of credits, close this screen if (credits->pos.y + credits->pos.h < 0) @@ -520,7 +520,7 @@ void CGPreGame::update() GH.updateTime(); GH.handleEvents(); - //if (GH.curInt == NULL) // no redraw, when a new game was created + //if (GH.curInt == nullptr) // no redraw, when a new game was created //return; GH.topInt()->show(screen); @@ -562,9 +562,9 @@ void CGPreGame::removeFromGui() GH.popInt(GH.topInt()); //remove background } -CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer /*= CMenuScreen::SINGLE_PLAYER*/, const std::map * Names /*= NULL*/, const std::string & Address /*=""*/, const std::string & Port /*= ""*/) - : ISelectionScreenInfo(Names), serverHandlingThread(NULL), mx(new boost::recursive_mutex), - serv(NULL), ongoingClosing(false), myNameID(255) +CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer /*= CMenuScreen::SINGLE_PLAYER*/, const std::map * Names /*= nullptr*/, const std::string & Address /*=""*/, const std::string & Port /*= ""*/) + : ISelectionScreenInfo(Names), serverHandlingThread(nullptr), mx(new boost::recursive_mutex), + serv(nullptr), ongoingClosing(false), myNameID(255) { CGPreGame::create(); //we depend on its graphics screenType = Type; @@ -574,7 +574,7 @@ CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMulti bool network = (MultiPlayer == CMenuScreen::MULTI_NETWORK_GUEST || MultiPlayer == CMenuScreen::MULTI_NETWORK_HOST); - CServerHandler *sh = NULL; + CServerHandler *sh = nullptr; if(multiPlayer == CMenuScreen::MULTI_NETWORK_HOST) { sh = new CServerHandler; @@ -605,16 +605,16 @@ CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMulti } sInfo.difficulty = 1; - current = NULL; + current = nullptr; sInfo.mode = (Type == CMenuScreen::newGame ? StartInfo::NEW_GAME : StartInfo::LOAD_GAME); sInfo.turnTime = 0; - curTab = NULL; + curTab = nullptr; card = new InfoCard(network); //right info card if (screenType == CMenuScreen::campaignList) { - opt = NULL; + opt = nullptr; } else { @@ -794,7 +794,7 @@ void CSelectionScreen::toggleTab(CIntObject *tab) } else { - curTab = NULL; + curTab = nullptr; }; GH.totalRedraw(); } @@ -814,7 +814,7 @@ void CSelectionScreen::changeSelection(const CMapInfo * to) SEL->sInfo.difficulty = to->scenarioOpts->difficulty; if(screenType != CMenuScreen::campaignList) { - updateStartInfo(to ? to->fileURI : "", sInfo, to ? to->mapHeader.get() : NULL); + updateStartInfo(to ? to->fileURI : "", sInfo, to ? to->mapHeader.get() : nullptr); if(screenType == CMenuScreen::newGame) { if(to && to->isRandomMap) @@ -910,7 +910,7 @@ void CSelectionScreen::startScenario() StartInfo * si = new StartInfo(sInfo); CGP->removeFromGui(); - CGP->showLoadingScreen(boost::bind(&startGame, si, (CConnection *)nullptr)); + CGP->showLoadingScreen(std::bind(&startGame, si, (CConnection *)nullptr)); } else { @@ -920,7 +920,7 @@ void CSelectionScreen::startScenario() saveGameName = "Saves/" + sel->txt->text; CFunctionList overWrite; - overWrite += boost::bind(&CCallback::save, LOCPLINT->cb.get(), saveGameName); + overWrite += std::bind(&CCallback::save, LOCPLINT->cb.get(), saveGameName); overWrite += bind(&CGuiHandler::popIntTotally, &GH, this); if(CResourceHandler::get()->existsResource(ResourceID(saveGameName, EResType::CLIENT_SAVEGAME))) @@ -950,7 +950,7 @@ void CSelectionScreen::handleConnection() assert(serv); while(serv) { - CPackForSelectionScreen *pack = NULL; + CPackForSelectionScreen *pack = nullptr; *serv >> pack; logNetwork->traceStream() << "Received a pack of type " << typeid(*pack).name(); assert(pack); @@ -1093,7 +1093,7 @@ void SelectionTab::filter( int size, bool selectFirst ) else { slider->block(true); - onSelect(NULL); + onSelect(nullptr); } } @@ -1189,14 +1189,14 @@ void SelectionTab::parseCampaigns(const std::vector & files ) } } -SelectionTab::SelectionTab(CMenuScreen::EState Type, const boost::function &OnSelect, CMenuScreen::EMultiMode MultiPlayer /*= CMenuScreen::SINGLE_PLAYER*/) - :bg(NULL), onSelect(OnSelect) +SelectionTab::SelectionTab(CMenuScreen::EState Type, const std::function &OnSelect, CMenuScreen::EMultiMode MultiPlayer /*= CMenuScreen::SINGLE_PLAYER*/) + :bg(nullptr), onSelect(OnSelect) { OBJ_CONSTRUCTION; selectionPos = 0; addUsedEvents(LCLICK | WHEEL | KEYBOARD | DOUBLECLICK); - slider = NULL; - txt = NULL; + slider = nullptr; + txt = nullptr; tabType = Type; if (Type != CMenuScreen::campaignList) @@ -1936,14 +1936,14 @@ void CChatBox::addNewMessage(const std::string &text) } InfoCard::InfoCard( bool Network ) - : bg(NULL), network(Network), chatOn(false), chat(NULL), playerListBg(NULL), - difficulty(NULL), sizes(NULL), sFlags(NULL) + : bg(nullptr), network(Network), chatOn(false), chat(nullptr), playerListBg(nullptr), + difficulty(nullptr), sizes(nullptr), sFlags(nullptr) { OBJ_CONSTRUCTION_CAPTURING_ALL; pos.x += 393; pos.y += 6; addUsedEvents(RCLICK); - mapDescription = NULL; + mapDescription = nullptr; Rect descriptionRect(26, 149, 320, 115); mapDescription = new CTextBox("", descriptionRect, 1); @@ -2244,7 +2244,7 @@ void InfoCard::setChat(bool activateChat) } OptionsTab::OptionsTab(): - turnDuration(NULL) + turnDuration(nullptr) { OBJ_CONSTRUCTION; bg = new CPicture("ADVOPTBK", 0, 6); @@ -2453,7 +2453,7 @@ void OptionsTab::setTurnLength( int npos ) void OptionsTab::flagPressed( PlayerColor color ) { PlayerSettings &clicked = SEL->sInfo.playerInfos[color]; - PlayerSettings *old = NULL; + PlayerSettings *old = nullptr; if(SEL->playerNames.size() == 1) //single player -> just swap { @@ -2564,7 +2564,7 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry( OptionsTab *owner, PlayerSet } else for(int i = 0; i < 6; i++) - btns[i] = NULL; + btns[i] = nullptr; selectButtons(); @@ -2586,7 +2586,7 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry( OptionsTab *owner, PlayerSet flag->hoverable = true; } else - flag = NULL; + flag = nullptr; town = new SelectedBox(Point(119, 2), s, TOWN); hero = new SelectedBox(Point(195, 2), s, HERO); @@ -3103,7 +3103,7 @@ CHotSeatPlayers::CHotSeatPlayers(const std::string &firstPlayer) for(int i = 0; i < ARRAY_COUNT(txt); i++) { txt[i] = new CTextInput(Rect(60, 85 + i*30, 280, 16), *bg); - txt[i]->cb += boost::bind(&CHotSeatPlayers::onChange, this, _1); + txt[i]->cb += std::bind(&CHotSeatPlayers::onChange, this, _1); } ok = new CAdventureMapButton(CGI->generaltexth->zelp[560], bind(&CHotSeatPlayers::enterSelectionScreen, this), 95, 338, "MUBCHCK.DEF", SDLK_RETURN); @@ -3195,7 +3195,7 @@ void CBonusSelection::init() { regions.push_back(new CRegion(this, true, true, g)); regions[regions.size()-1]->rclickText = ourCampaign->camp->scenarios[g].regionText; - if (highlightedRegion == NULL) + if (highlightedRegion == nullptr) { highlightedRegion = regions.back(); selectMap(g, true); @@ -3609,7 +3609,7 @@ void CBonusSelection::startMap() auto exitCb = [si]() { - CGP->showLoadingScreen(boost::bind(&startGame, si, (CConnection *)nullptr)); + CGP->showLoadingScreen(std::bind(&startGame, si, (CConnection *)nullptr)); }; if (scenario.prolog.hasPrologEpilog) @@ -3771,12 +3771,12 @@ CSavingScreen::~CSavingScreen() } -ISelectionScreenInfo::ISelectionScreenInfo(const std::map *Names /*= NULL*/) +ISelectionScreenInfo::ISelectionScreenInfo(const std::map *Names /*= nullptr*/) { multiPlayer = CMenuScreen::SINGLE_PLAYER; assert(!SEL); SEL = this; - current = NULL; + current = nullptr; if(Names && Names->size()) //if have custom set of player names - use it playerNames = *Names; @@ -3787,7 +3787,7 @@ ISelectionScreenInfo::ISelectionScreenInfo(const std::map *Nam ISelectionScreenInfo::~ISelectionScreenInfo() { assert(SEL == this); - SEL = NULL; + SEL = nullptr; } void ISelectionScreenInfo::updateStartInfo(std::string filename, StartInfo & sInfo, const CMapHeader * mapHeader) @@ -3953,11 +3953,11 @@ void StartWithCurrentSettings::apply(CSelectionScreen *selScreen) *selScreen->serv << this; //resend to confirm } - selScreen->serv = NULL; //hide it so it won't be deleted + selScreen->serv = nullptr; //hide it so it won't be deleted vstd::clear_pointer(selScreen->serverHandlingThread); //detach us saveGameName.clear(); - CGP->showLoadingScreen(boost::bind(&startGame, startingInfo.sInfo, startingInfo.serv)); + CGP->showLoadingScreen(std::bind(&startGame, startingInfo.sInfo, startingInfo.serv)); throw 666; //EVIL, EVIL, EVIL workaround to kill thread (does "goto catch" outside listening loop) } @@ -4037,7 +4037,7 @@ CAdventureMapButton* CCampaignScreen::createExitButton(const JsonNode& button) if (!button["help"].isNull() && button["help"].Float() > 0) help = CGI->generaltexth->zelp[button["help"].Float()]; - boost::function close = boost::bind(&CGuiHandler::popIntTotally, &GH, this); + std::function close = std::bind(&CGuiHandler::popIntTotally, &GH, this); return new CAdventureMapButton(help, close, button["x"].Float(), button["y"].Float(), button["name"].String(), button["hotkey"].Float()); } @@ -4074,7 +4074,7 @@ void CCampaignScreen::showAll(SDL_Surface *to) CMessage::drawBorder(PlayerColor(1), to, pos.w+28, pos.h+30, pos.x-14, pos.y-15); } -void CGPreGame::showLoadingScreen(boost::function loader) +void CGPreGame::showLoadingScreen(std::function loader) { if (GH.listInt.size() && GH.listInt.front() == CGP) //pregame active CGP->removeFromGui(); @@ -4090,7 +4090,7 @@ std::string CLoadingScreen::getBackground() return conf[ rand() % conf.size() ].String(); } -CLoadingScreen::CLoadingScreen(boost::function loader): +CLoadingScreen::CLoadingScreen(std::function loader): CWindowObject(BORDERED, getBackground()), loadingThread(loader) { @@ -4163,11 +4163,11 @@ CSimpleJoinScreen::CSimpleJoinScreen() title = new CTextBox("Enter address:", boxRect, 0, FONT_BIG, CENTER, Colors::WHITE); address = new CTextInput(Rect(25, 68, 175, 16), *bg); - address->cb += boost::bind(&CSimpleJoinScreen::onChange, this, _1); + address->cb += std::bind(&CSimpleJoinScreen::onChange, this, _1); port = new CTextInput(Rect(25, 115, 175, 16), *bg); - port->cb += boost::bind(&CSimpleJoinScreen::onChange, this, _1); - port->filters.add(boost::bind(&CTextInput::numberFilter, _1, _2, 0, 65535)); + port->cb += std::bind(&CSimpleJoinScreen::onChange, this, _1); + port->filters.add(std::bind(&CTextInput::numberFilter, _1, _2, 0, 65535)); ok = new CAdventureMapButton(CGI->generaltexth->zelp[560], bind(&CSimpleJoinScreen::enterSelectionScreen, this), 26, 142, "MUBCHCK.DEF", SDLK_RETURN); cancel = new CAdventureMapButton(CGI->generaltexth->zelp[561], bind(&CGuiHandler::popIntTotally, ref(GH), this), 142, 142, "MUBCANC.DEF", SDLK_ESCAPE); @@ -4184,7 +4184,7 @@ void CSimpleJoinScreen::enterSelectionScreen() std::string textPort = port->text; GH.popIntTotally(this); - GH.pushInt(new CSelectionScreen(CMenuScreen::newGame, CMenuScreen::MULTI_NETWORK_GUEST, NULL, textAddress, textPort)); + GH.pushInt(new CSelectionScreen(CMenuScreen::newGame, CMenuScreen::MULTI_NETWORK_GUEST, nullptr, textAddress, textPort)); } void CSimpleJoinScreen::onChange(const std::string & newText) diff --git a/client/CPreGame.h b/client/CPreGame.h index d5e4456b2..2ed3065bb 100644 --- a/client/CPreGame.h +++ b/client/CPreGame.h @@ -157,7 +157,7 @@ public: std::vector allItems; std::vector curItems; size_t selectionPos; - boost::function onSelect; + std::function onSelect; ESortBy sortingBy; bool ascending; @@ -181,7 +181,7 @@ public: void clickLeft(tribool down, bool previousState); void keyPressed(const SDL_KeyboardEvent & key); void onDoubleClick(); - SelectionTab(CMenuScreen::EState Type, const boost::function &OnSelect, CMenuScreen::EMultiMode MultiPlayer = CMenuScreen::SINGLE_PLAYER); + SelectionTab(CMenuScreen::EState Type, const std::function &OnSelect, CMenuScreen::EMultiMode MultiPlayer = CMenuScreen::SINGLE_PLAYER); ~SelectionTab(); }; @@ -321,7 +321,7 @@ public: StartInfo sInfo; std::map playerNames; // id of player <-> player name; 0 is reserved as ID of AI "players" - ISelectionScreenInfo(const std::map *Names = NULL); + ISelectionScreenInfo(const std::map *Names = nullptr); virtual ~ISelectionScreenInfo(); virtual void update(){}; virtual void propagateOptions() {}; @@ -359,7 +359,7 @@ public: bool ongoingClosing; ui8 myNameID; //used when networking - otherwise all player are "mine" - CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer = CMenuScreen::SINGLE_PLAYER, const std::map * Names = NULL, const std::string & Address = "", const std::string & Port = ""); + CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EMultiMode MultiPlayer = CMenuScreen::SINGLE_PLAYER, const std::map * Names = nullptr, const std::string & Address = "", const std::string & Port = ""); ~CSelectionScreen(); void toggleTab(CIntObject *tab); void changeSelection(const CMapInfo *to); @@ -591,7 +591,7 @@ public: static CGPreGame * create(); void removeFromGui(); - static void showLoadingScreen(boost::function loader); + static void showLoadingScreen(std::function loader); }; class CLoadingScreen : public CWindowObject @@ -600,7 +600,7 @@ class CLoadingScreen : public CWindowObject std::string getBackground(); public: - CLoadingScreen(boost::function loader); + CLoadingScreen(std::function loader); ~CLoadingScreen(); void showAll(SDL_Surface *to); diff --git a/client/CQuestLog.cpp b/client/CQuestLog.cpp index 735df8c84..a7a075047 100644 --- a/client/CQuestLog.cpp +++ b/client/CQuestLog.cpp @@ -66,7 +66,7 @@ void CQuestIcon::showAll(SDL_Surface * to) CQuestMinimap::CQuestMinimap (const Rect & position) : CMinimap (position), - currentQuest (NULL) + currentQuest (nullptr) { } @@ -90,7 +90,7 @@ void CQuestMinimap::addQuestMarks (const QuestInfo * q) CQuestIcon * pic = new CQuestIcon ("VwSymbol.def", 3, x, y); pic->moveBy (Point ( -pic->pos.w/2, -pic->pos.h/2)); - pic->callback = boost::bind (&CQuestMinimap::iconClicked, this); + pic->callback = std::bind (&CQuestMinimap::iconClicked, this); icons.push_back(pic); } @@ -119,9 +119,9 @@ void CQuestMinimap::showAll(SDL_Surface * to) CQuestLog::CQuestLog (const std::vector & Quests) : CWindowObject(PLAYER_COLORED, "QuestLog.pcx"), questIndex(0), - currentQuest(NULL), + currentQuest(nullptr), quests (Quests), - slider(NULL) + slider(nullptr) { OBJ_CONSTRUCTION_CAPTURING_ALL; init(); @@ -131,10 +131,10 @@ void CQuestLog::init() { minimap = new CQuestMinimap (Rect (47, 33, 144, 144)); description = new CTextBox ("", Rect(245, 33, 350, 355), 1, FONT_MEDIUM, TOPLEFT, Colors::WHITE); - ok = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second, boost::bind(&CQuestLog::close,this), 547, 401, "IOKAY.DEF", SDLK_RETURN); + ok = new CAdventureMapButton("",CGI->generaltexth->zelp[445].second, std::bind(&CQuestLog::close,this), 547, 401, "IOKAY.DEF", SDLK_RETURN); if (quests.size() > QUEST_COUNT) - slider = new CSlider(203, 199, 230, boost::bind (&CQuestLog::sliderMoved, this, _1), QUEST_COUNT, quests.size(), false, 0); + slider = new CSlider(203, 199, 230, std::bind (&CQuestLog::sliderMoved, this, _1), QUEST_COUNT, quests.size(), false, 0); for (int i = 0; i < quests.size(); ++i) { @@ -143,7 +143,7 @@ void CQuestLog::init() if (quests[i].obj) text.addReplacement (quests[i].obj->getHoverText()); //get name of the object CQuestLabel * label = new CQuestLabel (28, 199 + i * 24, FONT_SMALL, TOPLEFT, Colors::WHITE, text.toString()); - label->callback = boost::bind(&CQuestLog::selectQuest, this, i); + label->callback = std::bind(&CQuestLog::selectQuest, this, i); label->setBounds (172, 30); labels.push_back(label); } diff --git a/client/CQuestLog.h b/client/CQuestLog.h index 80558fa72..0400a964d 100644 --- a/client/CQuestLog.h +++ b/client/CQuestLog.h @@ -36,7 +36,7 @@ const int QUEST_COUNT = 9; class CQuestLabel : public LRClickableAreaWText, public CBoundedLabel { public: - boost::function callback; + std::function callback; CQuestLabel (int x=0, int y=0, EFonts Font = FONT_SMALL, EAlignment Align = TOPLEFT, const SDL_Color &Color = Colors::WHITE, const std::string &Text = "") : CBoundedLabel (x, y, FONT_SMALL, TOPLEFT, Colors::WHITE, Text){}; @@ -47,7 +47,7 @@ public: class CQuestIcon : public CAnimImage { public: - boost::function callback; //TODO: merge with other similiar classes? + std::function callback; //TODO: merge with other similiar classes? CQuestIcon (const std::string &defname, int index, int x=0, int y=0); diff --git a/client/CSpellWindow.cpp b/client/CSpellWindow.cpp index 9e677ae64..75c83b932 100644 --- a/client/CSpellWindow.cpp +++ b/client/CSpellWindow.cpp @@ -31,8 +31,8 @@ * */ -SpellbookInteractiveArea::SpellbookInteractiveArea(const SDL_Rect & myRect, boost::function funcL, - const std::string & textR, boost::function funcHon, boost::function funcHoff, CPlayerInterface * _myInt) +SpellbookInteractiveArea::SpellbookInteractiveArea(const SDL_Rect & myRect, std::function funcL, + const std::string & textR, std::function funcHon, std::function funcHoff, CPlayerInterface * _myInt) { addUsedEvents(LCLICK | RCLICK | HOVER); pos = myRect; @@ -159,29 +159,29 @@ CSpellWindow::CSpellWindow(const SDL_Rect &, const CGHeroInstance * _myHero, CPl statusBar = new CGStatusBar(7 + pos.x, 569 + pos.y, "Spelroll.bmp"); SDL_Rect temp_rect = genRect(45, 35, 479 + pos.x, 405 + pos.y); - exitBtn = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::fexitb, this), CGI->generaltexth->zelp[460].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[460].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + exitBtn = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::fexitb, this), CGI->generaltexth->zelp[460].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[460].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(45, 35, 221 + pos.x, 405 + pos.y); - battleSpells = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::fbattleSpellsb, this), CGI->generaltexth->zelp[453].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[453].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + battleSpells = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::fbattleSpellsb, this), CGI->generaltexth->zelp[453].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[453].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(45, 35, 355 + pos.x, 405 + pos.y); - adventureSpells = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::fadvSpellsb, this), CGI->generaltexth->zelp[452].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[452].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + adventureSpells = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::fadvSpellsb, this), CGI->generaltexth->zelp[452].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[452].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(45, 35, 418 + pos.x, 405 + pos.y); - manaPoints = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::fmanaPtsb, this), CGI->generaltexth->zelp[459].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[459].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + manaPoints = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::fmanaPtsb, this), CGI->generaltexth->zelp[459].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[459].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(36, 56, 549 + pos.x, 94 + pos.y); - selectSpellsA = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::selectSchool, this, 0), CGI->generaltexth->zelp[454].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[454].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + selectSpellsA = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 0), CGI->generaltexth->zelp[454].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[454].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(36, 56, 549 + pos.x, 151 + pos.y); - selectSpellsE = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::selectSchool, this, 3), CGI->generaltexth->zelp[457].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[457].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + selectSpellsE = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 3), CGI->generaltexth->zelp[457].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[457].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(36, 56, 549 + pos.x, 210 + pos.y); - selectSpellsF = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::selectSchool, this, 1), CGI->generaltexth->zelp[455].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[455].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + selectSpellsF = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 1), CGI->generaltexth->zelp[455].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[455].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(36, 56, 549 + pos.x, 270 + pos.y); - selectSpellsW = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::selectSchool, this, 2), CGI->generaltexth->zelp[456].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[456].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + selectSpellsW = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 2), CGI->generaltexth->zelp[456].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[456].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(36, 56, 549 + pos.x, 330 + pos.y); - selectSpellsAll = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::selectSchool, this, 4), CGI->generaltexth->zelp[458].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[458].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + selectSpellsAll = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 4), CGI->generaltexth->zelp[458].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[458].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(leftCorner->h, leftCorner->w, 97 + pos.x, 77 + pos.y); - lCorner = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::fLcornerb, this), CGI->generaltexth->zelp[450].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[450].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + lCorner = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::fLcornerb, this), CGI->generaltexth->zelp[450].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[450].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); temp_rect = genRect(rightCorner->h, rightCorner->w, 487 + pos.x, 72 + pos.y); - rCorner = new SpellbookInteractiveArea(temp_rect, boost::bind(&CSpellWindow::fRcornerb, this), CGI->generaltexth->zelp[451].second, boost::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[451].first)), boost::bind(&CGStatusBar::clear, statusBar), myInt); + rCorner = new SpellbookInteractiveArea(temp_rect, std::bind(&CSpellWindow::fRcornerb, this), CGI->generaltexth->zelp[451].second, std::bind(&CGStatusBar::print, statusBar, (CGI->generaltexth->zelp[451].first)), std::bind(&CGStatusBar::clear, statusBar), myInt); //areas for spells int xpos = 117 + pos.x, ypos = 90 + pos.y; @@ -758,7 +758,7 @@ void CSpellWindow::SpellArea::clickLeft(tribool down, bool previousState) for(size_t i=0;ivisitingHero == NULL) //empty town and this is + if (t->visitingHero == nullptr) //empty town and this is { availableTowns.push_back(t->id.getNum());//add to the list } @@ -769,7 +769,7 @@ void CSpellWindow::SpellArea::clickLeft(tribool down, bool previousState) GH.pushInt (new CObjectListWindow(availableTowns, new CPicture(graphics->spellscr->ourImages[spell].bitmap, 0, 0, false), CGI->generaltexth->jktexts[40], CGI->generaltexth->jktexts[41], - boost::bind (&CSpellWindow::teleportTo, owner, _1, h))); + std::bind (&CSpellWindow::teleportTo, owner, _1, h))); } return; } @@ -790,7 +790,7 @@ void CSpellWindow::SpellArea::clickRight(tribool down, bool previousState) { std::string dmgInfo; const CGHeroInstance * hero = owner->myHero; - int causedDmg = owner->myInt->cb->estimateSpellDamage( CGI->spellh->spells[mySpell], (hero ? hero : NULL)); + int causedDmg = owner->myInt->cb->estimateSpellDamage( CGI->spellh->spells[mySpell], (hero ? hero : nullptr)); if(causedDmg == 0 || mySpell == 57) //Titan's Lightning Bolt already has damage info included dmgInfo = ""; else diff --git a/client/CSpellWindow.h b/client/CSpellWindow.h index 8b9b6779c..dcfffde3d 100644 --- a/client/CSpellWindow.h +++ b/client/CSpellWindow.h @@ -24,18 +24,18 @@ class CPlayerInterface; class SpellbookInteractiveArea : public CIntObject { private: - boost::function onLeft; + std::function onLeft; std::string textOnRclick; - boost::function onHoverOn; - boost::function onHoverOff; + std::function onHoverOn; + std::function onHoverOff; CPlayerInterface * myInt; public: void clickLeft(tribool down, bool previousState); void clickRight(tribool down, bool previousState); void hover(bool on); - SpellbookInteractiveArea(const SDL_Rect & myRect, boost::function funcL, const std::string & textR, - boost::function funcHon, boost::function funcHoff, CPlayerInterface * _myInt);//c-tor + SpellbookInteractiveArea(const SDL_Rect & myRect, std::function funcL, const std::string & textR, + std::function funcHon, std::function funcHoff, CPlayerInterface * _myInt);//c-tor }; /// The spell window diff --git a/client/CVideoHandler.cpp b/client/CVideoHandler.cpp index 4078a7f86..1a8269bcd 100644 --- a/client/CVideoHandler.cpp +++ b/client/CVideoHandler.cpp @@ -23,9 +23,6 @@ static bool keyDown() #ifdef _WIN32 -#include - - void checkForError(bool throwing = true) { int error = GetLastError(); @@ -34,13 +31,13 @@ void checkForError(bool throwing = true) logGlobal->errorStream() << "Error " << error << " encountered!"; std::string msg; - char* pTemp = NULL; + char* pTemp = nullptr; FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, error, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR)&pTemp, 1, NULL ); + nullptr, error, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR)&pTemp, 1, nullptr ); logGlobal->errorStream() << "Error: " << pTemp; msg = pTemp; LocalFree( pTemp ); - pTemp = NULL; + pTemp = nullptr; if(throwing) throw std::runtime_error(msg); } @@ -75,7 +72,7 @@ void *DLLHandler::FindAddress(const char *symbol) if(!dll) { logGlobal->errorStream() << "Cannot look for " << symbol << " because DLL hasn't been appropriately loaded!"; - return NULL; + return nullptr; } ret = (void*) GetProcAddress(dll,symbol); if(!ret) @@ -100,7 +97,7 @@ DLLHandler::~DLLHandler() DLLHandler::DLLHandler() { - dll = NULL; + dll = nullptr; } CBIKHandler::CBIKHandler() @@ -117,10 +114,10 @@ CBIKHandler::CBIKHandler() binkClose = (BinkClose)FindAddress("_BinkClose@4"); - hBinkFile = NULL; - hBink = NULL; + hBinkFile = nullptr; + hBink = nullptr; - buffer = NULL; + buffer = nullptr; bufferSize = 0; } @@ -131,7 +128,7 @@ bool CBIKHandler::open(std::string name) name.c_str(), // file name GENERIC_READ, // access mode FILE_SHARE_READ, // share mode - NULL, // Security Descriptor + nullptr, // Security Descriptor OPEN_EXISTING, // how to create FILE_ATTRIBUTE_NORMAL,//FILE_FLAG_SEQUENTIAL_SCAN, // file attributes 0 // handle to template file @@ -146,7 +143,7 @@ bool CBIKHandler::open(std::string name) { void *waveout = GetProcAddress(dll,"_BinkOpenWaveOut@4"); if(waveout) - binkSetSoundSystem(waveout,NULL); + binkSetSoundSystem(waveout,nullptr); } @@ -162,7 +159,7 @@ bool CBIKHandler::open(std::string name) checkErrorAndClean: CloseHandle(hBinkFile); - hBinkFile = NULL; + hBinkFile = nullptr; checkForError(); throw std::runtime_error("BIK failed opening video!"); } @@ -213,12 +210,12 @@ bool CBIKHandler::nextFrame() void CBIKHandler::close() { binkClose(hBink); - hBink = NULL; + hBink = nullptr; CloseHandle(hBinkFile); - hBinkFile = NULL; + hBinkFile = nullptr; delete [] buffer; - buffer = NULL; + buffer = nullptr; bufferSize = 0; } @@ -256,7 +253,7 @@ void CBIKHandler::allocBuffer(int Bpp) void CBIKHandler::freeBuffer() { delete [] buffer; - buffer = NULL; + buffer = nullptr; bufferSize = 0; } @@ -271,7 +268,7 @@ bool CSmackPlayer::wait() return ptrSmackWait(data); } -CSmackPlayer::CSmackPlayer() : data(NULL) +CSmackPlayer::CSmackPlayer() : data(nullptr) { Instantiate("smackw32.dll"); ptrSmackNextFrame = (SmackNextFrame)FindAddress("_SmackNextFrame@4"); @@ -293,7 +290,7 @@ CSmackPlayer::~CSmackPlayer() void CSmackPlayer::close() { ptrSmackClose(data); - data = NULL; + data = nullptr; } bool CSmackPlayer::open( std::string name ) @@ -397,7 +394,7 @@ void CSmackPlayer::redraw( int x, int y, SDL_Surface *dst, bool update ) CVideoPlayer::CVideoPlayer() { - current = NULL; + current = nullptr; } CVideoPlayer::~CVideoPlayer() @@ -452,7 +449,7 @@ void CVideoPlayer::close() } current->close(); - current = NULL; + current = nullptr; if(!DeleteFileA(fname.c_str())) { logGlobal->errorStream() << "Cannot remove temporarily extracted video file: " << fname; @@ -594,12 +591,12 @@ static si64 lodSeek(void * opaque, si64 pos, int whence) CVideoPlayer::CVideoPlayer() { - format = NULL; - frame = NULL; - codec = NULL; - sws = NULL; - overlay = NULL; - dest = NULL; + format = nullptr; + frame = nullptr; + codec = nullptr; + sws = nullptr; + overlay = nullptr; + dest = nullptr; context = nullptr; // Register codecs. TODO: May be overkill. Should call a @@ -637,7 +634,7 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) static const int BUFFER_SIZE = 4096; unsigned char * buffer = (unsigned char *)av_malloc(BUFFER_SIZE);// will be freed by ffmpeg - context = avio_alloc_context( buffer, BUFFER_SIZE, 0, (void *)this, lodRead, NULL, lodSeek); + context = avio_alloc_context( buffer, BUFFER_SIZE, 0, (void *)this, lodRead, nullptr, lodSeek); format = avformat_alloc_context(); format->pb = context; @@ -652,7 +649,7 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 17, 0) if (av_find_stream_info(format) < 0) #else - if (avformat_find_stream_info(format, NULL) < 0) + if (avformat_find_stream_info(format, nullptr) < 0) #endif return false; @@ -677,7 +674,7 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) // Find the decoder for the video stream codec = avcodec_find_decoder(codecContext->codec_id); - if (codec == NULL) + if (codec == nullptr) { // Unsupported codec return false; @@ -687,11 +684,11 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 6, 0) if ( avcodec_open(codecContext, codec) < 0 ) #else - if ( avcodec_open2(codecContext, codec, NULL) < 0 ) + if ( avcodec_open2(codecContext, codec, nullptr) < 0 ) #endif { // Could not open codec - codec = NULL; + codec = nullptr; return false; } @@ -712,7 +709,7 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) destRect.h = codecContext->height; } - if (overlay == NULL && dest == NULL) + if (overlay == nullptr && dest == nullptr) return false; // Convert the image into YUV format that SDL uses @@ -720,7 +717,7 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) { sws = sws_getContext(codecContext->width, codecContext->height, codecContext->pix_fmt, codecContext->width, codecContext->height, - PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL); + PIX_FMT_YUV420P, SWS_BICUBIC, nullptr, nullptr, nullptr); } else { @@ -751,10 +748,10 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay) sws = sws_getContext(codecContext->width, codecContext->height, codecContext->pix_fmt, codecContext->width, codecContext->height, - screenFormat, SWS_BICUBIC, NULL, NULL, NULL); + screenFormat, SWS_BICUBIC, nullptr, nullptr, nullptr); } - if (sws == NULL) + if (sws == nullptr) return false; pos.w = codecContext->width; @@ -770,7 +767,7 @@ bool CVideoPlayer::nextFrame() int frameFinished = 0; bool gotError = false; - if (sws == NULL) + if (sws == nullptr) return false; while(!frameFinished) @@ -841,7 +838,7 @@ bool CVideoPlayer::nextFrame() void CVideoPlayer::show( int x, int y, SDL_Surface *dst, bool update ) { - if (sws == NULL) + if (sws == nullptr) return; pos.x = x; @@ -859,7 +856,7 @@ void CVideoPlayer::redraw( int x, int y, SDL_Surface *dst, bool update ) void CVideoPlayer::update( int x, int y, SDL_Surface *dst, bool forceRedraw, bool update ) { - if (sws == NULL) + if (sws == nullptr) return; if (refreshCount <= 0) @@ -892,39 +889,39 @@ void CVideoPlayer::close() if (sws) { sws_freeContext(sws); - sws = NULL; + sws = nullptr; } if (overlay) { SDL_FreeYUVOverlay(overlay); - overlay = NULL; + overlay = nullptr; } if (dest) { SDL_FreeSurface(dest); - dest = NULL; + dest = nullptr; } if (frame) { av_free(frame); - frame = NULL; + frame = nullptr; } if (codec) { avcodec_close(codecContext); - codec = NULL; - codecContext = NULL; + codec = nullptr; + codecContext = nullptr; } if (format) { #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 17, 0) av_close_input_file(format); - format = NULL; + format = nullptr; #else avformat_close_input(&format); #endif diff --git a/client/Client.cpp b/client/Client.cpp index 851eb5851..9e1bdbf29 100644 --- a/client/Client.cpp +++ b/client/Client.cpp @@ -58,7 +58,7 @@ public: virtual void applyOnClBefore(CClient *cl, void *pack) const =0; virtual ~CBaseForCLApply(){} - template static CBaseForCLApply *getApplier(const U * t=NULL) + template static CBaseForCLApply *getApplier(const U * t=nullptr) { return new CApplyOnCL; } @@ -136,7 +136,7 @@ void CClient::run() setThreadName("CClient::run"); try { - CPack *pack = NULL; + CPack *pack = nullptr; while(!terminate) { pack = serv->retreivePack(); //get the package from the server @@ -144,12 +144,12 @@ void CClient::run() if (terminate) { delete pack; - pack = NULL; + pack = nullptr; break; } handlePack(pack); - pack = NULL; + pack = nullptr; } } //catch only asio exceptions @@ -189,7 +189,7 @@ void CClient::endGame( bool closeConnection /*= true*/ ) stopConnection(); logNetwork->infoStream() << "Closed connection."; - GH.curInt = NULL; + GH.curInt = nullptr; LOCPLINT->terminate_cond.setn(true); { boost::unique_lock un(*LOCPLINT->pim); @@ -198,14 +198,14 @@ void CClient::endGame( bool closeConnection /*= true*/ ) GH.topInt()->deactivate(); GH.listInt.clear(); GH.objsToBlit.clear(); - GH.statusbar = NULL; + GH.statusbar = nullptr; logNetwork->infoStream() << "Removed GUI."; vstd::clear_pointer(const_cast(CGI)->mh); vstd::clear_pointer(gs); logNetwork->infoStream() << "Deleted mapHandler and gameState."; - LOCPLINT = NULL; + LOCPLINT = nullptr; } playerint.clear(); @@ -297,7 +297,7 @@ void CClient::newGame( CConnection *con, StartInfo *si ) { enum {SINGLE, HOST, GUEST} networkMode = SINGLE; - if (con == NULL) + if (con == nullptr) { CServerHandler sh; serv = sh.connectToServer(); @@ -556,14 +556,14 @@ void CClient::stopConnection() logNetwork->infoStream() << "Connection handler thread joined"; delete connectionHandler; - connectionHandler = NULL; + connectionHandler = nullptr; } if (serv) //and delete connection { serv->close(); delete serv; - serv = NULL; + serv = nullptr; logNetwork->warnStream() << "Our socket has been closed."; } } @@ -660,7 +660,7 @@ void CClient::commenceTacticPhaseForInt(shared_ptr battleI } HANDLE_EXCEPTION } -void CClient::invalidatePaths(const CGHeroInstance *h /*= NULL*/) +void CClient::invalidatePaths(const CGHeroInstance *h /*= nullptr*/) { if(!h || pathInfo->hero == h) pathInfo->isValid = false; @@ -807,8 +807,8 @@ CConnection * CServerHandler::connectToServer() CServerHandler::CServerHandler(bool runServer /*= false*/) { - serverThread = NULL; - shared = NULL; + serverThread = nullptr; + shared = nullptr; port = boost::lexical_cast(settings["server"]["port"].Float()); verbose = true; @@ -843,7 +843,7 @@ void CServerHandler::callServer() CConnection * CServerHandler::justConnectToServer(const std::string &host, const std::string &port) { - CConnection *ret = NULL; + CConnection *ret = nullptr; while(!ret) { try diff --git a/client/Client.h b/client/Client.h index 582c12fef..8ebb49d98 100644 --- a/client/Client.h +++ b/client/Client.h @@ -30,8 +30,6 @@ class CScriptingModule; struct CPathsInfo; namespace boost { class thread; } -void processCommand(const std::string &message, CClient *&client); - /// structure to handle running server and connecting to it class CServerHandler { @@ -156,7 +154,7 @@ public: void campaignMapFinished( shared_ptr camp ); void finishCampaign( shared_ptr camp ); void proposeNextMission(shared_ptr camp); - void invalidatePaths(const CGHeroInstance *h = NULL); //invalidates paths for hero h or for any hero if h is NULL => they'll got recalculated when the next query comes + void invalidatePaths(const CGHeroInstance *h = nullptr); //invalidates paths for hero h or for any hero if h is nullptr => they'll got recalculated when the next query comes void calculatePaths(const CGHeroInstance *h); void updatePaths(); //calls calculatePaths for same hero for which we previously calculated paths @@ -164,74 +162,73 @@ public: boost::thread *connectionHandler; //thread running run() method ////////////////////////////////////////////////////////////////////////// - virtual PlayerColor getLocalPlayer() const OVERRIDE; + virtual PlayerColor getLocalPlayer() const override; ////////////////////////////////////////////////////////////////////////// //not working yet, will be implement somewhen later with support for local-sim-based gameplay - void changeSpells(const CGHeroInstance * hero, bool give, const std::set &spells) OVERRIDE {}; - bool removeObject(const CGObjectInstance * obj) OVERRIDE {return false;}; - void setBlockVis(ObjectInstanceID objid, bool bv) OVERRIDE {}; - void setOwner(const CGObjectInstance * obj, PlayerColor owner) OVERRIDE {}; - void setHoverName(const CGObjectInstance * obj, MetaString * name) OVERRIDE {}; - void changePrimSkill(const CGHeroInstance * hero, PrimarySkill::PrimarySkill which, si64 val, bool abs=false) OVERRIDE {}; - void changeSecSkill(const CGHeroInstance * hero, SecondarySkill which, int val, bool abs=false) OVERRIDE {}; + void changeSpells(const CGHeroInstance * hero, bool give, const std::set &spells) override {}; + bool removeObject(const CGObjectInstance * obj) override {return false;}; + void setBlockVis(ObjectInstanceID objid, bool bv) override {}; + void setOwner(const CGObjectInstance * obj, PlayerColor owner) override {}; + void setHoverName(const CGObjectInstance * obj, MetaString * name) override {}; + void changePrimSkill(const CGHeroInstance * hero, PrimarySkill::PrimarySkill which, si64 val, bool abs=false) override {}; + void changeSecSkill(const CGHeroInstance * hero, SecondarySkill which, int val, bool abs=false) override {}; - void showBlockingDialog(BlockingDialog *iw) OVERRIDE {}; - void showGarrisonDialog(ObjectInstanceID upobj, ObjectInstanceID hid, bool removableUnits) OVERRIDE {}; - void showThievesGuildWindow(PlayerColor player, ObjectInstanceID requestingObjId) OVERRIDE {}; - void giveResource(PlayerColor player, Res::ERes which, int val) OVERRIDE {}; - virtual void giveResources(PlayerColor player, TResources resources) OVERRIDE {}; + void showBlockingDialog(BlockingDialog *iw) override {}; + void showGarrisonDialog(ObjectInstanceID upobj, ObjectInstanceID hid, bool removableUnits) override {}; + void showThievesGuildWindow(PlayerColor player, ObjectInstanceID requestingObjId) override {}; + void giveResource(PlayerColor player, Res::ERes which, int val) override {}; + virtual void giveResources(PlayerColor player, TResources resources) override {}; - void giveCreatures(const CArmedInstance * objid, const CGHeroInstance * h, const CCreatureSet &creatures, bool remove) OVERRIDE {}; - void takeCreatures(ObjectInstanceID objid, const std::vector &creatures) OVERRIDE {}; - bool changeStackType(const StackLocation &sl, CCreature *c) OVERRIDE {return false;}; - bool changeStackCount(const StackLocation &sl, TQuantity count, bool absoluteValue = false) OVERRIDE {return false;}; - bool insertNewStack(const StackLocation &sl, const CCreature *c, TQuantity count) OVERRIDE {return false;}; + void giveCreatures(const CArmedInstance * objid, const CGHeroInstance * h, const CCreatureSet &creatures, bool remove) override {}; + void takeCreatures(ObjectInstanceID objid, const std::vector &creatures) override {}; + bool changeStackType(const StackLocation &sl, CCreature *c) override {return false;}; + bool changeStackCount(const StackLocation &sl, TQuantity count, bool absoluteValue = false) override {return false;}; + bool insertNewStack(const StackLocation &sl, const CCreature *c, TQuantity count) override {return false;}; bool eraseStack(const StackLocation &sl, bool forceRemoval = false){return false;}; - bool swapStacks(const StackLocation &sl1, const StackLocation &sl2) OVERRIDE {return false;} - bool addToSlot(const StackLocation &sl, const CCreature *c, TQuantity count) OVERRIDE {return false;} - void tryJoiningArmy(const CArmedInstance *src, const CArmedInstance *dst, bool removeObjWhenFinished, bool allowMerging) OVERRIDE {} - bool moveStack(const StackLocation &src, const StackLocation &dst, TQuantity count = -1) OVERRIDE {return false;} + bool swapStacks(const StackLocation &sl1, const StackLocation &sl2) override {return false;} + bool addToSlot(const StackLocation &sl, const CCreature *c, TQuantity count) override {return false;} + void tryJoiningArmy(const CArmedInstance *src, const CArmedInstance *dst, bool removeObjWhenFinished, bool allowMerging) override {} + bool moveStack(const StackLocation &src, const StackLocation &dst, TQuantity count = -1) override {return false;} - void removeAfterVisit(const CGObjectInstance *object) OVERRIDE {}; + void removeAfterVisit(const CGObjectInstance *object) override {}; - void giveHeroNewArtifact(const CGHeroInstance *h, const CArtifact *artType, ArtifactPosition pos) OVERRIDE {}; - void giveHeroArtifact(const CGHeroInstance *h, const CArtifactInstance *a, ArtifactPosition pos) OVERRIDE {}; - void putArtifact(const ArtifactLocation &al, const CArtifactInstance *a) OVERRIDE {}; - void removeArtifact(const ArtifactLocation &al) OVERRIDE {}; - bool moveArtifact(const ArtifactLocation &al1, const ArtifactLocation &al2) OVERRIDE {return false;}; - void synchronizeArtifactHandlerLists() OVERRIDE {}; + void giveHeroNewArtifact(const CGHeroInstance *h, const CArtifact *artType, ArtifactPosition pos) override {}; + void giveHeroArtifact(const CGHeroInstance *h, const CArtifactInstance *a, ArtifactPosition pos) override {}; + void putArtifact(const ArtifactLocation &al, const CArtifactInstance *a) override {}; + void removeArtifact(const ArtifactLocation &al) override {}; + bool moveArtifact(const ArtifactLocation &al1, const ArtifactLocation &al2) override {return false;}; + void synchronizeArtifactHandlerLists() override {}; - void showCompInfo(ShowInInfobox * comp) OVERRIDE {}; - void heroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) OVERRIDE {}; - void stopHeroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) OVERRIDE {}; + void showCompInfo(ShowInInfobox * comp) override {}; + void heroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) override {}; + void stopHeroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) override {}; //void giveHeroArtifact(int artid, int hid, int position){}; //void giveNewArtifact(int hid, int position){}; - void startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank = false, const CGTownInstance *town = NULL) OVERRIDE {}; //use hero=NULL for no hero - void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, bool creatureBank = false) OVERRIDE {}; //if any of armies is hero, hero will be used - void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, bool creatureBank = false) OVERRIDE {}; //if any of armies is hero, hero will be used, visitable tile of second obj is place of battle - void setAmount(ObjectInstanceID objid, ui32 val) OVERRIDE {}; - bool moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, PlayerColor asker = PlayerColor::NEUTRAL) OVERRIDE {return false;}; - void giveHeroBonus(GiveBonus * bonus) OVERRIDE {}; - void setMovePoints(SetMovePoints * smp) OVERRIDE {}; - void setManaPoints(ObjectInstanceID hid, int val) OVERRIDE {}; - void giveHero(ObjectInstanceID id, PlayerColor player) OVERRIDE {}; - void changeObjPos(ObjectInstanceID objid, int3 newPos, ui8 flags) OVERRIDE {}; - void sendAndApply(CPackForClient * info) OVERRIDE {}; - void heroExchange(ObjectInstanceID hero1, ObjectInstanceID hero2) OVERRIDE {}; + void startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank = false, const CGTownInstance *town = nullptr) override {}; //use hero=nullptr for no hero + void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, bool creatureBank = false) override {}; //if any of armies is hero, hero will be used + void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, bool creatureBank = false) override {}; //if any of armies is hero, hero will be used, visitable tile of second obj is place of battle + void setAmount(ObjectInstanceID objid, ui32 val) override {}; + bool moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, PlayerColor asker = PlayerColor::NEUTRAL) override {return false;}; + void giveHeroBonus(GiveBonus * bonus) override {}; + void setMovePoints(SetMovePoints * smp) override {}; + void setManaPoints(ObjectInstanceID hid, int val) override {}; + void giveHero(ObjectInstanceID id, PlayerColor player) override {}; + void changeObjPos(ObjectInstanceID objid, int3 newPos, ui8 flags) override {}; + void sendAndApply(CPackForClient * info) override {}; + void heroExchange(ObjectInstanceID hero1, ObjectInstanceID hero2) override {}; ////////////////////////////////////////////////////////////////////////// friend class CCallback; //handling players actions friend class CBattleCallback; //handling players actions - friend void processCommand(const std::string &message, CClient *&client); //handling console - + int sendRequest(const CPack *request, PlayerColor player); //returns ID given to that request void handlePack( CPack * pack ); //applies the given pack and deletes it void battleStarted(const BattleInfo * info); void commenceTacticPhaseForInt(shared_ptr battleInt); //will be called as separate thread - void commitPackage(CPackForClient *pack) OVERRIDE; + void commitPackage(CPackForClient *pack) override; ////////////////////////////////////////////////////////////////////////// diff --git a/client/GUIClasses.cpp b/client/GUIClasses.cpp index 5600d9014..a93b781a8 100644 --- a/client/GUIClasses.cpp +++ b/client/GUIClasses.cpp @@ -236,7 +236,7 @@ void CGarrisonSlot::hover (bool on) else { logGlobal->warnStream() << "Warning - shouldn't be - highlighted void slot "<getSelection(); - logGlobal->warnStream() << "Highlighted set to NULL"; + logGlobal->warnStream() << "Highlighted set to nullptr"; owner->selectSlot(nullptr); } } @@ -319,10 +319,10 @@ void CGarrisonSlot::clickLeft(tribool down, bool previousState) bool canUpgrade = getObj()->tempOwner == LOCPLINT->playerID && pom.oldID>=0; //upgrade is possible bool canDismiss = getObj()->tempOwner == LOCPLINT->playerID && (getObj()->stacksCount()>1 || !getObj()->needsLastStack()); - boost::function upgr = NULL; - boost::function dism = NULL; - if (canUpgrade) upgr = boost::bind(&CCallback::upgradeCreature, LOCPLINT->cb.get(), getObj(), ID, pom.newID[0]); - if (canDismiss) dism = boost::bind(&CCallback::dismissCreature, LOCPLINT->cb.get(), getObj(), ID); + std::function upgr = nullptr; + std::function dism = nullptr; + if (canUpgrade) upgr = std::bind(&CCallback::upgradeCreature, LOCPLINT->cb.get(), getObj(), ID, pom.newID[0]); + if (canDismiss) dism = std::bind(&CCallback::dismissCreature, LOCPLINT->cb.get(), getObj(), ID); owner->selectSlot(nullptr); owner->setSplittingMode(false); @@ -373,7 +373,7 @@ void CGarrisonSlot::clickLeft(tribool down, bool previousState) int countLeft = owner->getSelection()->myStack ? owner->getSelection()->myStack->count : 0; int countRight = myStack ? myStack->count : 0; - GH.pushInt(new CSplitWindow(owner->getSelection()->creature, boost::bind(&CGarrisonInt::splitStacks, owner, _1, _2), + GH.pushInt(new CSplitWindow(owner->getSelection()->creature, std::bind(&CGarrisonInt::splitStacks, owner, _1, _2), minLeft, minRight, countLeft, countRight)); refr = true; } @@ -447,7 +447,7 @@ void CGarrisonSlot::update() { addUsedEvents(LCLICK | RCLICK | HOVER); myStack = getObj()->getStackPtr(ID); - creature = myStack ? myStack->type : NULL; + creature = myStack ? myStack->type : nullptr; } else { @@ -533,7 +533,7 @@ void CGarrisonInt::createSet(std::vector &ret, const CCreatureSe for(int i=0; iborderColor = Colors::METALLIC_GOLD; button->borderEnabled = true; button->callback.add(Buttons[i].second); //each button will close the window apart from call-defined actions @@ -690,7 +690,7 @@ CInfoWindow::CInfoWindow() { ID = QueryID(-1); setDelComps(false); - text = NULL; + text = nullptr; } void CInfoWindow::close() @@ -735,7 +735,7 @@ void CInfoWindow::showYesNoDialog(const std::string & text, const std::vector *components /*= NULL*/, bool DelComps) +CInfoWindow * CInfoWindow::create(const std::string &text, PlayerColor playerID /*= 1*/, const std::vector *components /*= nullptr*/, bool DelComps) { std::vector > > pom; pom.push_back(std::pair >("IOKAY.DEF",0)); @@ -1030,7 +1030,7 @@ void CSelectableComponent::init() selected = false; } -CSelectableComponent::CSelectableComponent(const Component &c, boost::function OnSelect): +CSelectableComponent::CSelectableComponent(const Component &c, std::function OnSelect): CComponent(c),onSelect(OnSelect) { type |= REDRAW_PARENT; @@ -1038,7 +1038,7 @@ CSelectableComponent::CSelectableComponent(const Component &c, boost::function OnSelect): +CSelectableComponent::CSelectableComponent(Etype Type, int Sub, int Val, ESize imageSize, std::function OnSelect): CComponent(Type,Sub,Val, imageSize),onSelect(OnSelect) { type |= REDRAW_PARENT; @@ -1229,7 +1229,7 @@ CComponentBox::CComponentBox(std::vector _components, Rect positio placeComponents(false); } -CComponentBox::CComponentBox(std::vector _components, Rect position, boost::function _onSelect): +CComponentBox::CComponentBox(std::vector _components, Rect position, std::function _onSelect): components(_components.begin(), _components.end()), selected(nullptr), onSelect(_onSelect) @@ -1243,7 +1243,7 @@ CComponentBox::CComponentBox(std::vector _components, Re int key = SDLK_1; BOOST_FOREACH(auto & comp, _components) { - comp->onSelect = boost::bind(&CComponentBox::selectionChanged, this, comp); + comp->onSelect = std::bind(&CComponentBox::selectionChanged, this, comp); comp->assignedKeys.insert(key++); } selectionChanged(_components.front()); @@ -1269,8 +1269,8 @@ CSelWindow::CSelWindow(const std::string &Text, PlayerColor player, int charperl { buttons.push_back(new CAdventureMapButton("","",Buttons[i].second,0,0,Buttons[i].first)); if(!i && askID.getNum() >= 0) - buttons.back()->callback += boost::bind(&CSelWindow::madeChoice,this); - buttons[i]->callback += boost::bind(&CInfoWindow::close,this); //each button will close the window apart from call-defined actions + buttons.back()->callback += std::bind(&CSelWindow::madeChoice,this); + buttons[i]->callback += std::bind(&CInfoWindow::close,this); //each button will close the window apart from call-defined actions } text = new CTextBox(Text, Rect(0, 0, 250, 100), 0, FONT_MEDIUM, CENTER, Colors::WHITE); @@ -1279,14 +1279,14 @@ CSelWindow::CSelWindow(const std::string &Text, PlayerColor player, int charperl buttons.back()->assignedKeys.insert(SDLK_ESCAPE); //last button - reacts on escape if(buttons.size() > 1 && askID.getNum() >= 0) //cancel button functionality - buttons.back()->callback += boost::bind(&CCallback::selectionMade,LOCPLINT->cb.get(),0,askID); + buttons.back()->callback += std::bind(&CCallback::selectionMade,LOCPLINT->cb.get(),0,askID); for(int i=0;irecActions = 255; addChild(comps[i]); components.push_back(comps[i]); - comps[i]->onSelect = boost::bind(&CSelWindow::selectionChange,this,i); + comps[i]->onSelect = std::bind(&CSelWindow::selectionChange,this,i); if(i<9) comps[i]->assignedKeys.insert(SDLK_1+i); } @@ -1509,7 +1509,7 @@ void CRecruitmentWindow::showAll(SDL_Surface * to) drawBorder(to, pos.x + 289, pos.y + 312, 66, 34, int3(173,142,66)); } -CRecruitmentWindow::CRecruitmentWindow(const CGDwelling *Dwelling, int Level, const CArmedInstance *Dst, const boost::function &Recruit, int y_offset): +CRecruitmentWindow::CRecruitmentWindow(const CGDwelling *Dwelling, int Level, const CArmedInstance *Dst, const std::function &Recruit, int y_offset): CWindowObject(PLAYER_COLORED, "TPRCRT"), onRecruit(Recruit), level(Level), @@ -1523,11 +1523,11 @@ CRecruitmentWindow::CRecruitmentWindow(const CGDwelling *Dwelling, int Level, co new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); slider = new CSlider(176,279,135,0,0,0,0,true); - slider->moved = boost::bind(&CRecruitmentWindow::sliderMoved,this, _1); + slider->moved = std::bind(&CRecruitmentWindow::sliderMoved,this, _1); - maxButton = new CAdventureMapButton(CGI->generaltexth->zelp[553],boost::bind(&CSlider::moveToMax,slider),134,313,"IRCBTNS.DEF",SDLK_m); - buyButton = new CAdventureMapButton(CGI->generaltexth->zelp[554],boost::bind(&CRecruitmentWindow::buy,this),212,313,"IBY6432.DEF",SDLK_RETURN); - cancelButton = new CAdventureMapButton(CGI->generaltexth->zelp[555],boost::bind(&CRecruitmentWindow::close,this),290,313,"ICN6432.DEF",SDLK_ESCAPE); + maxButton = new CAdventureMapButton(CGI->generaltexth->zelp[553],std::bind(&CSlider::moveToMax,slider),134,313,"IRCBTNS.DEF",SDLK_m); + buyButton = new CAdventureMapButton(CGI->generaltexth->zelp[554],std::bind(&CRecruitmentWindow::buy,this),212,313,"IBY6432.DEF",SDLK_RETURN); + cancelButton = new CAdventureMapButton(CGI->generaltexth->zelp[555],std::bind(&CRecruitmentWindow::close,this),290,313,"ICN6432.DEF",SDLK_ESCAPE); title = new CLabel(243, 32, FONT_BIG, CENTER, Colors::YELLOW); availableValue = new CLabel(205, 253, FONT_SMALL, CENTER, Colors::WHITE); @@ -1620,7 +1620,7 @@ void CRecruitmentWindow::sliderMoved(int to) totalCostValue->set(selected->creature->cost * to); } -CSplitWindow::CSplitWindow(const CCreature * creature, boost::function callback_, +CSplitWindow::CSplitWindow(const CCreature * creature, std::function callback_, int leftMin_, int rightMin_, int leftAmount_, int rightAmount_): CWindowObject(PLAYER_COLORED, "GPUCRDIV"), callback(callback_), @@ -1636,17 +1636,17 @@ CSplitWindow::CSplitWindow(const CCreature * creature, boost::functionfilters.add(boost::bind(&CTextInput::numberFilter, _1, _2, leftMin, leftMax)); - rightInput->filters.add(boost::bind(&CTextInput::numberFilter, _1, _2, rightMin, rightMax)); + leftInput->filters.add(std::bind(&CTextInput::numberFilter, _1, _2, leftMin, leftMax)); + rightInput->filters.add(std::bind(&CTextInput::numberFilter, _1, _2, rightMin, rightMax)); leftInput->setTxt(boost::lexical_cast(leftAmount), false); rightInput->setTxt(boost::lexical_cast(rightAmount), false); @@ -1654,7 +1654,7 @@ CSplitWindow::CSplitWindow(const CCreature * creature, boost::functiongeneraltexth->allTexts[256]; boost::algorithm::replace_first(title,"%s", creature->namePl); @@ -1694,7 +1694,7 @@ void CSplitWindow::sliderMoved(int to) setAmount(rightMin + to, false); } -CLevelWindow::CLevelWindow(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, boost::function callback): +CLevelWindow::CLevelWindow(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, std::function callback): CWindowObject(PLAYER_COLORED, "LVLUPBKG"), cb(callback) { @@ -1703,7 +1703,7 @@ CLevelWindow::CLevelWindow(const CGHeroInstance *hero, PrimarySkill::PrimarySkil LOCPLINT->showingDialog->setn(true); new CAnimImage("PortraitsLarge", hero->portrait, 0, 170, 66); - new CAdventureMapButton("", "", boost::bind(&CLevelWindow::close, this), 297, 413, "IOKAY", SDLK_RETURN); + new CAdventureMapButton("", "", std::bind(&CLevelWindow::close, this), 297, 413, "IOKAY", SDLK_RETURN); //%s has gained a level. new CLabel(192, 33, FONT_MEDIUM, CENTER, Colors::WHITE, @@ -1815,7 +1815,7 @@ void CObjectListWindow::CItem::clickLeft(tribool down, bool previousState) } CObjectListWindow::CObjectListWindow(const std::vector &_items, CPicture * titlePic, std::string _title, std::string _descr, - boost::function Callback): + std::function Callback): CWindowObject(PLAYER_COLORED, "TPGATE"), onSelect(Callback) { @@ -1829,7 +1829,7 @@ CObjectListWindow::CObjectListWindow(const std::vector &_items, CPicture * } CObjectListWindow::CObjectListWindow(const std::vector &_items, CPicture * titlePic, std::string _title, std::string _descr, - boost::function Callback): + std::function Callback): CWindowObject(PLAYER_COLORED, "TPGATE"), onSelect(Callback) { @@ -1848,9 +1848,9 @@ void CObjectListWindow::init(CPicture * titlePic, std::string _title, std::strin title = new CLabel(152, 27, FONT_BIG, CENTER, Colors::YELLOW, _title); descr = new CLabel(145, 133, FONT_SMALL, CENTER, Colors::WHITE, _descr); - ok = new CAdventureMapButton("","",boost::bind(&CObjectListWindow::elementSelected, this),15,402,"IOKAY.DEF", SDLK_RETURN); + ok = new CAdventureMapButton("","",std::bind(&CObjectListWindow::elementSelected, this),15,402,"IOKAY.DEF", SDLK_RETURN); ok->block(true); - exit = new CAdventureMapButton("","",boost::bind(&CGuiHandler::popIntTotally,&GH, this),228,402,"ICANCEL.DEF",SDLK_ESCAPE); + exit = new CAdventureMapButton("","",std::bind(&CGuiHandler::popIntTotally,&GH, this),228,402,"ICANCEL.DEF",SDLK_ESCAPE); if (titlePic) { @@ -1860,7 +1860,7 @@ void CObjectListWindow::init(CPicture * titlePic, std::string _title, std::strin titleImage->pos.x = pos.w/2 + pos.x - titleImage->pos.w/2; titleImage->pos.y =75 + pos.y - titleImage->pos.h/2; } - list = new CListBox(boost::bind(&CObjectListWindow::genItem, this, _1), CListBox::DestroyFunc(), + list = new CListBox(std::bind(&CObjectListWindow::genItem, this, _1), CListBox::DestroyFunc(), Point(14, 151), Point(0, 25), 9, items.size(), 0, 1, Rect(262, -32, 256, 256) ); list->type |= REDRAW_PARENT; } @@ -1869,12 +1869,12 @@ CIntObject * CObjectListWindow::genItem(size_t index) { if (index < items.size()) return new CItem(this, index, items[index].second); - return NULL; + return nullptr; } void CObjectListWindow::elementSelected() { - boost::function toCall = onSelect;//save + std::function toCall = onSelect;//save int where = items[selected].first; //required variables GH.popIntTotally(this);//then destroy window toCall(where);//and send selected object @@ -1945,7 +1945,7 @@ CTradeWindow::CTradeableItem::CTradeableItem(Point pos, EType Type, int ID, bool left(Left) { downSelection = false; - hlp = NULL; + hlp = nullptr; image = nullptr; setType(Type); } @@ -2204,7 +2204,7 @@ const CArtifactInstance * CTradeWindow::CTradeableItem::getArtInstance() const case ARTIFACT_INSTANCE: return (const CArtifactInstance *)hlp; default: - return NULL; + return nullptr; } } @@ -2222,9 +2222,9 @@ CTradeWindow::CTradeWindow(std::string bgName, const IMarket *Market, const CGHe CWindowObject(PLAYER_COLORED, bgName), market(Market), hero(Hero), - arts(NULL), - hLeft(NULL), - hRight(NULL), + arts(nullptr), + hLeft(nullptr), + hRight(nullptr), readyToTrade(false) { type |= BLOCK_ADV_HOTKEYS; @@ -2298,7 +2298,7 @@ void CTradeWindow::initItems(bool Left) artSets.push_back(arts); if(mode == EMarketMode::ARTIFACT_RESOURCE) - arts->highlightModeCallback = boost::bind(&CTradeWindow::artifactSelected, this, _1); + arts->highlightModeCallback = std::bind(&CTradeWindow::artifactSelected, this, _1); return; } @@ -2332,7 +2332,7 @@ void CTradeWindow::initItems(bool Left) std::vector *CTradeWindow::getItemsIds(bool Left) { - std::vector *ids = NULL; + std::vector *ids = nullptr; if(mode == EMarketMode::ARTIFACT_EXP) return new std::vector(22, -1); @@ -2485,7 +2485,7 @@ void CTradeWindow::removeItem(CTradeableItem * t) if(hRight == t) { - hRight = NULL; + hRight = nullptr; selectionChanged(false); } } @@ -2501,7 +2501,7 @@ void CTradeWindow::setMode(EMarketMode::EMarketMode Mode) { const IMarket *m = market; const CGHeroInstance *h = hero; - CTradeWindow *nwindow = NULL; + CTradeWindow *nwindow = nullptr; GH.popIntTotally(this); @@ -2526,7 +2526,7 @@ void CTradeWindow::artifactSelected(CArtPlace *slot) if(slot->ourArt) hLeft = items[1][0]; else - hLeft = NULL; + hLeft = nullptr; selectionChanged(true); } @@ -2597,22 +2597,22 @@ CMarketplaceWindow::CMarketplaceWindow(const IMarket *Market, const CGHeroInstan initItems(false); initItems(true); - ok = new CAdventureMapButton(CGI->generaltexth->zelp[600],boost::bind(&CGuiHandler::popIntTotally,&GH,this),516,520,"IOK6432.DEF",SDLK_RETURN); + ok = new CAdventureMapButton(CGI->generaltexth->zelp[600],std::bind(&CGuiHandler::popIntTotally,&GH,this),516,520,"IOK6432.DEF",SDLK_RETURN); ok->assignedKeys.insert(SDLK_ESCAPE); - deal = new CAdventureMapButton(CGI->generaltexth->zelp[595],boost::bind(&CMarketplaceWindow::makeDeal,this),307,520,"TPMRKB.DEF"); + deal = new CAdventureMapButton(CGI->generaltexth->zelp[595],std::bind(&CMarketplaceWindow::makeDeal,this),307,520,"TPMRKB.DEF"); deal->block(true); if(sliderNeeded) { slider = new CSlider(231,490,137,0,0,0); - slider->moved = boost::bind(&CMarketplaceWindow::sliderMoved,this,_1); - max = new CAdventureMapButton(CGI->generaltexth->zelp[596],boost::bind(&CMarketplaceWindow::setMax,this),229,520,"IRCBTNS.DEF"); + slider->moved = std::bind(&CMarketplaceWindow::sliderMoved,this,_1); + max = new CAdventureMapButton(CGI->generaltexth->zelp[596],std::bind(&CMarketplaceWindow::setMax,this),229,520,"IRCBTNS.DEF"); max->block(true); } else { - slider = NULL; - max = NULL; + slider = nullptr; + max = nullptr; deal->moveBy(Point(-30, 0)); } @@ -2659,22 +2659,22 @@ CMarketplaceWindow::CMarketplaceWindow(const IMarket *Market, const CGHeroInstan int specialOffset = mode == EMarketMode::ARTIFACT_RESOURCE ? 35 : 0; //in selling artifacts mode we need to move res-res and art-res buttons down if(printButtonFor(EMarketMode::RESOURCE_PLAYER)) - new CAdventureMapButton(CGI->generaltexth->zelp[612],boost::bind(&CMarketplaceWindow::setMode,this, EMarketMode::RESOURCE_PLAYER), 18, 520,"TPMRKBU1.DEF"); + new CAdventureMapButton(CGI->generaltexth->zelp[612],std::bind(&CMarketplaceWindow::setMode,this, EMarketMode::RESOURCE_PLAYER), 18, 520,"TPMRKBU1.DEF"); if(printButtonFor(EMarketMode::RESOURCE_RESOURCE)) - new CAdventureMapButton(CGI->generaltexth->zelp[605],boost::bind(&CMarketplaceWindow::setMode,this, EMarketMode::RESOURCE_RESOURCE), 516, 450 + specialOffset,"TPMRKBU5.DEF"); + new CAdventureMapButton(CGI->generaltexth->zelp[605],std::bind(&CMarketplaceWindow::setMode,this, EMarketMode::RESOURCE_RESOURCE), 516, 450 + specialOffset,"TPMRKBU5.DEF"); if(printButtonFor(EMarketMode::CREATURE_RESOURCE)) - new CAdventureMapButton(CGI->generaltexth->zelp[599],boost::bind(&CMarketplaceWindow::setMode,this, EMarketMode::CREATURE_RESOURCE), 516, 485,"TPMRKBU4.DEF"); //was y=450, changed to not overlap res-res in some conditions + new CAdventureMapButton(CGI->generaltexth->zelp[599],std::bind(&CMarketplaceWindow::setMode,this, EMarketMode::CREATURE_RESOURCE), 516, 485,"TPMRKBU4.DEF"); //was y=450, changed to not overlap res-res in some conditions if(printButtonFor(EMarketMode::RESOURCE_ARTIFACT)) - new CAdventureMapButton(CGI->generaltexth->zelp[598],boost::bind(&CMarketplaceWindow::setMode,this, EMarketMode::RESOURCE_ARTIFACT), 18, 450 + specialOffset,"TPMRKBU2.DEF"); + new CAdventureMapButton(CGI->generaltexth->zelp[598],std::bind(&CMarketplaceWindow::setMode,this, EMarketMode::RESOURCE_ARTIFACT), 18, 450 + specialOffset,"TPMRKBU2.DEF"); if(printButtonFor(EMarketMode::ARTIFACT_RESOURCE)) - new CAdventureMapButton(CGI->generaltexth->zelp[613],boost::bind(&CMarketplaceWindow::setMode,this, EMarketMode::ARTIFACT_RESOURCE), 18, 485,"TPMRKBU3.DEF"); //was y=450, changed to not overlap res-art in some conditions + new CAdventureMapButton(CGI->generaltexth->zelp[613],std::bind(&CMarketplaceWindow::setMode,this, EMarketMode::ARTIFACT_RESOURCE), 18, 485,"TPMRKBU3.DEF"); //was y=450, changed to not overlap res-art in some conditions updateTraderText(); } CMarketplaceWindow::~CMarketplaceWindow() { - hLeft = hRight = NULL; + hLeft = hRight = nullptr; for(int i=0;isetTxt(CGI->generaltexth->allTexts[gnrtxtnr]); } -CAltarWindow::CAltarWindow(const IMarket *Market, const CGHeroInstance *Hero /*= NULL*/, EMarketMode::EMarketMode Mode) +CAltarWindow::CAltarWindow(const IMarket *Market, const CGHeroInstance *Hero /*= nullptr*/, EMarketMode::EMarketMode Mode) :CTradeWindow((Mode == EMarketMode::CREATURE_EXP ? "ALTARMON.bmp" : "ALTRART2.bmp"), Market, Hero, Mode) { OBJ_CONSTRUCTION_CAPTURING_ALL; @@ -3012,12 +3012,12 @@ CAltarWindow::CAltarWindow(const IMarket *Market, const CGHeroInstance *Hero /*= new CTextBox(CGI->generaltexth->allTexts[480], Rect(320, 56, 256, 40), 0, FONT_SMALL, CENTER, Colors::YELLOW); slider = new CSlider(231,481,137,0,0,0); - slider->moved = boost::bind(&CAltarWindow::sliderMoved,this,_1); - max = new CAdventureMapButton(CGI->generaltexth->zelp[578],boost::bind(&CSlider::moveToMax, slider),147,520,"IRCBTNS.DEF"); + slider->moved = std::bind(&CAltarWindow::sliderMoved,this,_1); + max = new CAdventureMapButton(CGI->generaltexth->zelp[578],std::bind(&CSlider::moveToMax, slider),147,520,"IRCBTNS.DEF"); sacrificedUnits.resize(GameConstants::ARMY_SIZE, 0); - sacrificeAll = new CAdventureMapButton(CGI->generaltexth->zelp[579],boost::bind(&CAltarWindow::SacrificeAll,this),393,520,"ALTARMY.DEF"); - sacrificeBackpack = NULL; + sacrificeAll = new CAdventureMapButton(CGI->generaltexth->zelp[579],std::bind(&CAltarWindow::SacrificeAll,this),393,520,"ALTARMY.DEF"); + sacrificeBackpack = nullptr; initItems(true); mimicCres(); @@ -3030,13 +3030,13 @@ CAltarWindow::CAltarWindow(const IMarket *Market, const CGHeroInstance *Hero /*= //%s's Creatures new CLabel(302, 423, FONT_SMALL, CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[478]); - sacrificeAll = new CAdventureMapButton(CGI->generaltexth->zelp[571], boost::bind(&CAltarWindow::SacrificeAll,this),393,520,"ALTFILL.DEF"); + sacrificeAll = new CAdventureMapButton(CGI->generaltexth->zelp[571], std::bind(&CAltarWindow::SacrificeAll,this),393,520,"ALTFILL.DEF"); sacrificeAll->block(hero->artifactsInBackpack.empty() && hero->artifactsWorn.empty()); - sacrificeBackpack = new CAdventureMapButton(CGI->generaltexth->zelp[570],boost::bind(&CAltarWindow::SacrificeBackpack,this),147,520,"ALTEMBK.DEF"); + sacrificeBackpack = new CAdventureMapButton(CGI->generaltexth->zelp[570],std::bind(&CAltarWindow::SacrificeBackpack,this),147,520,"ALTEMBK.DEF"); sacrificeBackpack->block(hero->artifactsInBackpack.empty()); - slider = NULL; - max = NULL; + slider = nullptr; + max = nullptr; initItems(true); initItems(false); @@ -3051,15 +3051,15 @@ CAltarWindow::CAltarWindow(const IMarket *Market, const CGHeroInstance *Hero /*= new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); - ok = new CAdventureMapButton(CGI->generaltexth->zelp[568],boost::bind(&CGuiHandler::popIntTotally,&GH,this),516,520,"IOK6432.DEF",SDLK_RETURN); + ok = new CAdventureMapButton(CGI->generaltexth->zelp[568],std::bind(&CGuiHandler::popIntTotally,&GH,this),516,520,"IOK6432.DEF",SDLK_RETURN); ok->assignedKeys.insert(SDLK_ESCAPE); - deal = new CAdventureMapButton(CGI->generaltexth->zelp[585],boost::bind(&CAltarWindow::makeDeal,this),269,520,"ALTSACR.DEF"); + deal = new CAdventureMapButton(CGI->generaltexth->zelp[585],std::bind(&CAltarWindow::makeDeal,this),269,520,"ALTSACR.DEF"); if(Hero->getAlignment() != ::EAlignment::EVIL && Mode == EMarketMode::CREATURE_EXP) - new CAdventureMapButton(CGI->generaltexth->zelp[580], boost::bind(&CTradeWindow::setMode,this, EMarketMode::ARTIFACT_EXP), 516, 421, "ALTART.DEF"); + new CAdventureMapButton(CGI->generaltexth->zelp[580], std::bind(&CTradeWindow::setMode,this, EMarketMode::ARTIFACT_EXP), 516, 421, "ALTART.DEF"); if(Hero->getAlignment() != ::EAlignment::GOOD && Mode == EMarketMode::ARTIFACT_EXP) - new CAdventureMapButton(CGI->generaltexth->zelp[572], boost::bind(&CTradeWindow::setMode,this, EMarketMode::CREATURE_EXP), 516, 421, "ALTSACC.DEF"); + new CAdventureMapButton(CGI->generaltexth->zelp[572], std::bind(&CTradeWindow::setMode,this, EMarketMode::CREATURE_EXP), 516, 421, "ALTSACC.DEF"); expPerUnit.resize(GameConstants::ARMY_SIZE, 0); getExpValues(); @@ -3167,7 +3167,7 @@ void CAltarWindow::SacrificeAll() for(auto i = hero->artifactsWorn.cbegin(); i != hero->artifactsWorn.cend(); i++) { if(i->second.artifact->artType->id != ArtifactID::ART_LOCK) //ignore locks from assembled artifacts - moveFromSlotToAltar(i->first, NULL, i->second.artifact); + moveFromSlotToAltar(i->first, nullptr, i->second.artifact); } SacrificeBackpack(); @@ -3183,7 +3183,10 @@ void CAltarWindow::selectionChanged(bool side) CTradeableItem *&selected = side ? hLeft : hRight; CTradeableItem *&theOther = side ? hRight : hLeft; - theOther = *std::find_if(items[!side].begin(), items[!side].end(), boost::bind(&CTradeableItem::serial, _1) == selected->serial); + theOther = *std::find_if(items[!side].begin(), items[!side].end(), [&](const CTradeableItem * item) + { + return item->serial == selected->serial; + }); int stackCount = 0; for (int i = 0; i < GameConstants::ARMY_SIZE; i++) @@ -3244,8 +3247,10 @@ void CAltarWindow::garrisonChanged() BOOST_FOREACH(CTradeableItem *t, empty) { - removeItem(*std::find_if(items[0].begin(), items[0].end(), boost::bind(&CTradeableItem::serial, _1) == t->serial)); - removeItem(t); + removeItem(*std::find_if(items[0].begin(), items[0].end(), [&](const CTradeableItem * item) + { + return item->serial == t->serial; + })); } initSubs(true); @@ -3290,7 +3295,7 @@ void CAltarWindow::setExpToLevel() void CAltarWindow::blockTrade() { - hLeft = hRight = NULL; + hLeft = hRight = nullptr; readyToTrade = false; if(slider) { @@ -3327,7 +3332,7 @@ void CAltarWindow::SacrificeBackpack() continue; } - putOnAltar(NULL, hero->artifactsInBackpack[i].artifact); + putOnAltar(nullptr, hero->artifactsInBackpack[i].artifact); } arts->scrollBackpack(0); @@ -3401,7 +3406,7 @@ void CAltarWindow::moveFromSlotToAltar(ArtifactPosition slotID, CTradeableItem* { arts->commonInfo->src.clear(); arts->commonInfo->dst.clear(); - CCS->curh->dragAndDropCursor(NULL); + CCS->curh->dragAndDropCursor(nullptr); arts->unmarkSlots(false); } } @@ -3466,31 +3471,31 @@ CSystemOptionsWindow::CSystemOptionsWindow(): //setting up buttons load = new CAdventureMapButton (CGI->generaltexth->zelp[321].first, CGI->generaltexth->zelp[321].second, - boost::bind(&CSystemOptionsWindow::bloadf, this), 246, 298, "SOLOAD.DEF", SDLK_l); + std::bind(&CSystemOptionsWindow::bloadf, this), 246, 298, "SOLOAD.DEF", SDLK_l); load->swappedImages = true; load->update(); save = new CAdventureMapButton (CGI->generaltexth->zelp[322].first, CGI->generaltexth->zelp[322].second, - boost::bind(&CSystemOptionsWindow::bsavef, this), 357, 298, "SOSAVE.DEF", SDLK_s); + std::bind(&CSystemOptionsWindow::bsavef, this), 357, 298, "SOSAVE.DEF", SDLK_s); save->swappedImages = true; save->update(); restart = new CAdventureMapButton (CGI->generaltexth->zelp[323].first, CGI->generaltexth->zelp[323].second, - boost::bind(&CSystemOptionsWindow::brestartf, this), 246, 357, "SORSTRT", SDLK_r); + std::bind(&CSystemOptionsWindow::brestartf, this), 246, 357, "SORSTRT", SDLK_r); restart->swappedImages = true; restart->update(); mainMenu = new CAdventureMapButton (CGI->generaltexth->zelp[320].first, CGI->generaltexth->zelp[320].second, - boost::bind(&CSystemOptionsWindow::bmainmenuf, this), 357, 357, "SOMAIN.DEF", SDLK_m); + std::bind(&CSystemOptionsWindow::bmainmenuf, this), 357, 357, "SOMAIN.DEF", SDLK_m); mainMenu->swappedImages = true; mainMenu->update(); quitGame = new CAdventureMapButton (CGI->generaltexth->zelp[324].first, CGI->generaltexth->zelp[324].second, - boost::bind(&CSystemOptionsWindow::bquitf, this), 246, 415, "soquit.def", SDLK_q); + std::bind(&CSystemOptionsWindow::bquitf, this), 246, 415, "soquit.def", SDLK_q); quitGame->swappedImages = true; quitGame->update(); backToMap = new CAdventureMapButton (CGI->generaltexth->zelp[325].first, CGI->generaltexth->zelp[325].second, - boost::bind(&CSystemOptionsWindow::breturnf, this), 357, 415, "soretrn.def", SDLK_RETURN); + std::bind(&CSystemOptionsWindow::breturnf, this), 357, 415, "soretrn.def", SDLK_RETURN); backToMap->swappedImages = true; backToMap->update(); backToMap->assignedKeys.insert(SDLK_ESCAPE); @@ -3501,44 +3506,44 @@ CSystemOptionsWindow::CSystemOptionsWindow(): heroMoveSpeed->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[351].second),CGI->generaltexth->zelp[351].second, "sysopb3.def", 124, 77, 4); heroMoveSpeed->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[352].second),CGI->generaltexth->zelp[352].second, "sysopb4.def", 172, 77, 8); heroMoveSpeed->select(settings["adventure"]["heroSpeed"].Float(), 1); - heroMoveSpeed->onChange = boost::bind(&CSystemOptionsWindow::setHeroMoveSpeed, this, _1); + heroMoveSpeed->onChange = std::bind(&CSystemOptionsWindow::setHeroMoveSpeed, this, _1); mapScrollSpeed = new CHighlightableButtonsGroup(0); mapScrollSpeed->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[357].second),CGI->generaltexth->zelp[357].second, "sysopb9.def", 28, 210, 1); mapScrollSpeed->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[358].second),CGI->generaltexth->zelp[358].second, "sysob10.def", 92, 210, 2); mapScrollSpeed->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[359].second),CGI->generaltexth->zelp[359].second, "sysob11.def", 156, 210, 4); mapScrollSpeed->select(settings["adventure"]["scrollSpeed"].Float(), 1); - mapScrollSpeed->onChange = boost::bind(&CSystemOptionsWindow::setMapScrollingSpeed, this, _1); + mapScrollSpeed->onChange = std::bind(&CSystemOptionsWindow::setMapScrollingSpeed, this, _1); musicVolume = new CHighlightableButtonsGroup(0, true); for(int i=0; i<10; ++i) musicVolume->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[326+i].second),CGI->generaltexth->zelp[326+i].second, "syslb.def", 29 + 19*i, 359, i*11); musicVolume->select(CCS->musich->getVolume(), 1); - musicVolume->onChange = boost::bind(&CSystemOptionsWindow::setMusicVolume, this, _1); + musicVolume->onChange = std::bind(&CSystemOptionsWindow::setMusicVolume, this, _1); effectsVolume = new CHighlightableButtonsGroup(0, true); for(int i=0; i<10; ++i) effectsVolume->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[336+i].second),CGI->generaltexth->zelp[336+i].second, "syslb.def", 29 + 19*i, 425, i*11); effectsVolume->select(CCS->soundh->getVolume(), 1); - effectsVolume->onChange = boost::bind(&CSystemOptionsWindow::setSoundVolume, this, _1); + effectsVolume->onChange = std::bind(&CSystemOptionsWindow::setSoundVolume, this, _1); showReminder = new CHighlightableButton( - boost::bind(&CSystemOptionsWindow::toggleReminder, this, true), boost::bind(&CSystemOptionsWindow::toggleReminder, this, false), - std::map(), CGI->generaltexth->zelp[361].second, false, "sysopchk.def", NULL, 246, 87, false); + std::bind(&CSystemOptionsWindow::toggleReminder, this, true), std::bind(&CSystemOptionsWindow::toggleReminder, this, false), + std::map(), CGI->generaltexth->zelp[361].second, false, "sysopchk.def", nullptr, 246, 87, false); quickCombat = new CHighlightableButton( - boost::bind(&CSystemOptionsWindow::toggleQuickCombat, this, true), boost::bind(&CSystemOptionsWindow::toggleQuickCombat, this, false), - std::map(), CGI->generaltexth->zelp[362].second, false, "sysopchk.def", NULL, 246, 87+32, false); + std::bind(&CSystemOptionsWindow::toggleQuickCombat, this, true), std::bind(&CSystemOptionsWindow::toggleQuickCombat, this, false), + std::map(), CGI->generaltexth->zelp[362].second, false, "sysopchk.def", nullptr, 246, 87+32, false); newCreatureWin = new CHighlightableButton( - boost::bind(&CSystemOptionsWindow::toggleCreatureWin, this, true), boost::bind(&CSystemOptionsWindow::toggleCreatureWin, this, false), - std::map(), cwHelp, false, "sysopchk.def", NULL, 246, 183, false); + std::bind(&CSystemOptionsWindow::toggleCreatureWin, this, true), std::bind(&CSystemOptionsWindow::toggleCreatureWin, this, false), + std::map(), cwHelp, false, "sysopchk.def", nullptr, 246, 183, false); fullscreen = new CHighlightableButton( - boost::bind(&CSystemOptionsWindow::toggleFullscreen, this, true), boost::bind(&CSystemOptionsWindow::toggleFullscreen, this, false), - std::map(), fsHelp, false, "sysopchk.def", NULL, 246, 215, false); + std::bind(&CSystemOptionsWindow::toggleFullscreen, this, true), std::bind(&CSystemOptionsWindow::toggleFullscreen, this, false), + std::map(), fsHelp, false, "sysopchk.def", nullptr, 246, 215, false); showReminder->select(settings["adventure"]["heroReminder"].Bool()); quickCombat->select(settings["adventure"]["quickCombat"].Bool()); @@ -3547,7 +3552,7 @@ CSystemOptionsWindow::CSystemOptionsWindow(): onFullscreenChanged([&](const JsonNode &newState){ fullscreen->select(newState.Bool());}); - gameResButton = new CAdventureMapButton("", rsHelp, boost::bind(&CSystemOptionsWindow::selectGameRes, this), 28, 275,"SYSOB12", SDLK_g); + gameResButton = new CAdventureMapButton("", rsHelp, std::bind(&CSystemOptionsWindow::selectGameRes, this), 28, 275,"SYSOB12", SDLK_g); std::string resText; resText += boost::lexical_cast(settings["video"]["screenRes"]["width"].Float()); @@ -3572,8 +3577,8 @@ void CSystemOptionsWindow::selectGameRes() items.push_back(resX + 'x' + resY); } - GH.pushInt(new CObjectListWindow(items, NULL, rsLabel, rsHelp, - boost::bind(&CSystemOptionsWindow::setGameRes, this, _1))); + GH.pushInt(new CObjectListWindow(items, nullptr, rsLabel, rsHelp, + std::bind(&CSystemOptionsWindow::setGameRes, this, _1))); } void CSystemOptionsWindow::setGameRes(int index) @@ -3680,9 +3685,9 @@ CTavernWindow::CTavernWindow(const CGObjectInstance *TavernObj): new CTextBox(LOCPLINT->cb->getTavernGossip(tavernObj), Rect(32, 190, 330, 68), 0, FONT_SMALL, CENTER, Colors::WHITE); new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); - cancel = new CAdventureMapButton(CGI->generaltexth->tavernInfo[7],"", boost::bind(&CTavernWindow::close, this), 310, 428, "ICANCEL.DEF", SDLK_ESCAPE); - recruit = new CAdventureMapButton("", "", boost::bind(&CTavernWindow::recruitb, this), 272, 355, "TPTAV01.DEF", SDLK_RETURN); - thiefGuild = new CAdventureMapButton(CGI->generaltexth->tavernInfo[5],"", boost::bind(&CTavernWindow::thievesguildb, this), 22, 428, "TPTAV02.DEF", SDLK_t); + cancel = new CAdventureMapButton(CGI->generaltexth->tavernInfo[7],"", std::bind(&CTavernWindow::close, this), 310, 428, "ICANCEL.DEF", SDLK_ESCAPE); + recruit = new CAdventureMapButton("", "", std::bind(&CTavernWindow::recruitb, this), 272, 355, "TPTAV01.DEF", SDLK_RETURN); + thiefGuild = new CAdventureMapButton(CGI->generaltexth->tavernInfo[5],"", std::bind(&CTavernWindow::thievesguildb, this), 22, 428, "TPTAV02.DEF", SDLK_t); if(LOCPLINT->cb->getResourceAmount(Res::GOLD) < 2500) //not enough gold { @@ -4024,11 +4029,11 @@ CGarrisonWindow::CGarrisonWindow( const CArmedInstance *up, const CGHeroInstance garr = new CGarrisonInt(92, 127, 4, Point(0,96), background->bg, Point(93,127), up, down, removableUnits); { - CAdventureMapButton *split = new CAdventureMapButton(CGI->generaltexth->tcommands[3],"",boost::bind(&CGarrisonInt::splitClick,garr),88,314,"IDV6432.DEF"); + CAdventureMapButton *split = new CAdventureMapButton(CGI->generaltexth->tcommands[3],"",std::bind(&CGarrisonInt::splitClick,garr),88,314,"IDV6432.DEF"); removeChild(split); garr->addSplitBtn(split); } - quit = new CAdventureMapButton(CGI->generaltexth->tcommands[8],"",boost::bind(&CGarrisonWindow::close,this),399,314,"IOK6432.DEF",SDLK_RETURN); + quit = new CAdventureMapButton(CGI->generaltexth->tcommands[8],"",std::bind(&CGarrisonWindow::close,this),399,314,"IOK6432.DEF",SDLK_RETURN); std::string titleText; if (garr->armedObjs[1]->tempOwner == garr->armedObjs[0]->tempOwner) @@ -4259,7 +4264,7 @@ void CArtPlace::clickRight(tribool down, bool previousState) ourArt->artType->id, combination->id, true, - boost::bind(&CCallback::assembleArtifacts, LOCPLINT->cb.get(), ourOwner->curHero, slotID, true, combination->id), + std::bind(&CCallback::assembleArtifacts, LOCPLINT->cb.get(), ourOwner->curHero, slotID, true, combination->id), 0); if(assemblyPossibilities.size() > 2) @@ -4277,7 +4282,7 @@ void CArtPlace::clickRight(tribool down, bool previousState) ourArt->artType->id, 0, false, - boost::bind(&CCallback::assembleArtifacts, LOCPLINT->cb.get(), ourOwner->curHero, slotID, false, ArtifactID()), + std::bind(&CCallback::assembleArtifacts, LOCPLINT->cb.get(), ourOwner->curHero, slotID, false, ArtifactID()), 0); return; } @@ -4333,7 +4338,7 @@ void CArtPlace::deselect () ourOwner->getArtPlace(i)->pickSlot(false); } - CCS->curh->dragAndDropCursor(NULL); + CCS->curh->dragAndDropCursor(nullptr); ourOwner->unmarkSlots(); ourOwner->commonInfo->src.clear(); if(slotID >= GameConstants::BACKPACK_START) @@ -4460,7 +4465,7 @@ CComponent * LRClickableAreaWTextComp::createComponent() const if(baseType >= 0) return new CComponent(CComponent::Etype(baseType), type, bonusValue); else - return NULL; + return nullptr; } void LRClickableAreaWTextComp::clickRight(tribool down, bool previousState) @@ -4536,7 +4541,7 @@ void CArtifactsOfHero::SCommonPart::reset() { src.clear(); dst.clear(); - CCS->curh->dragAndDropCursor(NULL); + CCS->curh->dragAndDropCursor(nullptr); } void CArtifactsOfHero::setHero(const CGHeroInstance * hero) @@ -4579,7 +4584,7 @@ void CArtifactsOfHero::setHero(const CGHeroInstance * hero) // CCS->curh->dragAndDropCursor(graphics->artDefs->ourImages[commonInfo->srcArtifact->id].bitmap); // markPossibleSlots(commonInfo->srcArtifact); // } -// else if (commonInfo->destAOH != NULL) +// else if (commonInfo->destAOH != nullptr) // { // // Reset all parameters. // commonInfo->reset(); @@ -4615,7 +4620,7 @@ void CArtifactsOfHero::dispose() { //vstd::clear_pointer(curHero); //unmarkSlots(false); - CCS->curh->dragAndDropCursor(NULL); + CCS->curh->dragAndDropCursor(nullptr); } void CArtifactsOfHero::scrollBackpack(int dir) @@ -4741,7 +4746,7 @@ void CArtifactsOfHero::setSlotData(CArtPlace* artPlace, ArtifactPosition slotID) artPlace->lockSlot(asi->locked); } else - artPlace->setArtifact(NULL); + artPlace->setArtifact(nullptr); } /** @@ -4751,15 +4756,15 @@ void CArtifactsOfHero::eraseSlotData (CArtPlace* artPlace, ArtifactPosition slot { artPlace->pickSlot(false); artPlace->slotID = slotID; - artPlace->setArtifact(NULL); + artPlace->setArtifact(nullptr); } CArtifactsOfHero::CArtifactsOfHero(std::vector ArtWorn, std::vector Backpack, CAdventureMapButton *leftScroll, CAdventureMapButton *rightScroll, bool createCommonPart): - curHero(NULL), + curHero(nullptr), artWorn(ArtWorn), backpack(Backpack), - backpackPos(0), commonInfo(NULL), updateState(false), + backpackPos(0), commonInfo(nullptr), updateState(false), leftArtRoll(leftScroll), rightArtRoll(rightScroll), allowedAssembling(true), highlightModeCallback(0) { @@ -4783,12 +4788,12 @@ CArtifactsOfHero::CArtifactsOfHero(std::vector ArtWorn, std::vector eraseSlotData(backpack[s], ArtifactPosition(GameConstants::BACKPACK_START + s)); } - leftArtRoll->callback += boost::bind(&CArtifactsOfHero::scrollBackpack,this,-1); - rightArtRoll->callback += boost::bind(&CArtifactsOfHero::scrollBackpack,this,+1); + leftArtRoll->callback += std::bind(&CArtifactsOfHero::scrollBackpack,this,-1); + rightArtRoll->callback += std::bind(&CArtifactsOfHero::scrollBackpack,this,+1); } CArtifactsOfHero::CArtifactsOfHero(const Point& position, bool createCommonPart /*= false*/) - : curHero(NULL), backpackPos(0), commonInfo(NULL), updateState(false), allowedAssembling(true), highlightModeCallback(0) + : curHero(nullptr), backpackPos(0), commonInfo(nullptr), updateState(false), allowedAssembling(true), highlightModeCallback(0) { if(createCommonPart) { @@ -4828,8 +4833,8 @@ CArtifactsOfHero::CArtifactsOfHero(const Point& position, bool createCommonPart backpack.push_back(add); } - leftArtRoll = new CAdventureMapButton(std::string(), std::string(), boost::bind(&CArtifactsOfHero::scrollBackpack,this,-1), 379, 364, "hsbtns3.def", SDLK_LEFT); - rightArtRoll = new CAdventureMapButton(std::string(), std::string(), boost::bind(&CArtifactsOfHero::scrollBackpack,this,+1), 632, 364, "hsbtns5.def", SDLK_RIGHT); + leftArtRoll = new CAdventureMapButton(std::string(), std::string(), std::bind(&CArtifactsOfHero::scrollBackpack,this,-1), 379, 364, "hsbtns3.def", SDLK_LEFT); + rightArtRoll = new CAdventureMapButton(std::string(), std::string(), std::bind(&CArtifactsOfHero::scrollBackpack,this,+1), 632, 364, "hsbtns5.def", SDLK_RIGHT); } CArtifactsOfHero::~CArtifactsOfHero() @@ -4920,7 +4925,7 @@ void CArtifactsOfHero::artifactMoved(const ArtifactLocation &src, const Artifact assert(dst.slot >= GameConstants::BACKPACK_START); commonInfo->reset(); - CArtPlace *ap = NULL; + CArtPlace *ap = nullptr; BOOST_FOREACH(CArtifactsOfHero *aoh, commonInfo->participants) { if(dst.isHolder(aoh->curHero)) @@ -4998,7 +5003,7 @@ CArtPlace * CArtifactsOfHero::getArtPlace(int slot) return ap; } - return NULL; + return nullptr; } void CArtifactsOfHero::artifactAssembled(const ArtifactLocation &al) @@ -5035,7 +5040,7 @@ void CArtifactsOfHero::updateSlot(ArtifactPosition slotID) void CExchangeWindow::questlog(int whichHero) { - CCS->curh->dragAndDropCursor(NULL); + CCS->curh->dragAndDropCursor(nullptr); } void CExchangeWindow::prepareBackground() @@ -5174,30 +5179,30 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2, } //buttons - quit = new CAdventureMapButton(CGI->generaltexth->zelp[600], boost::bind(&CExchangeWindow::close, this), 732, 567, "IOKAY.DEF", SDLK_RETURN); + quit = new CAdventureMapButton(CGI->generaltexth->zelp[600], std::bind(&CExchangeWindow::close, this), 732, 567, "IOKAY.DEF", SDLK_RETURN); if(queryID.getNum() > 0) quit->callback += [=]{ LOCPLINT->cb->selectionMade(0, queryID); }; - questlogButton[0] = new CAdventureMapButton(CGI->generaltexth->heroscrn[0], "", boost::bind(&CExchangeWindow::questlog,this, 0), 10, 44, "hsbtns4.def"); - questlogButton[1] = new CAdventureMapButton(CGI->generaltexth->heroscrn[0], "", boost::bind(&CExchangeWindow::questlog,this, 1), 740, 44, "hsbtns4.def"); + questlogButton[0] = new CAdventureMapButton(CGI->generaltexth->heroscrn[0], "", std::bind(&CExchangeWindow::questlog,this, 0), 10, 44, "hsbtns4.def"); + questlogButton[1] = new CAdventureMapButton(CGI->generaltexth->heroscrn[0], "", std::bind(&CExchangeWindow::questlog,this, 1), 740, 44, "hsbtns4.def"); Rect barRect(5, 578, 725, 18); ourBar = new CGStatusBar(new CPicture(*background, barRect, 5, 578, false)); //garrison interface garr = new CGarrisonInt(69, 131, 4, Point(418,0), *background, Point(69,131), heroInst[0],heroInst[1], true, true); - garr->addSplitBtn(new CAdventureMapButton(CGI->generaltexth->tcommands[3], "", boost::bind(&CGarrisonInt::splitClick, garr), 10, 132, "TSBTNS.DEF")); - garr->addSplitBtn(new CAdventureMapButton(CGI->generaltexth->tcommands[3], "", boost::bind(&CGarrisonInt::splitClick, garr), 740, 132, "TSBTNS.DEF")); + garr->addSplitBtn(new CAdventureMapButton(CGI->generaltexth->tcommands[3], "", std::bind(&CGarrisonInt::splitClick, garr), 10, 132, "TSBTNS.DEF")); + garr->addSplitBtn(new CAdventureMapButton(CGI->generaltexth->tcommands[3], "", std::bind(&CGarrisonInt::splitClick, garr), 740, 132, "TSBTNS.DEF")); } CExchangeWindow::~CExchangeWindow() //d-tor { delete artifs[0]->commonInfo; - artifs[0]->commonInfo = NULL; - artifs[1]->commonInfo = NULL; + artifs[0]->commonInfo = nullptr; + artifs[1]->commonInfo = nullptr; } -CShipyardWindow::CShipyardWindow(const std::vector &cost, int state, int boatType, const boost::function &onBuy): +CShipyardWindow::CShipyardWindow(const std::vector &cost, int state, int boatType, const std::function &onBuy): CWindowObject(PLAYER_COLORED, "TPSHIP") { OBJ_CONSTRUCTION_CAPTURING_ALL; @@ -5220,8 +5225,8 @@ CShipyardWindow::CShipyardWindow(const std::vector &cost, int state, int b goldPic = new CAnimImage("RESOURCE", Res::GOLD, 0, 100, 244); woodPic = new CAnimImage("RESOURCE", Res::WOOD, 0, 196, 244); - quit = new CAdventureMapButton(CGI->generaltexth->allTexts[599], "", boost::bind(&CShipyardWindow::close, this), 224, 312, "ICANCEL", SDLK_RETURN); - build = new CAdventureMapButton(CGI->generaltexth->allTexts[598], "", boost::bind(&CShipyardWindow::close, this), 42, 312, "IBUY30", SDLK_RETURN); + quit = new CAdventureMapButton(CGI->generaltexth->allTexts[599], "", std::bind(&CShipyardWindow::close, this), 224, 312, "ICANCEL", SDLK_RETURN); + build = new CAdventureMapButton(CGI->generaltexth->allTexts[598], "", std::bind(&CShipyardWindow::close, this), 42, 312, "IBUY30", SDLK_RETURN); build->callback += onBuy; for(Res::ERes i = Res::WOOD; i <= Res::GOLD; vstd::advance(i, 1)) @@ -5247,7 +5252,7 @@ CPuzzleWindow::CPuzzleWindow(const int3 &GrailPos, double discoveredRatio): OBJ_CONSTRUCTION_CAPTURING_ALL; CCS->soundh->playSound(soundBase::OBELISK); - quitb = new CAdventureMapButton(CGI->generaltexth->allTexts[599], "", boost::bind(&CPuzzleWindow::close, this), 670, 538, "IOK6432.DEF", SDLK_RETURN); + quitb = new CAdventureMapButton(CGI->generaltexth->allTexts[599], "", std::bind(&CPuzzleWindow::close, this), 670, 538, "IOK6432.DEF", SDLK_RETURN); quitb->assignedKeys.insert(SDLK_ESCAPE); quitb->borderColor = Colors::METALLIC_GOLD; quitb->borderEnabled = true; @@ -5386,9 +5391,9 @@ CTransformerWindow::CTransformerWindow(const CGHeroInstance * _hero, const CGTow if ( army->getCreature(SlotID(i)) ) items.push_back(new CItem(this, army->getStackCount(SlotID(i)), i)); - all = new CAdventureMapButton(CGI->generaltexth->zelp[590],boost::bind(&CTransformerWindow::addAll,this), 146,416,"ALTARMY.DEF",SDLK_a); - convert= new CAdventureMapButton(CGI->generaltexth->zelp[591],boost::bind(&CTransformerWindow::makeDeal,this), 269,416,"ALTSACR.DEF",SDLK_RETURN); - cancel = new CAdventureMapButton(CGI->generaltexth->zelp[592],boost::bind(&CTransformerWindow::close, this),392,416,"ICANCEL.DEF",SDLK_ESCAPE); + all = new CAdventureMapButton(CGI->generaltexth->zelp[590],std::bind(&CTransformerWindow::addAll,this), 146,416,"ALTARMY.DEF",SDLK_a); + convert= new CAdventureMapButton(CGI->generaltexth->zelp[591],std::bind(&CTransformerWindow::makeDeal,this), 269,416,"ALTSACR.DEF",SDLK_RETURN); + cancel = new CAdventureMapButton(CGI->generaltexth->zelp[592],std::bind(&CTransformerWindow::close, this),392,416,"ICANCEL.DEF",SDLK_ESCAPE); bar = new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); new CLabel(153, 29,FONT_SMALL, CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[485]);//holding area @@ -5448,7 +5453,7 @@ void CUniversityWindow::CItem::showAll(SDL_Surface * to) break; case 2: bar = parent->green; break; - default:bar = NULL; + default:bar = nullptr; break; } assert(bar); @@ -5507,7 +5512,7 @@ CUniversityWindow::CUniversityWindow(const CGHeroInstance * _hero, const IMarket items.push_back(new CItem(this, list[i], 54+i*104, 234)); cancel = new CAdventureMapButton(CGI->generaltexth->zelp[632], - boost::bind(&CUniversityWindow::close, this),200,313,"IOKAY.DEF",SDLK_RETURN); + std::bind(&CUniversityWindow::close, this),200,313,"IOKAY.DEF",SDLK_RETURN); bar = new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); } @@ -5540,11 +5545,11 @@ CUnivConfirmWindow::CUnivConfirmWindow(CUniversityWindow * PARENT, int SKILL, bo boost::replace_first(text, "%s", CGI->generaltexth->skillName[SKILL]); boost::replace_first(text, "%d", "2000"); - confirm= new CAdventureMapButton(hoverText, text, boost::bind(&CUnivConfirmWindow::makeDeal, this, SKILL), + confirm= new CAdventureMapButton(hoverText, text, std::bind(&CUnivConfirmWindow::makeDeal, this, SKILL), 148,299,"IBY6432.DEF",SDLK_RETURN); confirm->block(!available); - cancel = new CAdventureMapButton(CGI->generaltexth->zelp[631],boost::bind(&CUnivConfirmWindow::close, this), + cancel = new CAdventureMapButton(CGI->generaltexth->zelp[631],std::bind(&CUnivConfirmWindow::close, this), 252,299,"ICANCEL.DEF",SDLK_ESCAPE); bar = new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); } @@ -5577,19 +5582,19 @@ CHillFortWindow::CHillFortWindow(const CGHeroInstance *visitor, const CGObjectIn for (int i=0; iblock(currState[i] == -1); } files.clear(); files += "APHLF4R.DEF", "APHLF4Y.DEF", "APHLF4G.DEF"; currState[slotsCount] = getState(SlotID(slotsCount)); - upgradeAll = new CAdventureMapButton(CGI->generaltexth->allTexts[432],"",boost::bind(&CHillFortWindow::makeDeal, this, SlotID(slotsCount)), + upgradeAll = new CAdventureMapButton(CGI->generaltexth->allTexts[432],"",std::bind(&CHillFortWindow::makeDeal, this, SlotID(slotsCount)), 30, 231, "", SDLK_0, &files); - quit = new CAdventureMapButton("","",boost::bind(&CHillFortWindow::close, this), 294, 275, "IOKAY.DEF", SDLK_RETURN); + quit = new CAdventureMapButton("","",std::bind(&CHillFortWindow::close, this), 294, 275, "IOKAY.DEF", SDLK_RETURN); bar = new CGStatusBar(new CPicture(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26)); - garr = new CGarrisonInt(108, 60, 18, Point(),background->bg,Point(108,60),hero,NULL); + garr = new CGarrisonInt(108, 60, 18, Point(),background->bg,Point(108,60),hero,nullptr); updateGarrisons(); } @@ -5747,7 +5752,7 @@ CThievesGuildWindow::CThievesGuildWindow(const CGObjectInstance * _owner): SThievesGuildInfo tgi; //info to be displayed LOCPLINT->cb->getThievesGuildInfo(tgi, owner); - exitb = new CAdventureMapButton (CGI->generaltexth->allTexts[600], "", boost::bind(&CThievesGuildWindow::close,this), 748, 556, "TPMAGE1", SDLK_RETURN); + exitb = new CAdventureMapButton (CGI->generaltexth->allTexts[600], "", std::bind(&CThievesGuildWindow::close,this), 748, 556, "TPMAGE1", SDLK_RETURN); exitb->assignedKeys.insert(SDLK_ESCAPE); statusBar = new CGStatusBar(3, 555, "TStatBar.bmp", 742); @@ -5927,7 +5932,7 @@ void MoraleLuckBox::set(const IBonusBearer *node) } MoraleLuckBox::MoraleLuckBox(bool Morale, const Rect &r, bool Small): - image(NULL), + image(nullptr), morale(Morale), small(Small) { @@ -5947,7 +5952,7 @@ void CWindowWithArtifacts::artifactRemoved(const ArtifactLocation &artLoc) void CWindowWithArtifacts::artifactMoved(const ArtifactLocation &artLoc, const ArtifactLocation &destLoc) { - CArtifactsOfHero *destaoh = NULL; + CArtifactsOfHero *destaoh = nullptr; BOOST_FOREACH(CArtifactsOfHero *aoh, artSets) { aoh->artifactMoved(artLoc, destLoc); @@ -5957,7 +5962,7 @@ void CWindowWithArtifacts::artifactMoved(const ArtifactLocation &artLoc, const A } //Make sure the status bar is updated so it does not display old text - if(destaoh != NULL && destaoh->getArtPlace(destLoc.slot) != NULL) + if(destaoh != nullptr && destaoh->getArtPlace(destLoc.slot) != nullptr) { destaoh->getArtPlace(destLoc.slot)->hover(true); } @@ -5978,8 +5983,8 @@ void CWindowWithArtifacts::artifactAssembled(const ArtifactLocation &artLoc) void CArtifactsOfHero::SCommonPart::Artpos::clear() { slotID = ArtifactPosition::PRE_FIRST; - AOH = NULL; - art = NULL; + AOH = nullptr; + art = nullptr; } CArtifactsOfHero::SCommonPart::Artpos::Artpos() @@ -5993,7 +5998,7 @@ void CArtifactsOfHero::SCommonPart::Artpos::setTo(const CArtPlace *place, bool d AOH = place->ourOwner; if(slotID >= 19 && dontTakeBackpack) - art = NULL; + art = nullptr; else art = place->ourArt; } @@ -6100,7 +6105,7 @@ CIntObject * CRClickPopup::createInfoWin(Point position, const CGObjectInstance case Obj::GARRISON2: return new CInfoBoxPopup(position, dynamic_cast(specific)); default: - return NULL; + return nullptr; } } diff --git a/client/GUIClasses.h b/client/GUIClasses.h index 8dce581d1..07e7de0de 100644 --- a/client/GUIClasses.h +++ b/client/GUIClasses.h @@ -105,7 +105,7 @@ public: ~CInfoWindow(); //d-tor static void showYesNoDialog( const std::string & text, const std::vector *components, const CFunctionList &onYes, const CFunctionList &onNo, bool DelComps = true, PlayerColor player = PlayerColor(1)); //use only before the game starts! (showYesNoDialog in LOCPLINT must be used then) - static CInfoWindow *create(const std::string &text, PlayerColor playerID = PlayerColor(1), const std::vector *components = NULL, bool DelComps = false); + static CInfoWindow *create(const std::string &text, PlayerColor playerID = PlayerColor(1), const std::vector *components = nullptr, bool DelComps = false); /// create text from title and description: {title}\n\n description static std::string genText(std::string title, std::string description); @@ -160,7 +160,7 @@ public: void show(SDL_Surface * to); CInfoPopup(SDL_Surface * Bitmap, int x, int y, bool Free=false); //c-tor CInfoPopup(SDL_Surface * Bitmap, const Point &p, EAlignment alignment, bool Free=false); //c-tor - CInfoPopup(SDL_Surface * Bitmap = NULL, bool Free = false); //default c-tor + CInfoPopup(SDL_Surface * Bitmap = nullptr, bool Free = false); //default c-tor void init(int x, int y); ~CInfoPopup(); //d-tor @@ -227,14 +227,14 @@ class CSelectableComponent : public CComponent, public CKeyShortcut void init(); public: bool selected; //if true, this component is selected - boost::function onSelect; //function called on selection change + std::function onSelect; //function called on selection change void showAll(SDL_Surface * to); void select(bool on); void clickLeft(tribool down, bool previousState); //call-in - CSelectableComponent(Etype Type, int Sub, int Val, ESize imageSize=large, boost::function OnSelect = 0); //c-tor - CSelectableComponent(const Component &c, boost::function OnSelect = 0); //c-tor + CSelectableComponent(Etype Type, int Sub, int Val, ESize imageSize=large, std::function OnSelect = 0); //c-tor + CSelectableComponent(const Component &c, std::function OnSelect = 0); //c-tor }; /// box with multiple components (up to 8?) @@ -244,7 +244,7 @@ class CComponentBox : public CIntObject std::vector components; CSelectableComponent * selected; - boost::function onSelect; + std::function onSelect; void selectionChanged(CSelectableComponent * newSelection); @@ -269,7 +269,7 @@ public: /// constructor for selectable components /// will also create "or" labels between components /// onSelect - optional function that will be called every time on selection change - CComponentBox(std::vector components, Rect position, boost::function onSelect = 0); + CComponentBox(std::vector components, Rect position, std::function onSelect = 0); }; //////////////////////////////////////////////////////////////////////////////// @@ -314,7 +314,7 @@ class CGarrisonSlot : public CIntObject { SlotID ID; //for identification CGarrisonInt *owner; - const CStackInstance *myStack; //NULL if slot is empty + const CStackInstance *myStack; //nullptr if slot is empty const CCreature *creature; int upg; //0 - up garrison, 1 - down garrison @@ -330,7 +330,7 @@ public: void clickRight(tribool down, bool previousState); void clickLeft(tribool down, bool previousState); void update(); - CGarrisonSlot(CGarrisonInt *Owner, int x, int y, SlotID IID, int Upg=0, const CStackInstance * Creature=NULL); + CGarrisonSlot(CGarrisonInt *Owner, int x, int y, SlotID IID, int Upg=0, const CStackInstance * Creature=nullptr); friend class CGarrisonInt; }; @@ -383,7 +383,7 @@ public: //removableUnits - you can take units from top; //smallImgs - units images size 64x58 or 32x32; //twoRows - display slots in 2 row (1st row = 4 slots, 2nd = 3 slots) - CGarrisonInt(int x, int y, int inx, const Point &garsOffset, SDL_Surface *pomsur, const Point &SurOffset, const CArmedInstance *s1, const CArmedInstance *s2=NULL, bool _removableUnits = true, bool smallImgs = false, bool _twoRows=false); //c-tor + CGarrisonInt(int x, int y, int inx, const Point &garsOffset, SDL_Surface *pomsur, const Point &SurOffset, const CArmedInstance *s1, const CArmedInstance *s2=nullptr, bool _removableUnits = true, bool smallImgs = false, bool _twoRows=false); //c-tor }; /// draws picture with creature on background, use Animated=true to get animation @@ -430,7 +430,7 @@ class CRecruitmentWindow : public CWindowObject void createItems(TResources res); }; - boost::function onRecruit; //void (int ID, int amount) <-- call to recruit creatures + std::function onRecruit; //void (int ID, int amount) <-- call to recruit creatures int level; const CArmedInstance *dst; @@ -454,14 +454,14 @@ class CRecruitmentWindow : public CWindowObject void showAll(SDL_Surface *to); public: const CGDwelling * const dwelling; - CRecruitmentWindow(const CGDwelling *Dwelling, int Level, const CArmedInstance *Dst, const boost::function & Recruit, int y_offset = 0); //creatures - pairs //c-tor + CRecruitmentWindow(const CGDwelling *Dwelling, int Level, const CArmedInstance *Dst, const std::function & Recruit, int y_offset = 0); //creatures - pairs //c-tor void availableCreaturesChanged(); }; /// Split window where creatures can be split up into two single unit stacks class CSplitWindow : public CWindowObject { - boost::function callback; + std::function callback; int leftAmount; int rightAmount; @@ -485,7 +485,7 @@ public: * leftMin, rightMin - minimal amount of creatures in each stack * leftAmount, rightAmount - amount of creatures in each stack */ - CSplitWindow(const CCreature * creature, boost::function callback, + CSplitWindow(const CCreature * creature, std::function callback, int leftMin, int rightMin, int leftAmount, int rightAmount); }; @@ -493,12 +493,12 @@ public: class CLevelWindow : public CWindowObject { CComponentBox * box; //skills to select - boost::function cb; + std::function cb; void selectionChanged(unsigned to); public: - CLevelWindow(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, boost::function callback); //c-tor + CLevelWindow(const CGHeroInstance *hero, PrimarySkill::PrimarySkill pskill, std::vector &skills, std::function callback); //c-tor ~CLevelWindow(); //d-tor }; @@ -530,7 +530,7 @@ class CObjectListWindow : public CWindowObject void clickLeft(tribool down, bool previousState); }; - boost::function onSelect;//called when OK button is pressed, returns id of selected item. + std::function onSelect;//called when OK button is pressed, returns id of selected item. CLabel * title; CLabel * descr; @@ -544,12 +544,12 @@ class CObjectListWindow : public CWindowObject public: size_t selected;//index of currently selected item /// Callback will be called when OK button is pressed, returns id of selected item. initState = initially selected item - /// Image can be NULL + /// Image can be nullptr ///item names will be taken from map objects CObjectListWindow(const std::vector &_items, CPicture * titlePic, std::string _title, std::string _descr, - boost::function Callback); + std::function Callback); CObjectListWindow(const std::vector &_items, CPicture * titlePic, std::string _title, std::string _descr, - boost::function Callback); + std::function Callback); CIntObject *genItem(size_t index); void elementSelected();//call callback and close this window @@ -625,7 +625,7 @@ public: CArtifactsOfHero *arts; //all indexes: 1 = left, 0 = right std::vector items[2]; - CTradeableItem *hLeft, *hRight; //highlighted items (NULL if no highlight) + CTradeableItem *hLeft, *hRight; //highlighted items (nullptr if no highlight) EType itemsType[2]; EMarketMode::EMarketMode mode;//0 - res<->res; 1 - res<->plauer; 2 - buy artifact; 3 - sell artifact @@ -640,7 +640,7 @@ public: void initSubs(bool Left); void initTypes(); void initItems(bool Left); - std::vector *getItemsIds(bool Left); //NULL if default + std::vector *getItemsIds(bool Left); //nullptr if default void getPositionsFor(std::vector &poss, bool Left, EType type) const; void removeItems(const std::set &toRemove); void removeItem(CTradeableItem * t); @@ -671,7 +671,7 @@ public: void sliderMoved(int to); void makeDeal(); void selectionChanged(bool side); //true == left - CMarketplaceWindow(const IMarket *Market, const CGHeroInstance *Hero = NULL, EMarketMode::EMarketMode Mode = EMarketMode::RESOURCE_RESOURCE); //c-tor + CMarketplaceWindow(const IMarket *Market, const CGHeroInstance *Hero = nullptr, EMarketMode::EMarketMode Mode = EMarketMode::RESOURCE_RESOURCE); //c-tor ~CMarketplaceWindow(); //d-tor Point selectionOffset(bool Left) const; @@ -908,7 +908,7 @@ public: CArtifactsOfHero * ourOwner; const CArtifactInstance * ourArt; // should be changed only with setArtifact() - CArtPlace(Point position, const CArtifactInstance * Art = NULL); //c-tor + CArtPlace(Point position, const CArtifactInstance * Art = nullptr); //c-tor void clickLeft(tribool down, bool previousState); void clickRight(tribool down, bool previousState); void select (); @@ -955,7 +955,7 @@ public: CAdventureMapButton * leftArtRoll, * rightArtRoll; bool allowedAssembling; std::multiset artifactsOnAltar; //artifacts id that are technically present in backpack but in GUI are moved to the altar - they'll be omitted in backpack slots - boost::function highlightModeCallback; //if set, clicking on art place doesn't pick artifact but highlights the slot and calls this function + std::function highlightModeCallback; //if set, clicking on art place doesn't pick artifact but highlights the slot and calls this function void realizeCurrentTransaction(); //calls callback with parameters stored in commonInfo void artifactMoved(const ArtifactLocation &src, const ArtifactLocation &dst); @@ -1057,7 +1057,7 @@ public: CGStatusBar * statusBar; - CShipyardWindow(const std::vector &cost, int state, int boatType, const boost::function &onBuy); + CShipyardWindow(const std::vector &cost, int state, int boatType, const std::function &onBuy); }; /// Puzzle screen which gets uncovered when you visit obilisks @@ -1099,7 +1099,7 @@ public: const CArmedInstance *army;//object with army for transforming (hero or town) const CGHeroInstance *hero;//only if we have hero in town - const CGTownInstance *town;//market, town garrison is used if hero == NULL + const CGTownInstance *town;//market, town garrison is used if hero == nullptr std::vector items; CAdventureMapButton *all, *convert, *cancel; diff --git a/client/Graphics.cpp b/client/Graphics.cpp index 0cd62055b..b5fb11401 100644 --- a/client/Graphics.cpp +++ b/client/Graphics.cpp @@ -42,7 +42,7 @@ using namespace CSDL_Ext; * */ -Graphics * graphics = NULL; +Graphics * graphics = nullptr; void Graphics::loadPaletteAndColors() { @@ -121,12 +121,12 @@ void Graphics::initializeBattleGraphics() Graphics::Graphics() { std::vector tasks; //preparing list of graphics to load - tasks += boost::bind(&Graphics::loadFonts,this); - tasks += boost::bind(&Graphics::loadPaletteAndColors,this); - tasks += boost::bind(&Graphics::loadHeroFlags,this); - tasks += boost::bind(&Graphics::initializeBattleGraphics,this); - tasks += boost::bind(&Graphics::loadErmuToPicture,this); - tasks += boost::bind(&Graphics::initializeImageLists,this); + tasks += std::bind(&Graphics::loadFonts,this); + tasks += std::bind(&Graphics::loadPaletteAndColors,this); + tasks += std::bind(&Graphics::loadHeroFlags,this); + tasks += std::bind(&Graphics::initializeBattleGraphics,this); + tasks += std::bind(&Graphics::loadErmuToPicture,this); + tasks += std::bind(&Graphics::initializeImageLists,this); tasks += GET_DEF_ESS(resources32,"RESOURCE.DEF"); tasks += GET_DEF_ESS(spellscr,"SPELLSCR.DEF"); tasks += GET_DEF_ESS(heroMoveArrows,"ADAG.DEF"); @@ -199,7 +199,7 @@ CDefEssential * Graphics::loadHeroAnim( const std::string &name, const std::vect return anim; } -void Graphics::loadHeroFlags(std::pair Graphics::*, std::vector > &pr, bool mode) +void Graphics::loadHeroFlagsDetail(std::pair Graphics::*, std::vector > &pr, bool mode) { for(int i=0;i<8;i++) (this->*pr.first).push_back(CDefHandler::giveDefEss(pr.second[i])); @@ -273,7 +273,7 @@ void Graphics::loadHeroFlags() boost::thread_group grupa; for(int g=3; g>=0; --g) { - grupa.create_thread(boost::bind(&Graphics::loadHeroFlags,this,boost::ref(pr[g]),true)); + grupa.create_thread(std::bind(&Graphics::loadHeroFlagsDetail, this, std::ref(pr[g]), true)); } grupa.join_all(); logGlobal->infoStream() << "Loading and transforming heroes' flags: "<format->BitsPerPixel == 8) { - SDL_Color *palette = NULL; + SDL_Color *palette = nullptr; if(player < PlayerColor::PLAYER_LIMIT) { palette = playerColorPalette + 32*player.getNum(); diff --git a/client/Graphics.h b/client/Graphics.h index de11b232a..3e4e1cc8e 100644 --- a/client/Graphics.h +++ b/client/Graphics.h @@ -74,7 +74,7 @@ public: void initializeBattleGraphics(); void loadPaletteAndColors(); void loadHeroFlags(); - void loadHeroFlags(std::pair Graphics::*, std::vector > &pr, bool mode); + void loadHeroFlagsDetail(std::pair Graphics::*, std::vector > &pr, bool mode); void loadHeroAnims(); CDefEssential * loadHeroAnim(const std::string &name, const std::vector > &rotations); void loadErmuToPicture(); diff --git a/client/NetPacksClient.cpp b/client/NetPacksClient.cpp index a9faa981a..2304881cc 100644 --- a/client/NetPacksClient.cpp +++ b/client/NetPacksClient.cpp @@ -476,7 +476,7 @@ void SetHeroesInTown::applyCl( CClient *cl ) // void SetHeroArtifacts::applyCl( CClient *cl ) // { // // CGHeroInstance *h = GS(cl)->getHero(hid); -// // CGameInterface *player = (vstd::contains(cl->playerint,h->tempOwner) ? cl->playerint[h->tempOwner] : NULL); +// // CGameInterface *player = (vstd::contains(cl->playerint,h->tempOwner) ? cl->playerint[h->tempOwner] : nullptr); // // if(!player) // // return; // @@ -632,7 +632,7 @@ void BattleSetActiveStack::applyCl( CClient *cl ) playerToCall = activated->owner; } if( vstd::contains(cl->battleints, playerToCall) ) - boost::thread( boost::bind(&CClient::waitForMoveAndSend, cl, playerToCall) ); + boost::thread( std::bind(&CClient::waitForMoveAndSend, cl, playerToCall) ); } void BattleTriggerEffect::applyCl(CClient * cl) @@ -924,7 +924,7 @@ void SetAvailableArtifacts::applyCl(CClient *cl) if(id < 0) //artifact merchants globally { for(auto i=cl->playerint.begin(); i!=cl->playerint.end(); i++) - i->second->availableArtifactsChanged(NULL); + i->second->availableArtifactsChanged(nullptr); } else { diff --git a/client/battle/CBattleAnimations.cpp b/client/battle/CBattleAnimations.cpp index 9e20afe41..fa207ea5d 100644 --- a/client/battle/CBattleAnimations.cpp +++ b/client/battle/CBattleAnimations.cpp @@ -26,7 +26,7 @@ void CBattleAnimation::endAnim() { if(it->first == this) { - it->first = NULL; + it->first = nullptr; } } @@ -97,7 +97,7 @@ CAttackAnimation::CAttackAnimation(CBattleInterface *_owner, const CStack *attac : CBattleStackAnimation(_owner, attacker), dest(_dest), attackedStack(defender), attackingStack(attacker) { - assert(attackingStack && "attackingStack is NULL in CBattleAttack::CBattleAttack !\n"); + assert(attackingStack && "attackingStack is nullptr in CBattleAttack::CBattleAttack !\n"); bool isCatapultAttack = attackingStack->hasBonusOfType(Bonus::CATAPULT) && owner->curInt->cb->battleHexToWallPart(_dest) >= 0; @@ -120,7 +120,7 @@ bool CDefenceAnimation::init() // return false; //} - if(attacker == NULL && owner->battleEffects.size() > 0) + if(attacker == nullptr && owner->battleEffects.size() > 0) return false; ui32 lowestMoveID = owner->animIDhelper + 5; @@ -134,7 +134,7 @@ bool CDefenceAnimation::init() if(attAnim && attAnim->stack->ID != stack->ID) continue; - if(attacker != NULL) + if(attacker != nullptr) { int attackerAnimType = owner->creAnims[attacker->ID]->getType(); if( ( attackerAnimType == CCreatureAnim::ATTACK_UP || @@ -222,7 +222,7 @@ void CDefenceAnimation::endAnim() //printing info to console - //if(attacker!=NULL) + //if(attacker!=nullptr) // owner->printConsoleAttacked(stack, dmg, amountKilled, attacker); //const CStack * attacker = owner->curInt->cb->battleGetStackByID(IDby, false); @@ -604,7 +604,7 @@ CReverseAnimation::CReverseAnimation(CBattleInterface * _owner, const CStack * s bool CReverseAnimation::init() { - if(myAnim() == NULL || myAnim()->getType() == CCreatureAnim::DEATH) + if(myAnim() == nullptr || myAnim()->getType() == CCreatureAnim::DEATH) { endAnim(); @@ -978,7 +978,7 @@ bool CSpellEffectAnimation::init() } // Correction for 2-hex creatures. - if (destStack != NULL && destStack->doubleWide()) + if (destStack != nullptr && destStack->doubleWide()) be.x += (destStack->attackerOwned ? -1 : 1)*tilePos.w/2; owner->battleEffects.push_back(be); diff --git a/client/battle/CBattleInterface.cpp b/client/battle/CBattleInterface.cpp index 5300a21c2..0d4f595ae 100644 --- a/client/battle/CBattleInterface.cpp +++ b/client/battle/CBattleInterface.cpp @@ -92,11 +92,11 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe CGHeroInstance *hero1, CGHeroInstance *hero2, const SDL_Rect & myRect, shared_ptr att, shared_ptr defen) - : background(nullptr), queue(NULL), attackingHeroInstance(hero1), defendingHeroInstance(hero2), animCount(0), - activeStack(NULL), stackToActivate(NULL), selectedStack(NULL), mouseHoveredStack(-1), lastMouseHoveredStackAnimationTime(-1), previouslyHoveredHex(-1), - currentlyHoveredHex(-1), attackingHex(-1), stackCanCastSpell(false), creatureCasting(false), spellDestSelectMode(false), spellSelMode(NO_LOCATION), spellToCast(NULL), sp(NULL), - siegeH(NULL), attackerInt(att), defenderInt(defen), curInt(att), animIDhelper(0), - givenCommand(NULL), myTurn(false), resWindow(NULL), moveStarted(false), moveSh(-1), bresult(NULL) + : background(nullptr), queue(nullptr), attackingHeroInstance(hero1), defendingHeroInstance(hero2), animCount(0), + activeStack(nullptr), stackToActivate(nullptr), selectedStack(nullptr), mouseHoveredStack(-1), lastMouseHoveredStackAnimationTime(-1), previouslyHoveredHex(-1), + currentlyHoveredHex(-1), attackingHex(-1), stackCanCastSpell(false), creatureCasting(false), spellDestSelectMode(false), spellSelMode(NO_LOCATION), spellToCast(nullptr), sp(nullptr), + siegeH(nullptr), attackerInt(att), defenderInt(defen), curInt(att), animIDhelper(0), + givenCommand(nullptr), myTurn(false), resWindow(nullptr), moveStarted(false), moveSh(-1), bresult(nullptr) { OBJ_CONSTRUCTION; @@ -109,7 +109,7 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe animsAreDisplayed.setn(false); pos = myRect; strongInterest = true; - givenCommand = new CondSh(NULL); + givenCommand = new CondSh(nullptr); if(attackerInt && attackerInt->cb->battleGetTacticDist()) //hot-seat -> check tactics for both players (defender may be local human) tacticianInterface = attackerInt; @@ -215,19 +215,19 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe // blitAt(menu, pos.x, 556 + pos.y); //preparing buttons and console - bOptions = new CAdventureMapButton (CGI->generaltexth->zelp[381].first, CGI->generaltexth->zelp[381].second, boost::bind(&CBattleInterface::bOptionsf,this), 3, 561, "icm003.def", SDLK_o); - bSurrender = new CAdventureMapButton (CGI->generaltexth->zelp[379].first, CGI->generaltexth->zelp[379].second, boost::bind(&CBattleInterface::bSurrenderf,this), 54, 561, "icm001.def", SDLK_s); - bFlee = new CAdventureMapButton (CGI->generaltexth->zelp[380].first, CGI->generaltexth->zelp[380].second, boost::bind(&CBattleInterface::bFleef,this), 105, 561, "icm002.def", SDLK_r); + bOptions = new CAdventureMapButton (CGI->generaltexth->zelp[381].first, CGI->generaltexth->zelp[381].second, std::bind(&CBattleInterface::bOptionsf,this), 3, 561, "icm003.def", SDLK_o); + bSurrender = new CAdventureMapButton (CGI->generaltexth->zelp[379].first, CGI->generaltexth->zelp[379].second, std::bind(&CBattleInterface::bSurrenderf,this), 54, 561, "icm001.def", SDLK_s); + bFlee = new CAdventureMapButton (CGI->generaltexth->zelp[380].first, CGI->generaltexth->zelp[380].second, std::bind(&CBattleInterface::bFleef,this), 105, 561, "icm002.def", SDLK_r); bFlee->block(!curInt->cb->getMyColor() || !curInt->cb->battleCanFlee()); bSurrender->block(!curInt->cb->getMyColor() || curInt->cb->battleGetSurrenderCost() < 0); - bAutofight = new CAdventureMapButton (CGI->generaltexth->zelp[382].first, CGI->generaltexth->zelp[382].second, boost::bind(&CBattleInterface::bAutofightf,this), 157, 561, "icm004.def", SDLK_a); - bSpell = new CAdventureMapButton (CGI->generaltexth->zelp[385].first, CGI->generaltexth->zelp[385].second, boost::bind(&CBattleInterface::bSpellf,this), 645, 561, "icm005.def", SDLK_c); + bAutofight = new CAdventureMapButton (CGI->generaltexth->zelp[382].first, CGI->generaltexth->zelp[382].second, std::bind(&CBattleInterface::bAutofightf,this), 157, 561, "icm004.def", SDLK_a); + bSpell = new CAdventureMapButton (CGI->generaltexth->zelp[385].first, CGI->generaltexth->zelp[385].second, std::bind(&CBattleInterface::bSpellf,this), 645, 561, "icm005.def", SDLK_c); bSpell->block(true); - bWait = new CAdventureMapButton (CGI->generaltexth->zelp[386].first, CGI->generaltexth->zelp[386].second, boost::bind(&CBattleInterface::bWaitf,this), 696, 561, "icm006.def", SDLK_w); - bDefence = new CAdventureMapButton (CGI->generaltexth->zelp[387].first, CGI->generaltexth->zelp[387].second, boost::bind(&CBattleInterface::bDefencef,this), 747, 561, "icm007.def", SDLK_d); + bWait = new CAdventureMapButton (CGI->generaltexth->zelp[386].first, CGI->generaltexth->zelp[386].second, std::bind(&CBattleInterface::bWaitf,this), 696, 561, "icm006.def", SDLK_w); + bDefence = new CAdventureMapButton (CGI->generaltexth->zelp[387].first, CGI->generaltexth->zelp[387].second, std::bind(&CBattleInterface::bDefencef,this), 747, 561, "icm007.def", SDLK_d); bDefence->assignedKeys.insert(SDLK_SPACE); - bConsoleUp = new CAdventureMapButton (std::string(), std::string(), boost::bind(&CBattleInterface::bConsoleUpf,this), 624, 561, "ComSlide.def", SDLK_UP); - bConsoleDown = new CAdventureMapButton (std::string(), std::string(), boost::bind(&CBattleInterface::bConsoleDownf,this), 624, 580, "ComSlide.def", SDLK_DOWN); + bConsoleUp = new CAdventureMapButton (std::string(), std::string(), std::bind(&CBattleInterface::bConsoleUpf,this), 624, 561, "ComSlide.def", SDLK_UP); + bConsoleDown = new CAdventureMapButton (std::string(), std::string(), std::bind(&CBattleInterface::bConsoleDownf,this), 624, 580, "ComSlide.def", SDLK_DOWN); bConsoleDown->setOffset(2); console = new CBattleConsole(); console->pos.x += 211; @@ -236,8 +236,8 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe console->pos.h = 38; if(tacticsMode) { - btactNext = new CAdventureMapButton(std::string(), std::string(), boost::bind(&CBattleInterface::bTacticNextStack,this, (CStack*)NULL), 213, 560, "icm011.def", SDLK_SPACE); - btactEnd = new CAdventureMapButton(std::string(), std::string(), boost::bind(&CBattleInterface::bEndTacticPhase,this), 419, 560, "icm012.def", SDLK_RETURN); + btactNext = new CAdventureMapButton(std::string(), std::string(), std::bind(&CBattleInterface::bTacticNextStack,this, (CStack*)nullptr), 213, 560, "icm011.def", SDLK_SPACE); + btactEnd = new CAdventureMapButton(std::string(), std::string(), std::bind(&CBattleInterface::bEndTacticPhase,this), 419, 560, "icm012.def", SDLK_RETURN); bDefence->block(true); bWait->block(true); menu = BitmapHandler::loadBitmap("COPLACBR.BMP"); @@ -245,7 +245,7 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe else { menu = BitmapHandler::loadBitmap("CBAR.BMP"); - btactEnd = btactNext = NULL; + btactEnd = btactNext = nullptr; } graphics->blueToPlayersAdv(menu, curInt->playerID); @@ -258,12 +258,12 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe else battleImage = hero1->type->heroClass->imageBattleMale; - attackingHero = new CBattleHero(battleImage, false, hero1->tempOwner, hero1->tempOwner == curInt->playerID ? hero1 : NULL, this); + attackingHero = new CBattleHero(battleImage, false, hero1->tempOwner, hero1->tempOwner == curInt->playerID ? hero1 : nullptr, this); attackingHero->pos = genRect(attackingHero->dh->ourImages[0].bitmap->h, attackingHero->dh->ourImages[0].bitmap->w, pos.x - 43, pos.y - 19); } else { - attackingHero = NULL; + attackingHero = nullptr; } if(hero2) // defending hero { @@ -273,12 +273,12 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe else battleImage = hero2->type->heroClass->imageBattleMale; - defendingHero = new CBattleHero(battleImage, true, hero2->tempOwner, hero2->tempOwner == curInt->playerID ? hero2 : NULL, this); + defendingHero = new CBattleHero(battleImage, true, hero2->tempOwner, hero2->tempOwner == curInt->playerID ? hero2 : nullptr, this); defendingHero->pos = genRect(defendingHero->dh->ourImages[0].bitmap->h, defendingHero->dh->ourImages[0].bitmap->w, pos.x + 693, pos.y - 19); } else { - defendingHero = NULL; + defendingHero = nullptr; } //preparing cells and hexes @@ -402,7 +402,7 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe CBattleInterface::~CBattleInterface() { - curInt->battleInt = NULL; + curInt->battleInt = nullptr; givenCommand->cond.notify_all(); //that two lines should make any activeStack waiting thread to finish @@ -589,7 +589,7 @@ void CBattleInterface::show(SDL_Surface * to) SDL_SetClipRect(to, &pos); //printing background and hexes - if(activeStack != NULL && creAnims[activeStack->ID]->getType() != CCreatureAnim::MOVING) //show everything with range + if(activeStack != nullptr && creAnims[activeStack->ID]->getType() != CCreatureAnim::MOVING) //show everything with range { blitAt(backgroundWithHexes, pos.x, pos.y, to); } @@ -599,7 +599,7 @@ void CBattleInterface::show(SDL_Surface * to) blitAt(background, pos.x, pos.y, to); if(settings["battle"]["cellBorders"].Bool()) { - CSDL_Ext::blit8bppAlphaTo24bpp(cellBorders, NULL, to, &pos); + CSDL_Ext::blit8bppAlphaTo24bpp(cellBorders, nullptr, to, &pos); } //Blit absolute obstacles BOOST_FOREACH(auto &oi, curInt->cb->battleGetAllObstacles()) @@ -644,7 +644,7 @@ void CBattleInterface::show(SDL_Surface * to) int x = 14 + ((shadedHex/GameConstants::BFIELD_WIDTH)%2==0 ? 22 : 0) + 44*(shadedHex%GameConstants::BFIELD_WIDTH) + pos.x; int y = 86 + 42 * (shadedHex/GameConstants::BFIELD_WIDTH) + pos.y; SDL_Rect temp_rect = genRect(cellShade->h, cellShade->w, x, y); - CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, NULL, to, &temp_rect); + CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, nullptr, to, &temp_rect); } } } @@ -658,12 +658,12 @@ void CBattleInterface::show(SDL_Surface * to) int x = 14 + ((hex/GameConstants::BFIELD_WIDTH)%2==0 ? 22 : 0) + 44*(hex%GameConstants::BFIELD_WIDTH) + pos.x; int y = 86 + 42 * (hex/GameConstants::BFIELD_WIDTH) + pos.y; SDL_Rect temp_rect = genRect(cellShade->h, cellShade->w, x, y); - CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, NULL, to, &temp_rect); + CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, nullptr, to, &temp_rect); } } //patch by ench0: show enemy stack movement shadow - // activeStack == NULL means it is opponent's turn... + // activeStack == nullptr means it is opponent's turn... if(activeStack && settings["battle"]["stackRange"].Bool()) { // display the movement shadow of the stack at b (i.e. stack under mouse) @@ -676,7 +676,7 @@ void CBattleInterface::show(SDL_Surface * to) int x = 14 + ((hex / GameConstants::BFIELD_WIDTH ) % 2 == 0 ? 22 : 0) + 44 * (hex % GameConstants::BFIELD_WIDTH) + pos.x; int y = 86 + 42 * (hex / GameConstants::BFIELD_WIDTH) + pos.y; SDL_Rect temp_rect = genRect (cellShade->h, cellShade->w, x, y); - CSDL_Ext::blit8bppAlphaTo24bpp (cellShade, NULL, to, &temp_rect); + CSDL_Ext::blit8bppAlphaTo24bpp (cellShade, nullptr, to, &temp_rect); } } } @@ -685,7 +685,7 @@ void CBattleInterface::show(SDL_Surface * to) int x = 14 + ((b/GameConstants::BFIELD_WIDTH)%2==0 ? 22 : 0) + 44*(b%GameConstants::BFIELD_WIDTH) + pos.x; int y = 86 + 42 * (b/GameConstants::BFIELD_WIDTH) + pos.y; SDL_Rect temp_rect = genRect(cellShade->h, cellShade->w, x, y); - CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, NULL, to, &temp_rect); + CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, nullptr, to, &temp_rect); } } } @@ -750,7 +750,7 @@ void CBattleInterface::show(SDL_Surface * to) int preSize = pendingAnims.size(); for(std::list >::iterator it = pendingAnims.begin(); it != pendingAnims.end(); ++it) { - if(it->first == NULL) + if(it->first == nullptr) { pendingAnims.erase(it); it = pendingAnims.begin(); @@ -767,7 +767,7 @@ void CBattleInterface::show(SDL_Surface * to) bool changedStack = false; //activation of next stack - if(pendingAnims.size() == 0 && stackToActivate != NULL) + if(pendingAnims.size() == 0 && stackToActivate != nullptr) { activateStack(); changedStack = true; @@ -892,7 +892,7 @@ void CBattleInterface::show(SDL_Surface * to) { SDL_Surface * bitmapToBlit = it->anim->ourImages[(it->frame)%it->anim->ourImages.size()].bitmap; SDL_Rect temp_rect = genRect(bitmapToBlit->h, bitmapToBlit->w, it->x, it->y); - SDL_BlitSurface(bitmapToBlit, NULL, to, &temp_rect); + SDL_BlitSurface(bitmapToBlit, nullptr, to, &temp_rect); } } @@ -1228,7 +1228,7 @@ void CBattleInterface::bFleef() if( curInt->cb->battleCanFlee() ) { - CFunctionList ony = boost::bind(&CBattleInterface::reallyFlee,this); + CFunctionList ony = std::bind(&CBattleInterface::reallyFlee,this); curInt->showYesNoDialog(CGI->generaltexth->allTexts[28], ony, 0, false); //Are you sure you want to retreat? } else @@ -1341,7 +1341,7 @@ void CBattleInterface::bWaitf() if(spellDestSelectMode) //we are casting a spell return; - if(activeStack != NULL) + if(activeStack != nullptr) giveCommand(Battle::WAIT,0,activeStack->ID); } @@ -1350,7 +1350,7 @@ void CBattleInterface::bDefencef() if(spellDestSelectMode) //we are casting a spell return; - if(activeStack != NULL) + if(activeStack != nullptr) giveCommand(Battle::DEFEND,0,activeStack->ID); } @@ -1422,7 +1422,7 @@ void CBattleInterface::stackRemoved(int stackID) void CBattleInterface::stackActivated(const CStack * stack) //TODO: check it all before game state is changed due to abilities { - //givenCommand = NULL; + //givenCommand = nullptr; stackToActivate = stack; waitForAnims(); //if(pendingAnims.size() == 0) @@ -1541,14 +1541,14 @@ void CBattleInterface::giveCommand(Battle::ActionType action, BattleHex tile, ui { logGlobal->traceStream() << "Setting command for " << (stack ? stack->nodeName() : "hero"); myTurn = false; - activeStack = NULL; + activeStack = nullptr; givenCommand->setn(ba); } else { curInt->cb->battleMakeTacticAction(ba); vstd::clear_pointer(ba); - activeStack = NULL; + activeStack = nullptr; //next stack will be activated when action ends } } @@ -1580,7 +1580,7 @@ const CGHeroInstance * CBattleInterface::getActiveHero() const CStack * attacker = activeStack; if (!attacker) { - return NULL; + return nullptr; } if (attacker->attackerOwned) @@ -1601,7 +1601,7 @@ void CBattleInterface::stackIsCatapulting(const CatapultAttack & ca) for(std::set< std::pair< std::pair< ui8, si16 >, ui8> >::const_iterator it = ca.attackedParts.begin(); it != ca.attackedParts.end(); ++it) { const CStack * stack = curInt->cb->battleGetStackByID(ca.attacker); - addNewAnim(new CShootingAnimation(this, stack, it->first.second, NULL, true, it->second)); + addNewAnim(new CShootingAnimation(this, stack, it->first.second, nullptr, true, it->second)); SDL_FreeSurface(siegeH->walls[it->first.first + 2]); siegeH->walls[it->first.first + 2] = BitmapHandler::loadBitmap( @@ -1618,7 +1618,7 @@ void CBattleInterface::battleFinished(const BattleResult& br) animsAreDisplayed.waitUntil(false); } displayBattleFinished(); - activeStack = NULL; + activeStack = nullptr; } void CBattleInterface::displayBattleFinished() @@ -1635,7 +1635,7 @@ void CBattleInterface::spellCast( const BattleSpellCast * sc ) const CSpell &spell = *CGI->spellh->spells[sc->id]; //spell opening battle is cast when no stack is active - if(sc->castedByHero && ( activeStack == NULL || sc->side == !activeStack->attackerOwned) ) + if(sc->castedByHero && ( activeStack == nullptr || sc->side == !activeStack->attackerOwned) ) bSpell->block(true); std::vector< std::string > anims; //for magic arrow and ice bolt @@ -1931,7 +1931,7 @@ void CBattleInterface::battleStacksEffectsSet(const SetStackEffect & sse) } - if (activeStack != NULL) //it can be -1 when a creature casts effect + if (activeStack != nullptr) //it can be -1 when a creature casts effect { redrawBackgroundWithHexes(activeStack); } @@ -2052,7 +2052,7 @@ int CBattleInterface::getAnimSpeed() const void CBattleInterface::activateStack() { activeStack = stackToActivate; - stackToActivate = NULL; + stackToActivate = nullptr; const CStack *s = activeStack; myTurn = true; @@ -2067,7 +2067,7 @@ void CBattleInterface::activateStack() ESpellCastProblem::ESpellCastProblem spellcastingProblem; bool canCastSpells = curInt->cb->battleCanCastSpell(&spellcastingProblem); bSpell->block(!canCastSpells && spellcastingProblem != ESpellCastProblem::MAGIC_IS_BLOCKED); //if magic is blocked, we leave button active, so the message can be displayed (cf bug #97) - bSurrender->block((curInt == attackerInt ? defendingHeroInstance : attackingHeroInstance) == NULL); + bSurrender->block((curInt == attackerInt ? defendingHeroInstance : attackingHeroInstance) == nullptr); bFlee->block(!curInt->cb->battleCanFlee()); bSurrender->block(curInt->cb->battleGetSurrenderCost() < 0); @@ -2118,8 +2118,8 @@ void CBattleInterface::endCastingSpell() assert(spellDestSelectMode); delete spellToCast; - spellToCast = NULL; - sp = NULL; + spellToCast = nullptr; + sp = nullptr; spellDestSelectMode = false; CCS->curh->changeGraphic(ECursor::COMBAT, ECursor::COMBAT_POINTER); @@ -2281,7 +2281,7 @@ void CBattleInterface::showAliveStack(const CStack *stack, SDL_Surface * to) (moveInside ? amountNormal->w + 10 : 0) * (stack->attackerOwned ? -1 : +1); int yAdd = 260 + ((stack->attackerOwned || moveInside) ? 0 : -15); //blitting amount background box - SDL_Surface *amountBG = NULL; + SDL_Surface *amountBG = nullptr; TBonusListPtr spellEffects = stack->getSpellBonuses(); if(!spellEffects->size()) { @@ -2309,7 +2309,7 @@ void CBattleInterface::showAliveStack(const CStack *stack, SDL_Surface * to) } } SDL_Rect temp_rect = genRect(amountNormal->h, amountNormal->w, creAnims[ID]->pos.x + xAdd, creAnims[ID]->pos.y + yAdd); - SDL_BlitSurface(amountBG, NULL, to, &temp_rect); + SDL_BlitSurface(amountBG, nullptr, to, &temp_rect); //blitting amount Point textPos(creAnims[ID]->pos.x + xAdd + 15, creAnims[ID]->pos.y + yAdd + 5); @@ -2363,7 +2363,7 @@ void CBattleInterface::showPieceOfWall(SDL_Surface * to, int hex, const std::vec if(posToSeek != -1) { - const CStack *turret = NULL; + const CStack *turret = nullptr; BOOST_FOREACH(const CStack *s, stacks) { @@ -2422,7 +2422,7 @@ void CBattleInterface::redrawBackgroundWithHexes(const CStack * activeStack) } if(settings["battle"]["cellBorders"].Bool()) - CSDL_Ext::blit8bppAlphaTo24bpp(cellBorders, NULL, backgroundWithHexes, NULL); + CSDL_Ext::blit8bppAlphaTo24bpp(cellBorders, nullptr, backgroundWithHexes, nullptr); if(settings["battle"]["stackRange"].Bool()) { @@ -2435,7 +2435,7 @@ void CBattleInterface::redrawBackgroundWithHexes(const CStack * activeStack) int x = 58 + (i%2==0 ? 22 : 0) + 44*j; int y = 86 + 42 * i; SDL_Rect temp_rect = genRect(cellShade->h, cellShade->w, x, y); - CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, NULL, backgroundWithHexes, &temp_rect); + CSDL_Ext::blit8bppAlphaTo24bpp(cellShade, nullptr, backgroundWithHexes, &temp_rect); } } } @@ -2468,7 +2468,7 @@ void CBattleInterface::printConsoleAttacked( const CStack * defender, int dmg, i void CBattleInterface::projectileShowHelper(SDL_Surface * to) { - if(to == NULL) + if(to == nullptr) to = screen; std::list< std::list::iterator > toBeDeleted; for(std::list::iterator it=projectiles.begin(); it!=projectiles.end(); ++it) @@ -2493,12 +2493,12 @@ void CBattleInterface::projectileShowHelper(SDL_Surface * to) if(it->reverse) { SDL_Surface * rev = CSDL_Ext::rotate01(idToProjectile[it->creID]->ourImages[it->frameNum].bitmap); - CSDL_Ext::blit8bppAlphaTo24bpp(rev, NULL, to, &dst); + CSDL_Ext::blit8bppAlphaTo24bpp(rev, nullptr, to, &dst); SDL_FreeSurface(rev); } else { - CSDL_Ext::blit8bppAlphaTo24bpp(idToProjectile[it->creID]->ourImages[it->frameNum].bitmap, NULL, to, &dst); + CSDL_Ext::blit8bppAlphaTo24bpp(idToProjectile[it->creID]->ourImages[it->frameNum].bitmap, nullptr, to, &dst); } // Update projectile @@ -2719,7 +2719,7 @@ void CBattleInterface::waitForAnims() void CBattleInterface::bEndTacticPhase() { - activeStack = NULL; + activeStack = nullptr; btactEnd->block(true); tacticsMode = false; } @@ -2729,7 +2729,7 @@ static bool immobile(const CStack *s) return !s->Speed(0, true); //should bound stacks be immobile? } -void CBattleInterface::bTacticNextStack(const CStack *current /*= NULL*/) +void CBattleInterface::bTacticNextStack(const CStack *current /*= nullptr*/) { if(!current) current = activeStack; @@ -3103,7 +3103,7 @@ void CBattleInterface::handleHex(BattleHex myNumber, int eventType) isCastingPossible = true; break; case RANDOM_GENIE_SPELL: //we assume that teleport / sacrifice will never be avaliable as random spell - sp = NULL; + sp = nullptr; consoleMsg = boost::str(boost::format(CGI->generaltexth->allTexts[301]) % shere->getName()); //Cast a spell on % creatureCasting = true; isCastingPossible = true; @@ -3147,7 +3147,7 @@ void CBattleInterface::handleHex(BattleHex myNumber, int eventType) realizeAction = [=]{ GH.pushInt(createCreWindow(shere, true)); }; //setting console text - const time_t curTime = time(NULL); + const time_t curTime = time(nullptr); CCreatureAnimation *hoveredStackAnim = creAnims[shere->ID]; if (shere->ID != mouseHoveredStack @@ -3245,7 +3245,7 @@ void CBattleInterface::handleHex(BattleHex myNumber, int eventType) curInt->cb->battleMakeAction(spellToCast); endCastingSpell(); } - selectedStack = NULL; + selectedStack = nullptr; } }; } @@ -3271,7 +3271,7 @@ bool CBattleInterface::isCastingPossibleHere (const CStack * sactive, const CSta else //hero casting spellID = spellToCast->additionalInfo; - sp = NULL; + sp = nullptr; if (spellID >= 0) sp = CGI->spellh->spells[spellID]; diff --git a/client/battle/CBattleInterface.h b/client/battle/CBattleInterface.h index acb3b67dd..8722f9cfa 100644 --- a/client/battle/CBattleInterface.h +++ b/client/battle/CBattleInterface.h @@ -124,8 +124,8 @@ private: std::map< int, bool > creDir; // //TODO: move it to battle callback ui8 animCount; - const CStack * activeStack; //number of active stack; NULL - no one - const CStack * stackToActivate; //when animation is playing, we should wait till the end to make the next stack active; NULL of none + const CStack * activeStack; //number of active stack; nullptr - no one + const CStack * stackToActivate; //when animation is playing, we should wait till the end to make the next stack active; nullptr of none const CStack * selectedStack; //for Teleport / Sacrifice void activateStack(); //sets activeStack to stackToActivate etc. int mouseHoveredStack; //stack hovered by mouse; if -1 -> none @@ -220,7 +220,7 @@ public: std::vector bfield; //11 lines, 17 hexes on each //std::vector< CBattleObstacle * > obstacles; //vector of obstacles on the battlefield SDL_Surface * cellBorder, * cellShade; - CondSh *givenCommand; //data != NULL if we have i.e. moved current unit + CondSh *givenCommand; //data != nullptr if we have i.e. moved current unit bool myTurn; //if true, interface is active (commands can be ordered) CBattleResultWindow * resWindow; //window of end of battle @@ -241,7 +241,7 @@ public: void bDefencef(); void bConsoleUpf(); void bConsoleDownf(); - void bTacticNextStack(const CStack *current = NULL); + void bTacticNextStack(const CStack *current = nullptr); void bEndTacticPhase(); //end of button handle funcs //napisz tu klase odpowiadajaca za wyswietlanie bitwy i obsluge uzytkownika, polecenia ma przekazywac callbackiem diff --git a/client/battle/CBattleInterfaceClasses.cpp b/client/battle/CBattleInterfaceClasses.cpp index e11191033..2dfa19f40 100644 --- a/client/battle/CBattleInterfaceClasses.cpp +++ b/client/battle/CBattleInterfaceClasses.cpp @@ -134,13 +134,13 @@ void CBattleHero::show(SDL_Surface * to) } CSDL_Ext::blit8bppAlphaTo24bpp( flag->ourImages[flagAnim].bitmap, - NULL, + nullptr, screen, &temp_rect); //animation of hero SDL_Rect rect = pos; - CSDL_Ext::blit8bppAlphaTo24bpp(dh->ourImages[currentFrame].bitmap, NULL, to, &rect); + CSDL_Ext::blit8bppAlphaTo24bpp(dh->ourImages[currentFrame].bitmap, nullptr, to, &rect); if ( ++animCount == 4 ) { @@ -165,7 +165,7 @@ void CBattleHero::clickLeft(tribool down, bool previousState) if(myOwner->spellDestSelectMode) //we are casting a spell return; - if(!down && myHero != NULL && myOwner->myTurn && myOwner->curInt->cb->battleCanCastSpell()) //check conditions + if(!down && myHero != nullptr && myOwner->myTurn && myOwner->curInt->cb->battleCanCastSpell()) //check conditions { for(int it=0; itcolorize(owner->curInt->playerID); - viewGrid = new CHighlightableButton(boost::bind(&CBattleInterface::setPrintCellBorders, owner, true), boost::bind(&CBattleInterface::setPrintCellBorders, owner, false), boost::assign::map_list_of(0,CGI->generaltexth->zelp[427].first)(3,CGI->generaltexth->zelp[427].first), CGI->generaltexth->zelp[427].second, false, "sysopchk.def", NULL, 25, 56, false); + viewGrid = new CHighlightableButton(std::bind(&CBattleInterface::setPrintCellBorders, owner, true), std::bind(&CBattleInterface::setPrintCellBorders, owner, false), boost::assign::map_list_of(0,CGI->generaltexth->zelp[427].first)(3,CGI->generaltexth->zelp[427].first), CGI->generaltexth->zelp[427].second, false, "sysopchk.def", nullptr, 25, 56, false); viewGrid->select(settings["battle"]["cellBorders"].Bool()); - movementShadow = new CHighlightableButton(boost::bind(&CBattleInterface::setPrintStackRange, owner, true), boost::bind(&CBattleInterface::setPrintStackRange, owner, false), boost::assign::map_list_of(0,CGI->generaltexth->zelp[428].first)(3,CGI->generaltexth->zelp[428].first), CGI->generaltexth->zelp[428].second, false, "sysopchk.def", NULL, 25, 89, false); + movementShadow = new CHighlightableButton(std::bind(&CBattleInterface::setPrintStackRange, owner, true), std::bind(&CBattleInterface::setPrintStackRange, owner, false), boost::assign::map_list_of(0,CGI->generaltexth->zelp[428].first)(3,CGI->generaltexth->zelp[428].first), CGI->generaltexth->zelp[428].second, false, "sysopchk.def", nullptr, 25, 89, false); movementShadow->select(settings["battle"]["stackRange"].Bool()); - mouseShadow = new CHighlightableButton(boost::bind(&CBattleInterface::setPrintMouseShadow, owner, true), boost::bind(&CBattleInterface::setPrintMouseShadow, owner, false), boost::assign::map_list_of(0,CGI->generaltexth->zelp[429].first)(3,CGI->generaltexth->zelp[429].first), CGI->generaltexth->zelp[429].second, false, "sysopchk.def", NULL, 25, 122, false); + mouseShadow = new CHighlightableButton(std::bind(&CBattleInterface::setPrintMouseShadow, owner, true), std::bind(&CBattleInterface::setPrintMouseShadow, owner, false), boost::assign::map_list_of(0,CGI->generaltexth->zelp[429].first)(3,CGI->generaltexth->zelp[429].first), CGI->generaltexth->zelp[429].second, false, "sysopchk.def", nullptr, 25, 122, false); mouseShadow->select(settings["battle"]["mouseShadow"].Bool()); animSpeeds = new CHighlightableButtonsGroup(0); @@ -260,12 +260,12 @@ CBattleOptionsWindow::CBattleOptionsWindow(const SDL_Rect & position, CBattleInt animSpeeds->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[423].first),CGI->generaltexth->zelp[423].second, "sysob10.def", 92, 225, 2); animSpeeds->addButton(boost::assign::map_list_of(0,CGI->generaltexth->zelp[424].first),CGI->generaltexth->zelp[424].second, "sysob11.def",156, 225, 4); animSpeeds->select(owner->getAnimSpeed(), 1); - animSpeeds->onChange = boost::bind(&CBattleInterface::setAnimSpeed, owner, _1); + animSpeeds->onChange = std::bind(&CBattleInterface::setAnimSpeed, owner, _1); - setToDefault = new CAdventureMapButton (CGI->generaltexth->zelp[393], boost::bind(&CBattleOptionsWindow::bDefaultf,this), 246, 359, "codefaul.def"); + setToDefault = new CAdventureMapButton (CGI->generaltexth->zelp[393], std::bind(&CBattleOptionsWindow::bDefaultf,this), 246, 359, "codefaul.def"); setToDefault->swappedImages = true; setToDefault->update(); - exit = new CAdventureMapButton (CGI->generaltexth->zelp[392], boost::bind(&CBattleOptionsWindow::bExitf,this), 357, 359, "soretrn.def",SDLK_RETURN); + exit = new CAdventureMapButton (CGI->generaltexth->zelp[392], std::bind(&CBattleOptionsWindow::bExitf,this), 357, 359, "soretrn.def",SDLK_RETURN); exit->swappedImages = true; exit->update(); @@ -312,7 +312,7 @@ CBattleResultWindow::CBattleResultWindow(const BattleResult &br, const SDL_Rect CPicture * bg = new CPicture("CPRESULT"); bg->colorize(owner.playerID); - exit = new CAdventureMapButton ("", "", boost::bind(&CBattleResultWindow::bExitf,this), 384, 505, "iok6432.def", SDLK_RETURN); + exit = new CAdventureMapButton ("", "", std::bind(&CBattleResultWindow::bExitf,this), 384, 505, "iok6432.def", SDLK_RETURN); exit->borderColor = Colors::METALLIC_GOLD; exit->borderEnabled = true; @@ -531,7 +531,7 @@ void CClickableHex::hover(bool on) } } -CClickableHex::CClickableHex() : setAlterText(false), myNumber(-1), accessible(true), hovered(false), strictHovered(false), myInterface(NULL) +CClickableHex::CClickableHex() : setAlterText(false), myNumber(-1), accessible(true), hovered(false), strictHovered(false), myInterface(nullptr) { addUsedEvents(LCLICK | RCLICK | HOVER | MOVE); } @@ -553,7 +553,7 @@ void CClickableHex::mouseMoved(const SDL_MouseMotionEvent &sEvent) if(hovered && strictHovered) //print attacked creature to console { const CStack * attackedStack = myInterface->curInt->cb->battleGetStackByPos(myNumber); - if(myInterface->console->alterTxt.size() == 0 &&attackedStack != NULL && + if(myInterface->console->alterTxt.size() == 0 &&attackedStack != nullptr && attackedStack->owner != myInterface->curInt->playerID && attackedStack->alive()) { @@ -582,7 +582,7 @@ void CClickableHex::clickLeft(tribool down, bool previousState) void CClickableHex::clickRight(tribool down, bool previousState) { const CStack * myst = myInterface->curInt->cb->battleGetStackByPos(myNumber); //stack info - if(hovered && strictHovered && myst!=NULL) + if(hovered && strictHovered && myst!=nullptr) { if(!myst->alive()) return; @@ -616,7 +616,7 @@ CStackQueue::CStackQueue(bool Embedded, CBattleInterface * _owner) OBJ_CONSTRUCTION_CAPTURING_ALL; if(embedded) { - bg = NULL; + bg = nullptr; pos.w = QUEUE_SIZE * 37; pos.h = 46; pos.x = screen->w/2 - pos.w/2; diff --git a/client/battle/CCreatureAnimation.cpp b/client/battle/CCreatureAnimation.cpp index 49edd4237..9a8bc611b 100644 --- a/client/battle/CCreatureAnimation.cpp +++ b/client/battle/CCreatureAnimation.cpp @@ -163,7 +163,7 @@ void CCreatureAnimation::playOnce( CCreatureAnim::EAnimType type ) template -int CCreatureAnimation::nextFrameT(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool IncrementFrame /*= true*/, bool yellowBorder /*= false*/, bool blueBorder /*= false*/, SDL_Rect * destRect /*= NULL*/) +int CCreatureAnimation::nextFrameT(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool IncrementFrame /*= true*/, bool yellowBorder /*= false*/, bool blueBorder /*= false*/, SDL_Rect * destRect /*= nullptr*/) { //increasing frame number int SIndex = curFrame; diff --git a/client/battle/CCreatureAnimation.h b/client/battle/CCreatureAnimation.h index 80ecf9300..bd9fb5704 100644 --- a/client/battle/CCreatureAnimation.h +++ b/client/battle/CCreatureAnimation.h @@ -52,8 +52,8 @@ private: CCreatureAnim::EAnimType type; //type of animation being displayed (-1 - whole animation, >0 - specified part [default: -1]) template - int nextFrameT(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool incrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = NULL); //0 - success, any other - error //print next - int nextFrameMiddle(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool IncrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = NULL); //0 - success, any other - error //print next + int nextFrameT(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool incrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = nullptr); //0 - success, any other - error //print next + int nextFrameMiddle(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool IncrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = nullptr); //0 - success, any other - error //print next std::map > frameGroups; //groups of frames; [groupID] -> vector of frame IDs in group bool once; @@ -66,7 +66,7 @@ public: void setType(CCreatureAnim::EAnimType type); //sets type of animation and cleares framecount CCreatureAnim::EAnimType getType() const; //returns type of animation - int nextFrame(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool incrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = NULL); //0 - success, any other - error //print next + int nextFrame(SDL_Surface * dest, int x, int y, bool attacker, ui8 animCount, bool incrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = nullptr); //0 - success, any other - error //print next void incrementFrame(); int getFrame() const; // Gets the current frame ID relative to DEF file. int getAnimationFrame() const; // Gets the current frame ID relative to frame group. diff --git a/client/gui/CCursorHandler.cpp b/client/gui/CCursorHandler.cpp index 70cbf3263..6a53cbb3b 100644 --- a/client/gui/CCursorHandler.cpp +++ b/client/gui/CCursorHandler.cpp @@ -97,7 +97,7 @@ void CCursorHandler::drawRestored() shiftPos(x, y); SDL_Rect temp_rect = genRect(40, 40, x, y); - SDL_BlitSurface(help, NULL, screen, &temp_rect); + SDL_BlitSurface(help, nullptr, screen, &temp_rect); //blitAt(help,x,y); } diff --git a/client/gui/CCursorHandler.h b/client/gui/CCursorHandler.h index 820dad758..ab5afb4ad 100644 --- a/client/gui/CCursorHandler.h +++ b/client/gui/CCursorHandler.h @@ -49,7 +49,7 @@ public: /** * Replaces the cursor with a custom image. * - * @param image Image to replace cursor with or NULL to use the normal + * @param image Image to replace cursor with or nullptr to use the normal * cursor. CursorHandler takes ownership of object */ void dragAndDropCursor (CAnimImage * image); diff --git a/client/gui/CGuiHandler.cpp b/client/gui/CGuiHandler.cpp index ea11a207c..5a63b9a6c 100644 --- a/client/gui/CGuiHandler.cpp +++ b/client/gui/CGuiHandler.cpp @@ -136,7 +136,7 @@ void CGuiHandler::popInts( int howMany ) IShowActivatable * CGuiHandler::topInt() { if(!listInt.size()) - return NULL; + return nullptr; else return listInt.front(); } @@ -303,7 +303,7 @@ void CGuiHandler::handleEvent(SDL_Event *sEvent) (*i)->clickRight(boost::logic::indeterminate, prev); } } - current = NULL; + current = nullptr; } //event end @@ -397,10 +397,10 @@ void CGuiHandler::run() CGuiHandler::CGuiHandler() :lastClick(-500, -500) { - curInt = NULL; - current = NULL; + curInt = nullptr; + current = nullptr; terminate = false; - statusbar = NULL; + statusbar = nullptr; // Creates the FPS manager and sets the framerate to 48 which is doubled the value of the original Heroes 3 FPS rate mainFPSmng = new CFramerateManager(48); @@ -414,7 +414,7 @@ CGuiHandler::~CGuiHandler() void CGuiHandler::breakEventHandling() { - current = NULL; + current = nullptr; } void CGuiHandler::drawFPSCounter() diff --git a/client/gui/CGuiHandler.h b/client/gui/CGuiHandler.h index 75638ebdb..77775cd07 100644 --- a/client/gui/CGuiHandler.h +++ b/client/gui/CGuiHandler.h @@ -67,7 +67,7 @@ public: //objs to blit std::vector objsToBlit; - SDL_Event * current; //current event - can be set to NULL to stop handling event + SDL_Event * current; //current event - can be set to nullptr to stop handling event IUpdateable *curInt; Point lastClick; diff --git a/client/gui/CIntObject.cpp b/client/gui/CIntObject.cpp index 8831cf3ca..4a9a42d8b 100644 --- a/client/gui/CIntObject.cpp +++ b/client/gui/CIntObject.cpp @@ -257,7 +257,7 @@ void CIntObject::removeChild(CIntObject *child, bool adjustPosition /*= false*/) assert(vstd::contains(children, child)); assert(child->parent_m == this); children -= child; - child->parent_m = NULL; + child->parent_m = nullptr; if(adjustPosition) child->pos -= pos; } diff --git a/client/gui/CIntObjectClasses.cpp b/client/gui/CIntObjectClasses.cpp index 864f70774..9b549a650 100644 --- a/client/gui/CIntObjectClasses.cpp +++ b/client/gui/CIntObjectClasses.cpp @@ -97,7 +97,7 @@ CPicture::~CPicture() void CPicture::init() { needRefresh = false; - srcRect = NULL; + srcRect = nullptr; } void CPicture::show(SDL_Surface * to) @@ -158,7 +158,7 @@ void CPicture::createSimpleRect(const Rect &r, bool screenFormat, ui32 color) else bg = SDL_CreateRGBSurface(SDL_SWSURFACE, r.w, r.h, 8, 0, 0, 0, 0); - SDL_FillRect(bg, NULL, color); + SDL_FillRect(bg, nullptr, color); freeSurf = true; } @@ -200,8 +200,8 @@ CButtonBase::CButtonBase() swappedImages = keepFrame = false; bitmapOffset = 0; state=NORMAL; - image = NULL; - text = NULL; + image = nullptr; + text = nullptr; } CButtonBase::~CButtonBase() @@ -304,7 +304,7 @@ CAdventureMapButton::CAdventureMapButton( const std::string &Name, const std::st init(Callback, pom, HelpBox, info->playerColoured, info->defName, &info->additionalDefs, info->x, info->y, key); } -CAdventureMapButton::CAdventureMapButton( const std::pair &help, const CFunctionList &Callback, int x, int y, const std::string &defName, int key/*=0*/, std::vector * add /*= NULL*/, bool playerColoredButton /*= false */ ) +CAdventureMapButton::CAdventureMapButton( const std::pair &help, const CFunctionList &Callback, int x, int y, const std::string &defName, int key/*=0*/, std::vector * add /*= nullptr*/, bool playerColoredButton /*= false */ ) { std::map pom; pom[0] = help.first; @@ -357,7 +357,7 @@ void CAdventureMapButton::hover (bool on) std::string *name = (vstd::contains(hoverTexts,getState())) ? (&hoverTexts[getState()]) - : (vstd::contains(hoverTexts,0) ? (&hoverTexts[0]) : NULL); + : (vstd::contains(hoverTexts,0) ? (&hoverTexts[0]) : nullptr); if(name && name->size() && !isBlocked()) //if there is no name, there is nohing to display also { if (LOCPLINT && LOCPLINT->battleInt) //for battle buttons @@ -491,7 +491,7 @@ CHighlightableButton::CHighlightableButton( const CFunctionList &onSelec init(onSelect,Name,HelpBox,playerColoredButton,defName,add,x,y,key); } -CHighlightableButton::CHighlightableButton( const std::pair &help, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key/*=0*/, std::vector * add /*= NULL*/, bool playerColoredButton /*= false */ ) +CHighlightableButton::CHighlightableButton( const std::pair &help, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key/*=0*/, std::vector * add /*= nullptr*/, bool playerColoredButton /*= false */ ) : onlyOn(false), selected(false) // TODO: callback2(???) { ID = myid; @@ -500,7 +500,7 @@ CHighlightableButton::CHighlightableButton( const std::pair &onSelect, int x, int y, const std::string &defName, int myid, int key/*=0*/, std::vector * add /*= NULL*/, bool playerColoredButton /*= false */ ) +CHighlightableButton::CHighlightableButton( const std::string &Name, const std::string &HelpBox, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key/*=0*/, std::vector * add /*= nullptr*/, bool playerColoredButton /*= false */ ) : onlyOn(false), selected(false) // TODO: callback2(???) { ID = myid; @@ -516,7 +516,7 @@ void CHighlightableButtonsGroup::addButton(CHighlightableButton* bt) addChild(bt); bt->recActions = defActions;//FIXME: not needed? - bt->callback += boost::bind(&CHighlightableButtonsGroup::selectionChanged,this,bt->ID); + bt->callback += std::bind(&CHighlightableButtonsGroup::selectionChanged,this,bt->ID); bt->onlyOn = true; buttons.push_back(bt); } @@ -530,7 +530,7 @@ void CHighlightableButtonsGroup::addButton(const std::map &tool bt->setOffset(buttons.size()-3); } bt->ID = uid; - bt->callback += boost::bind(&CHighlightableButtonsGroup::selectionChanged,this,bt->ID); + bt->callback += std::bind(&CHighlightableButtonsGroup::selectionChanged,this,bt->ID); bt->onlyOn = true; buttons.push_back(bt); } @@ -546,7 +546,7 @@ CHighlightableButtonsGroup::~CHighlightableButtonsGroup() void CHighlightableButtonsGroup::select(int id, bool mode) { - CHighlightableButton *bt = NULL; + CHighlightableButton *bt = nullptr; if(mode) { for(size_t i=0;i Moved, int Capacity, int Amount, int Value, bool Horizontal, int style) +CSlider::CSlider(int x, int y, int totalw, std::function Moved, int Capacity, int Amount, int Value, bool Horizontal, int style) :capacity(Capacity),amount(Amount),horizontal(Horizontal), moved(Moved) { OBJ_CONSTRUCTION_CAPTURING_ALL; @@ -753,9 +753,9 @@ CSlider::CSlider(int x, int y, int totalw, boost::function Moved, int right->pos.y = pos.y + totalw - 16; } - left->callback = boost::bind(&CSlider::moveLeft,this); - right->callback = boost::bind(&CSlider::moveRight,this); - slider->callback = boost::bind(&CSlider::sliderClicked,this); + left->callback = std::bind(&CSlider::moveLeft,this); + right->callback = std::bind(&CSlider::moveRight,this); + slider->callback = std::bind(&CSlider::sliderClicked,this); left->pos.w = left->pos.h = right->pos.w = right->pos.h = slider->pos.w = slider->pos.h = 16; if(horizontal) { @@ -892,7 +892,7 @@ CIntObject* CObjectList::createItem(size_t index) { OBJ_CONSTRUCTION_CAPTURING_ALL; CIntObject * item = createObject(index); - if (item == NULL) + if (item == nullptr) item = new CIntObject(); item->recActions = defActions; @@ -903,7 +903,7 @@ CIntObject* CObjectList::createItem(size_t index) CTabbedInt::CTabbedInt(CreateFunc create, DestroyFunc destroy, Point position, size_t ActiveID): CObjectList(create, destroy), -activeTab(NULL), +activeTab(nullptr), activeID(ActiveID) { pos += position; @@ -948,7 +948,7 @@ CListBox::CListBox(CreateFunc create, DestroyFunc destroy, Point Pos, Point Item if (Slider & 1) { OBJ_CONSTRUCTION_CAPTURING_ALL; - slider = new CSlider(SliderPos.x, SliderPos.y, SliderPos.w, boost::bind(&CListBox::moveToPos, this, _1), + slider = new CSlider(SliderPos.x, SliderPos.y, SliderPos.w, std::bind(&CListBox::moveToPos, this, _1), VisibleSize, TotalSize, InitialPos, Slider & 2, Slider & 4); } reset(); @@ -1095,7 +1095,7 @@ CSimpleWindow::~CSimpleWindow() if (bitmap) { SDL_FreeSurface(bitmap); - bitmap=NULL; + bitmap=nullptr; } } @@ -1170,7 +1170,7 @@ CLabel::CLabel(int x, int y, EFonts Font /*= FONT_SMALL*/, EAlignment Align, con pos.x += x; pos.y += y; pos.w = pos.h = 0; - bg = NULL; + bg = nullptr; ignoreLeadingWhitespace = false; if (alignment == TOPLEFT) // causes issues for MIDDLE @@ -1315,7 +1315,7 @@ void CLabelGroup::add(int x, int y, const std::string &text) } CTextBox::CTextBox(std::string Text, const Rect &rect, int SliderStyle, EFonts Font /*= FONT_SMALL*/, EAlignment Align /*= TOPLEFT*/, const SDL_Color &Color /*= Colors::WHITE*/) -:CBoundedLabel(rect.x, rect.y, Font, Align, Color, Text), sliderStyle(SliderStyle), slider(NULL) +:CBoundedLabel(rect.x, rect.y, Font, Align, Color, Text), sliderStyle(SliderStyle), slider(nullptr) { type |= REDRAW_PARENT; autoRedraw = false; @@ -1341,7 +1341,7 @@ void CTextBox::recalculateLines(const std::string &Txt) { lines = CMessage::breakText(Txt, pos.w - 32 - 10, font); OBJ_CONSTRUCTION_CAPTURING_ALL; - slider = new CSlider(pos.w - 32, 0, pos.h, boost::bind(&CTextBox::sliderMoved, this, _1), lineCapacity, lines.size(), 0, false, sliderStyle); + slider = new CSlider(pos.w - 32, 0, pos.h, std::bind(&CTextBox::sliderMoved, this, _1), lineCapacity, lines.size(), 0, false, sliderStyle); if(active) slider->activate(); } @@ -1512,9 +1512,9 @@ CTextInput::CTextInput(const Rect &Pos, SDL_Surface *srf) bg = new CPicture(Pos, 0, true); Rect hlp = Pos; if(srf) - CSDL_Ext::blitSurface(srf, &hlp, *bg, NULL); + CSDL_Ext::blitSurface(srf, &hlp, *bg, nullptr); else - SDL_FillRect(*bg, NULL, 0); + SDL_FillRect(*bg, nullptr, 0); pos.w = bg->pos.w; pos.h = bg->pos.h; bg->pos = pos; @@ -1639,7 +1639,7 @@ CFocusable::CFocusable() CFocusable::~CFocusable() { if(inputWithFocus == this) - inputWithFocus = NULL; + inputWithFocus = nullptr; focusables -= this; } @@ -1814,9 +1814,9 @@ void CWindowObject::setShadow(bool on) Uint32 shadowColor = SDL_MapRGBA(shadowCornerTempl->format, 0, 0, 0, 192); //fill with shadow body color - SDL_FillRect(shadowCornerTempl, NULL, shadowColor); - SDL_FillRect(shadowBottomTempl, NULL, shadowColor); - SDL_FillRect(shadowRightTempl, NULL, shadowColor); + SDL_FillRect(shadowCornerTempl, nullptr, shadowColor); + SDL_FillRect(shadowBottomTempl, nullptr, shadowColor); + SDL_FillRect(shadowRightTempl, nullptr, shadowColor); //fill last row and column with more transparent color blitAlphaCol(shadowRightTempl , size-1); diff --git a/client/gui/CIntObjectClasses.h b/client/gui/CIntObjectClasses.h index 7b07e5bbc..a10c79e9b 100644 --- a/client/gui/CIntObjectClasses.h +++ b/client/gui/CIntObjectClasses.h @@ -27,7 +27,7 @@ class CSimpleWindow : public CIntObject public: SDL_Surface * bitmap; //background virtual void show(SDL_Surface * to); - CSimpleWindow():bitmap(NULL){}; //c-tor + CSimpleWindow():bitmap(nullptr){}; //c-tor virtual ~CSimpleWindow(); //d-tor }; @@ -37,7 +37,7 @@ class CPicture : public CIntObject void setSurface(SDL_Surface *to); public: SDL_Surface * bg; - Rect * srcRect; //if NULL then whole surface will be used + Rect * srcRect; //if nullptr then whole surface will be used bool freeSurf; //whether surface will be freed upon CPicture destruction bool needRefresh;//Surface needs to be displayed each frame @@ -139,8 +139,8 @@ public: void hover (bool on); CAdventureMapButton(); //c-tor - CAdventureMapButton( const std::string &Name, const std::string &HelpBox, const CFunctionList &Callback, int x, int y, const std::string &defName, int key=0, std::vector * add = NULL, bool playerColoredButton = false );//c-tor - CAdventureMapButton( const std::pair &help, const CFunctionList &Callback, int x, int y, const std::string &defName, int key=0, std::vector * add = NULL, bool playerColoredButton = false );//c-tor + CAdventureMapButton( const std::string &Name, const std::string &HelpBox, const CFunctionList &Callback, int x, int y, const std::string &defName, int key=0, std::vector * add = nullptr, bool playerColoredButton = false );//c-tor + CAdventureMapButton( const std::pair &help, const CFunctionList &Callback, int x, int y, const std::string &defName, int key=0, std::vector * add = nullptr, bool playerColoredButton = false );//c-tor CAdventureMapButton( const std::string &Name, const std::string &HelpBox, const CFunctionList &Callback, config::ButtonInfo *info, int key=0);//c-tor void init(const CFunctionList &Callback, const std::map &Name, const std::string &HelpBox, bool playerColoredButton, const std::string &defName, std::vector * add, int x, int y, int key ); @@ -157,8 +157,8 @@ class CHighlightableButton { public: CHighlightableButton(const CFunctionList &onSelect, const CFunctionList &onDeselect, const std::map &Name, const std::string &HelpBox, bool playerColoredButton, const std::string &defName, std::vector * add, int x, int y, int key=0); - CHighlightableButton(const std::pair &help, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key=0, std::vector * add = NULL, bool playerColoredButton = false );//c-tor - CHighlightableButton(const std::string &Name, const std::string &HelpBox, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key=0, std::vector * add = NULL, bool playerColoredButton = false );//c-tor + CHighlightableButton(const std::pair &help, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key=0, std::vector * add = nullptr, bool playerColoredButton = false );//c-tor + CHighlightableButton(const std::string &Name, const std::string &HelpBox, const CFunctionList &onSelect, int x, int y, const std::string &defName, int myid, int key=0, std::vector * add = nullptr, bool playerColoredButton = false );//c-tor bool onlyOn;//button can not be de-selected bool selected;//state of highlightable button int ID; //for identification @@ -200,7 +200,7 @@ public: bool wheelScrolling; bool keyScrolling; - boost::function moved; + std::function moved; void redrawSlider(); void sliderClicked(); @@ -216,7 +216,7 @@ public: void mouseMoved (const SDL_MouseMotionEvent & sEvent); void showAll(SDL_Surface * to); - CSlider(int x, int y, int totalw, boost::function Moved, int Capacity, int Amount, + CSlider(int x, int y, int totalw, std::function Moved, int Capacity, int Amount, int Value=0, bool Horizontal=true, int style = 0); //style 0 - brown, 1 - blue ~CSlider(); void moveToMax(); @@ -226,8 +226,8 @@ public: class CObjectList : public CIntObject { public: - typedef boost::function CreateFunc; - typedef boost::function DestroyFunc; + typedef std::function CreateFunc; + typedef std::function DestroyFunc; private: CreateFunc createObject; @@ -445,7 +445,7 @@ public: CTextInput(const Rect &Pos, EFonts font, const CFunctionList &CB); CTextInput(const Rect &Pos, const Point &bgOffset, const std::string &bgName, const CFunctionList &CB); - CTextInput(const Rect &Pos, SDL_Surface *srf = NULL); + CTextInput(const Rect &Pos, SDL_Surface *srf = nullptr); void clickLeft(tribool down, bool previousState) override; void keyPressed(const SDL_KeyboardEvent & key) override; @@ -454,7 +454,7 @@ public: //Filter that will block all characters not allowed in filenames static void filenameFilter(std::string &text, const std::string & oldText); //Filter that will allow only input of numbers in range min-max (min-max are allowed) - //min-max should be set via something like boost::bind + //min-max should be set via something like std::bind static void numberFilter(std::string &text, const std::string & oldText, int minValue, int maxValue); }; diff --git a/client/gui/Fonts.cpp b/client/gui/Fonts.cpp index 328baa72a..532b6e2e5 100644 --- a/client/gui/Fonts.cpp +++ b/client/gui/Fonts.cpp @@ -243,14 +243,14 @@ size_t CTrueTypeFont::getLineHeight() const size_t CTrueTypeFont::getSymbolWidth(char data) const { int advance; - TTF_GlyphMetrics(font.get(), data, NULL, NULL, NULL, NULL, &advance); + TTF_GlyphMetrics(font.get(), data, nullptr, nullptr, nullptr, nullptr, &advance); return advance; } size_t CTrueTypeFont::getStringWidth(const std::string & data) const { int width; - TTF_SizeText(font.get(), data.c_str(), &width, NULL); + TTF_SizeText(font.get(), data.c_str(), &width, nullptr); return width; } @@ -273,7 +273,7 @@ void CTrueTypeFont::renderText(SDL_Surface * surface, const std::string & data, assert(rendered); Rect rect(pos.x, pos.y, rendered->w, rendered->h); - SDL_BlitSurface(rendered, NULL, surface, &rect); + SDL_BlitSurface(rendered, nullptr, surface, &rect); SDL_FreeSurface(rendered); } } diff --git a/client/gui/SDL_Extensions.cpp b/client/gui/SDL_Extensions.cpp index 609003d9d..18266eb4e 100644 --- a/client/gui/SDL_Extensions.cpp +++ b/client/gui/SDL_Extensions.cpp @@ -53,7 +53,7 @@ void blitAt(SDL_Surface * src, int x, int y, SDL_Surface * dst) { if(!dst) dst = screen; SDL_Rect pom = genRect(src->h,src->w,x,y); - CSDL_Ext::blitSurface(src,NULL,dst,&pom); + CSDL_Ext::blitSurface(src,nullptr,dst,&pom); } void blitAt(SDL_Surface * src, const SDL_Rect & pos, SDL_Surface * dst) @@ -395,7 +395,7 @@ int CSDL_Ext::blit8bppAlphaTo24bppT(const SDL_Surface * src, const SDL_Rect * sr /* Make sure the surfaces aren't locked */ if ( ! src || ! dst ) { - SDL_SetError("SDL_UpperBlit: passed a NULL surface"); + SDL_SetError("SDL_UpperBlit: passed a nullptr surface"); return -1; } if ( src->locked || dst->locked ) @@ -404,8 +404,8 @@ int CSDL_Ext::blit8bppAlphaTo24bppT(const SDL_Surface * src, const SDL_Rect * sr return -1; } - /* If the destination rectangle is NULL, use the entire dest surface */ - if ( dstRect == NULL ) + /* If the destination rectangle is nullptr, use the entire dest surface */ + if ( dstRect == nullptr ) { fulldst.x = fulldst.y = 0; dstRect = &fulldst; @@ -614,7 +614,7 @@ case BytesPerPixel: \ CASE_BPP(4) default: logGlobal->errorStream() << (int)dest->format->BitsPerPixel << "bpp is not supported!"; - return NULL; + return nullptr; } } @@ -628,7 +628,7 @@ TColorPutterAlpha CSDL_Ext::getPutterAlphaFor(SDL_Surface * const &dest, int inc CASE_BPP(4) default: logGlobal->errorStream() << (int)dest->format->BitsPerPixel << "bpp is not supported!"; - return NULL; + return nullptr; } #undef CASE_BPP } @@ -716,7 +716,7 @@ BlitterWithRotationVal CSDL_Ext::getBlitterWithRotation(SDL_Surface *dest) } assert(0); - return NULL; + return nullptr; } BlitterWithRotationVal CSDL_Ext::getBlitterWithRotationAndAlpha(SDL_Surface *dest) @@ -732,7 +732,7 @@ BlitterWithRotationVal CSDL_Ext::getBlitterWithRotationAndAlpha(SDL_Surface *des } assert(0); - return NULL; + return nullptr; } template diff --git a/client/mapHandler.cpp b/client/mapHandler.cpp index fb9460217..86996db9b 100644 --- a/client/mapHandler.cpp +++ b/client/mapHandler.cpp @@ -245,7 +245,7 @@ static void processDef (const CGDefInfo* def) { if(def->id == Obj::EVENT) { - graphics->advmapobjGraphics[def->name] = NULL; + graphics->advmapobjGraphics[def->name] = nullptr; return; } CDefEssential * ourDef = graphics->getDef(def); @@ -543,7 +543,7 @@ void CMapHandler::terrainRect( int3 top_tile, ui8 anim, const std::vector< std:: pp.w = sr.w; const CGHeroInstance * themp = (obj->ID != Obj::HERO - ? NULL + ? nullptr : static_cast(obj)); //print hero / boat and flag @@ -551,8 +551,8 @@ void CMapHandler::terrainRect( int3 top_tile, ui8 anim, const std::vector< std:: { const int IMGVAL = 8; //frames per group of movement animation ui8 dir; - std::vector * iv = NULL; - std::vector Graphics::*flg = NULL; + std::vector * iv = nullptr; + std::vector Graphics::*flg = nullptr; SDL_Surface * tb = nullptr; //surface to blitted if(themp) //hero @@ -639,7 +639,7 @@ void CMapHandler::terrainRect( int3 top_tile, ui8 anim, const std::vector< std:: bufr.h = 64; bufr.w = 96; if(bufr.x-extRect->x>-64) - CSDL_Ext::blitSurface((graphics->*flg)[color.getNum()]->ourImages[getHeroFrameNum(dir, false) *8+(heroAnim/4)%IMGVAL].bitmap, NULL, extSurf, &bufr); + CSDL_Ext::blitSurface((graphics->*flg)[color.getNum()]->ourImages[getHeroFrameNum(dir, false) *8+(heroAnim/4)%IMGVAL].bitmap, nullptr, extSurf, &bufr); } } } @@ -665,7 +665,7 @@ void CMapHandler::terrainRect( int3 top_tile, ui8 anim, const std::vector< std:: { if(bx == grailPosRel.x && by == grailPosRel.y) { - CSDL_Ext::blit8bppAlphaTo24bpp(graphics->heroMoveArrows->ourImages[0].bitmap, NULL, extSurf, &sr); + CSDL_Ext::blit8bppAlphaTo24bpp(graphics->heroMoveArrows->ourImages[0].bitmap, nullptr, extSurf, &sr); } } } @@ -1077,8 +1077,8 @@ CMapHandler::~CMapHandler() CMapHandler::CMapHandler() { frameW = frameH = 0; - graphics->FoWfullHide = NULL; - graphics->FoWpartialHide = NULL; + graphics->FoWfullHide = nullptr; + graphics->FoWpartialHide = nullptr; } void CMapHandler::getTerrainDescr( const int3 &pos, std::string & out, bool terName ) diff --git a/lib/BattleState.cpp b/lib/BattleState.cpp index 2c95be9db..20fbda1a3 100644 --- a/lib/BattleState.cpp +++ b/lib/BattleState.cpp @@ -2,7 +2,6 @@ #include "BattleState.h" #include -#include #include "VCMI_Lib.h" #include "CObjectHandler.h" #include "CHeroHandler.h" @@ -23,7 +22,7 @@ * Full text of license available in license.txt file, in main folder * */ -extern boost::rand48 ran; +extern std::minstd_rand ran; const CStack * BattleInfo::getNextStack() const { @@ -33,7 +32,7 @@ const CStack * BattleInfo::getNextStack() const if(hlp.size()) return hlp[0]; else - return NULL; + return nullptr; } int BattleInfo::getAvaliableHex(CreatureID creID, bool attackerOwned, int initialPos) const @@ -193,7 +192,7 @@ bool BattleInfo::resurrects(SpellID spellid) const const CStack * BattleInfo::battleGetStack(BattleHex pos, bool onlyAlive) { - CStack * stack = NULL; + CStack * stack = nullptr; for(ui32 g=0; gposition == pos @@ -299,7 +298,7 @@ struct RangeGenerator { }; - RangeGenerator(int _min, int _max, boost::function _myRand) + RangeGenerator(int _min, int _max, std::function _myRand) { myRand = _myRand; min = _min; @@ -317,7 +316,7 @@ struct RangeGenerator } //get number fulfilling predicate. Never gives the same number twice. - int getSuchNumber(boost::function goodNumberPred = 0) + int getSuchNumber(std::function goodNumberPred = 0) { int ret = -1; do @@ -343,7 +342,7 @@ struct RangeGenerator int min, remainingCount; std::vector remaining; - boost::function myRand; + std::function myRand; }; BattleInfo * BattleInfo::setupBattle( int3 tile, ETerrainType terrain, BFieldType battlefieldType, const CArmedInstance *armies[2], const CGHeroInstance * heroes[2], bool creatureBank, const CGTownInstance *town ) @@ -376,7 +375,7 @@ BattleInfo * BattleInfo::setupBattle( int3 tile, ETerrainType terrain, BFieldTyp } else { - curB->town = NULL; + curB->town = nullptr; curB->siege = CGTownInstance::NONE; curB->terrainType = terrain; } @@ -391,7 +390,7 @@ BattleInfo * BattleInfo::setupBattle( int3 tile, ETerrainType terrain, BFieldTyp } //randomize obstacles - if (town == NULL && !creatureBank) //do it only when it's not siege and not creature bank + if (town == nullptr && !creatureBank) //do it only when it's not siege and not creature bank { const int ABSOLUTE_OBSTACLES_COUNT = 34, USUAL_OBSTACLES_COUNT = 91; //shouldn't be changes if we want H3-like obstacle placement @@ -857,7 +856,7 @@ CStack::CStack() setNodeType(STACK_BATTLE); } CStack::CStack(const CStackBasicDescriptor *stack, PlayerColor O, int I, bool AO, SlotID S) - : base(NULL), ID(I), owner(O), slot(S), attackerOwned(AO), counterAttacks(1) + : base(nullptr), ID(I), owner(O), slot(S), attackerOwned(AO), counterAttacks(1) { type = stack->type; count = baseAmount = stack->count; @@ -866,8 +865,8 @@ CStack::CStack(const CStackBasicDescriptor *stack, PlayerColor O, int I, bool AO void CStack::init() { - base = NULL; - type = NULL; + base = nullptr; + type = nullptr; ID = -1; count = baseAmount = -1; firstHPleft = -1; @@ -1111,7 +1110,7 @@ const CGHeroInstance * CStack::getMyHero() const if(n->getNodeType() == HERO) return dynamic_cast(n); - return NULL; + return nullptr; } std::string CStack::nodeName() const diff --git a/lib/BattleState.h b/lib/BattleState.h index 9174b49e6..a8d78fc85 100644 --- a/lib/BattleState.h +++ b/lib/BattleState.h @@ -86,12 +86,12 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb const CStack * getNextStack() const; //which stack will have turn after current one //void getStackQueue(std::vector &out, int howMany, int turn = 0, int lastMoved = -1) const; //returns stack in order of their movement action - //void getAccessibilityMap(bool *accessibility, bool twoHex, bool attackerOwned, bool addOccupiable, std::set & occupyable, bool flying, const CStack* stackToOmmit = NULL) const; //send pointer to at least 187 allocated bytes + //void getAccessibilityMap(bool *accessibility, bool twoHex, bool attackerOwned, bool addOccupiable, std::set & occupyable, bool flying, const CStack* stackToOmmit = nullptr) const; //send pointer to at least 187 allocated bytes //static bool isAccessible(BattleHex hex, bool * accessibility, bool twoHex, bool attackerOwned, bool flying, bool lastPos); //helper for makeBFS int getAvaliableHex(CreatureID creID, bool attackerOwned, int initialPos = -1) const; //find place for summon / clone effects //void makeBFS(BattleHex start, bool*accessibility, BattleHex *predecessor, int *dists, bool twoHex, bool attackerOwned, bool flying, bool fillPredecessors) const; //*accessibility must be prepared bool[187] array; last two pointers must point to the at least 187-elements int arrays - there is written result std::pair< std::vector, int > getPath(BattleHex start, BattleHex dest, const CStack *stack); //returned value: pair; length may be different than number of elements in path since flying vreatures jump between distant hexes - //std::vector getAccessibility(const CStack * stack, bool addOccupiable, std::vector * attackable = NULL, bool forPassingBy = false) const; //returns vector of accessible tiles (taking into account the creature range) + //std::vector getAccessibility(const CStack * stack, bool addOccupiable, std::vector * attackable = nullptr, bool forPassingBy = false) const; //returns vector of accessible tiles (taking into account the creature range) //bool isObstacleVisibleForSide(const CObstacleInstance &obstacle, ui8 side) const; shared_ptr getObstacleOnTile(BattleHex tile) const; @@ -108,7 +108,7 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb CStack * generateNewStack(const CStackBasicDescriptor &base, bool attackerOwned, SlotID slot, BattleHex position) const; //helper for CGameHandler::setupBattle and spells addign new stacks to the battlefield int getIdForNewStack() const; //suggest a currently unused ID that'd suitable for generating a new stack //std::pair getNearestStack(const CStack * closest, boost::logic::tribool attackerOwned) const; //if attackerOwned is indetermnate, returened stack is of any owner; hex is the number of hex we should be looking from; returns (nerarest creature, predecessorHex) - ui32 calculateHealedHP(const CGHeroInstance * caster, const CSpell * spell, const CStack * stack, const CStack * sacrificedStack = NULL) const; //Sacrifice + ui32 calculateHealedHP(const CGHeroInstance * caster, const CSpell * spell, const CStack * stack, const CStack * sacrificedStack = nullptr) const; //Sacrifice ui32 calculateHealedHP(int healedHealth, const CSpell * spell, const CStack * stack) const; //for Archangel ui32 calculateHealedHP(const CSpell * spell, int usedSpellPower, int spellSchoolLevel, const CStack * stack) const; //healing spells casted by stacks bool resurrects(SpellID spellid) const; //TODO: move it to spellHandler? @@ -119,7 +119,7 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb std::vector calculateResistedStacks(const CSpell * sp, const CGHeroInstance * caster, const CGHeroInstance * hero2, const std::set affectedCreatures, PlayerColor casterSideOwner, ECastingMode::ECastingMode mode, int usedSpellPower, int spellLevel) const; const CStack * battleGetStack(BattleHex pos, bool onlyAlive); //returns stack at given tile - const CGHeroInstance * battleGetOwner(const CStack * stack) const; //returns hero that owns given stack; NULL if none + const CGHeroInstance * battleGetOwner(const CStack * stack) const; //returns hero that owns given stack; nullptr if none void localInit(); void localInitStack(CStack * s); @@ -136,7 +136,7 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb class DLL_LINKAGE CStack : public CBonusSystemNode, public CStackBasicDescriptor { public: - const CStackInstance *base; //garrison slot from which stack originates (NULL for war machines, summoned cres, etc) + const CStackInstance *base; //garrison slot from which stack originates (nullptr for war machines, summoned cres, etc) ui32 ID; //unique ID of stack ui32 baseAmount; @@ -157,7 +157,7 @@ public: CStack(const CStackBasicDescriptor *stack, PlayerColor O, int I, bool AO, SlotID S = SlotID(255)); //c-tor CStack(); //c-tor ~CStack(); - std::string nodeName() const OVERRIDE; + std::string nodeName() const override; void init(); //set initial (invalid) values void postInit(); //used to finish initialization when inheriting creature parameters is working @@ -173,7 +173,7 @@ public: si32 magicResistance() const; //include aura of resistance static void stackEffectToFeature(std::vector & sf, const Bonus & sse); std::vector activeSpells() const; //returns vector of active spell IDs sorted by time of cast - const CGHeroInstance *getMyHero() const; //if stack belongs to hero (directly or was by him summoned) returns hero, NULL otherwise + const CGHeroInstance *getMyHero() const; //if stack belongs to hero (directly or was by him summoned) returns hero, nullptr otherwise static inline Bonus featureGenerator(Bonus::BonusType type, si16 subtype, si32 value, ui16 turnsRemain, si32 additionalInfo = 0, Bonus::LimitEffect limit = Bonus::NO_LIMIT) { @@ -204,7 +204,7 @@ public: h & ID & baseAmount & firstHPleft & owner & slot & attackerOwned & position & state & counterAttacks & shots & casts & count; - const CArmedInstance *army = (base ? base->armyObj : NULL); + const CArmedInstance *army = (base ? base->armyObj : nullptr); SlotID slot = (base ? base->armyObj->findStack(base) : SlotID()); if(h.saving) @@ -222,7 +222,7 @@ public: } else if(!army || slot == SlotID() || !army->hasStackAtSlot(slot)) { - base = NULL; + base = nullptr; logGlobal->warnStream() << type->nameSing << " doesn't have a base stack!"; } else diff --git a/lib/CArtHandler.cpp b/lib/CArtHandler.cpp index 828c0abe3..f2f589909 100644 --- a/lib/CArtHandler.cpp +++ b/lib/CArtHandler.cpp @@ -3,7 +3,6 @@ #include "filesystem/CResourceLoader.h" #include "CGeneralTextHandler.h" -#include #include "VCMI_Lib.h" #include "CModHandler.h" #include "CSpellHandler.h" @@ -23,7 +22,7 @@ using namespace boost::assign; * */ -extern boost::rand48 ran; +extern std::minstd_rand ran; // Note: list must match entries in ArtTraits.txt #define ART_POS_LIST \ ART_POS(SPELLBOOK) \ @@ -494,7 +493,7 @@ void CArtHandler::giveArtBonus( ArtifactID aid, Bonus::BonusType type, int val, giveArtBonus(aid, createBonus(type, val, subtype, valType, limiter, additionalInfo)); } -void CArtHandler::giveArtBonus(ArtifactID aid, Bonus::BonusType type, int val, int subtype, shared_ptr propagator /*= NULL*/, int additionalInfo) +void CArtHandler::giveArtBonus(ArtifactID aid, Bonus::BonusType type, int val, int subtype, shared_ptr propagator /*= nullptr*/, int additionalInfo) { giveArtBonus(aid, createBonus(type, val, subtype, propagator, additionalInfo)); } @@ -967,7 +966,7 @@ void CCombinedArtifactInstance::removeFrom(ArtifactLocation al) CArtifactInstance * CCombinedArtifactInstance::figureMainConstituent(const ArtifactLocation al) { - CArtifactInstance *mainConstituent = NULL; //it'll be replaced with combined artifact, not a lock + CArtifactInstance *mainConstituent = nullptr; //it'll be replaced with combined artifact, not a lock BOOST_FOREACH(ConstituentInfo &ci, constituentsInfo) if(ci.slot == al.slot) mainConstituent = ci.art; @@ -1006,7 +1005,7 @@ bool CCombinedArtifactInstance::isPart(const CArtifactInstance *supposedPart) co return false; } -CCombinedArtifactInstance::ConstituentInfo::ConstituentInfo(CArtifactInstance *Art /*= NULL*/, ArtifactPosition Slot /*= -1*/) +CCombinedArtifactInstance::ConstituentInfo::ConstituentInfo(CArtifactInstance *Art /*= nullptr*/, ArtifactPosition Slot /*= -1*/) { art = Art; slot = Slot; @@ -1025,7 +1024,7 @@ const CArtifactInstance* CArtifactSet::getArt(ArtifactPosition pos, bool exclude return si->artifact; } - return NULL; + return nullptr; } CArtifactInstance* CArtifactSet::getArt(ArtifactPosition pos, bool excludeLocked /*= true*/) @@ -1072,7 +1071,7 @@ const CArtifactInstance * CArtifactSet::getArtByInstanceId( ArtifactInstanceID a if(i.artifact->id == artInstId) return i.artifact; - return NULL; + return nullptr; } bool CArtifactSet::hasArt(ui32 aid, bool onlyWorn /*= false*/) const @@ -1088,12 +1087,12 @@ const ArtSlotInfo * CArtifactSet::getSlot(ArtifactPosition pos) const { int backpackPos = (int)pos - GameConstants::BACKPACK_START; if(backpackPos < 0 || backpackPos >= artifactsInBackpack.size()) - return NULL; + return nullptr; else return &artifactsInBackpack[backpackPos]; } - return NULL; + return nullptr; } bool CArtifactSet::isPositionFree(ArtifactPosition pos, bool onlyLockCheck /*= false*/) const diff --git a/lib/CArtHandler.h b/lib/CArtHandler.h index 9c0c1084e..4ef6f8dde 100644 --- a/lib/CArtHandler.h +++ b/lib/CArtHandler.h @@ -67,7 +67,7 @@ public: ui32 price; bmap > possibleSlots; //Bearer Type => ids of slots where artifact can be placed - std::unique_ptr > constituents; // Artifacts IDs a combined artifact consists of, or NULL. + std::unique_ptr > constituents; // Artifacts IDs a combined artifact consists of, or nullptr. std::vector constituentOf; // Reverse map of constituents - combined arts that include this art EartClass aClass; ArtifactID id; @@ -157,7 +157,7 @@ public: } bool operator==(const ConstituentInfo &rhs) const; - ConstituentInfo(CArtifactInstance *art = NULL, ArtifactPosition slot = ArtifactPosition::PRE_FIRST); + ConstituentInfo(CArtifactInstance *art = nullptr, ArtifactPosition slot = ArtifactPosition::PRE_FIRST); }; std::vector constituentsInfo; @@ -272,8 +272,8 @@ public: void eraseArtSlot(ArtifactPosition slot); const ArtSlotInfo *getSlot(ArtifactPosition pos) const; - const CArtifactInstance* getArt(ArtifactPosition pos, bool excludeLocked = true) const; //NULL - no artifact - CArtifactInstance* getArt(ArtifactPosition pos, bool excludeLocked = true); //NULL - no artifact + const CArtifactInstance* getArt(ArtifactPosition pos, bool excludeLocked = true) const; //nullptr - no artifact + CArtifactInstance* getArt(ArtifactPosition pos, bool excludeLocked = true); //nullptr - no artifact ArtifactPosition getArtPos(int aid, bool onlyWorn = true) const; //looks for equipped artifact with given ID and returns its slot ID or -1 if none(if more than one such artifact lower ID is returned) ArtifactPosition getArtPos(const CArtifactInstance *art) const; const CArtifactInstance *getArtByInstanceId(ArtifactInstanceID artInstId) const; diff --git a/lib/CBattleCallback.cpp b/lib/CBattleCallback.cpp index 6ba6ca99e..3249f26a9 100644 --- a/lib/CBattleCallback.cpp +++ b/lib/CBattleCallback.cpp @@ -210,8 +210,8 @@ const CGTownInstance * CBattleInfoEssentials::battleGetDefendedTown() const RETURN_IF_NOT_BATTLE(nullptr); - if(!getBattle() || getBattle()->town == NULL) - return NULL; + if(!getBattle() || getBattle()->town == nullptr) + return nullptr; return getBattle()->town; } @@ -503,7 +503,7 @@ void CBattleInfoCallback::battleGetStackQueue(std::vector &out, //let's define a huge lambda auto takeStack = [&](std::vector &st) -> const CStack* { - const CStack *ret = NULL; + const CStack *ret = nullptr; unsigned i, //fastest stack j=0; //fastest stack of the other side for(i = 0; i < st.size(); i++) @@ -514,7 +514,7 @@ void CBattleInfoCallback::battleGetStackQueue(std::vector &out, if(i == st.size()) return nullptr; - const CStack *fastest = st[i], *other = NULL; + const CStack *fastest = st[i], *other = nullptr; int bestSpeed = fastest->Speed(turn); if(fastest->attackerOwned != lastMoved) @@ -546,9 +546,9 @@ void CBattleInfoCallback::battleGetStackQueue(std::vector &out, assert(ret); if(ret == fastest) - st[i] = NULL; + st[i] = nullptr; else - st[j] = NULL; + st[j] = nullptr; lastMoved = ret->attackerOwned; return ret; @@ -998,7 +998,7 @@ TDmgRange CBattleInfoCallback::battleEstimateDamage(const CStack * attacker, con return battleEstimateDamage(bai, retaliationDmg); } -std::pair CBattleInfoCallback::battleEstimateDamage(const BattleAttackInfo &bai, std::pair * retaliationDmg /*= NULL*/) const +std::pair CBattleInfoCallback::battleEstimateDamage(const BattleAttackInfo &bai, std::pair * retaliationDmg /*= nullptr*/) const { RETURN_IF_NOT_BATTLE(std::make_pair(0, 0)); @@ -1225,7 +1225,7 @@ std::pair CBattleInfoCallback::getNearestStack(const return std::make_pair(minimal->stack, reachability.predecessors[minimal->stack->position]); } else - return std::make_pair(NULL, BattleHex::INVALID); + return std::make_pair(nullptr, BattleHex::INVALID); } si8 CBattleInfoCallback::battleGetTacticDist() const @@ -1424,7 +1424,7 @@ bool CBattleInfoCallback::isToReverse (BattleHex hexFrom, BattleHex hexTo, bool } } -ReachabilityInfo::TDistances CBattleInfoCallback::battleGetDistances(const CStack * stack, BattleHex hex /*= BattleHex::INVALID*/, BattleHex * predecessors /*= NULL*/) const +ReachabilityInfo::TDistances CBattleInfoCallback::battleGetDistances(const CStack * stack, BattleHex hex /*= BattleHex::INVALID*/, BattleHex * predecessors /*= nullptr*/) const { ReachabilityInfo::TDistances ret; ret.fill(-1); @@ -1811,7 +1811,7 @@ ESpellCastProblem::ESpellCastProblem CBattleInfoCallback::battleCanCastThisSpell if (mode == ECastingMode::HERO_CASTING) return battleIsImmune(battleGetFightingHero(playerToSide(player)), spell, mode, dest); else - return battleIsImmune(NULL, spell, mode, dest); + return battleIsImmune(nullptr, spell, mode, dest); } ui32 CBattleInfoCallback::calculateSpellBonus(ui32 baseDamage, const CSpell * sp, const CGHeroInstance * caster, const CStack * affectedCreature) const @@ -1999,13 +1999,13 @@ std::set CBattleInfoCallback::getAffectedCreatures(const CSpell * return attackedCres; } -const CStack * CBattleInfoCallback::getStackIf(boost::function pred) const +const CStack * CBattleInfoCallback::getStackIf(std::function pred) const { RETURN_IF_NOT_BATTLE(nullptr); auto stacks = battleGetAllStacks(); auto stackItr = range::find_if(stacks, pred); return stackItr == stacks.end() - ? NULL + ? nullptr : *stackItr; } @@ -2172,7 +2172,7 @@ int CBattleInfoCallback::battleGetSurrenderCost(PlayerColor Player) const si8 CBattleInfoCallback::battleMaxSpellLevel() const { - const CBonusSystemNode *node = NULL; + const CBonusSystemNode *node = nullptr; if(const CGHeroInstance *h = battleGetFightingHero(battleGetMySide())) node = h; //TODO else use battle node diff --git a/lib/CBattleCallback.h b/lib/CBattleCallback.h index 472e4569d..bcb30b0dd 100644 --- a/lib/CBattleCallback.h +++ b/lib/CBattleCallback.h @@ -36,7 +36,7 @@ class CBattleInfoEssentials; //Basic class for various callbacks (interfaces called by players to get info about game and so forth) class DLL_LINKAGE CCallbackBase { - const BattleInfo *battle; //battle to which the player is engaged, NULL if none or not applicable + const BattleInfo *battle; //battle to which the player is engaged, nullptr if none or not applicable const BattleInfo * getBattle() const { @@ -171,7 +171,7 @@ public: bool battleHasNativeStack(ui8 side) const; ui8 battleGetWallState(int partOfWall) const; //for determining state of a part of the wall; format: parameter [0] - keep, [1] - bottom tower, [2] - bottom wall, [3] - below gate, [4] - over gate, [5] - upper wall, [6] - uppert tower, [7] - gate; returned value: 1 - intact, 2 - damaged, 3 - destroyed; 0 - no battle int battleGetMoatDmg() const; //what dmg unit will suffer if ending turn in the moat - const CGTownInstance * battleGetDefendedTown() const; //returns defended town if current battle is a siege, NULL instead + const CGTownInstance * battleGetDefendedTown() const; //returns defended town if current battle is a siege, nullptr instead const CStack *battleActiveStack() const; si8 battleTacticDist() const; //returns tactic distance in current tactics phase; 0 if not in tactics phase si8 battleGetTacticsSide() const; //returns which side is in tactics phase, undefined if none (?) @@ -226,10 +226,10 @@ public: void battleGetStackCountOutsideHexes(bool *ac) const; // returns hexes which when in front of a stack cause us to move the amount box back - std::vector battleGetAvailableHexes(const CStack * stack, bool addOccupiable, std::vector * attackable = NULL) const; //returns hexes reachable by creature with id ID (valid movement destinations), DOES contain stack current position + std::vector battleGetAvailableHexes(const CStack * stack, bool addOccupiable, std::vector * attackable = nullptr) const; //returns hexes reachable by creature with id ID (valid movement destinations), DOES contain stack current position int battleGetSurrenderCost(PlayerColor Player) const; //returns cost of surrendering battle, -1 if surrendering is not possible - ReachabilityInfo::TDistances battleGetDistances(const CStack * stack, BattleHex hex = BattleHex::INVALID, BattleHex * predecessors = NULL) const; //returns vector of distances to [dest hex number] + ReachabilityInfo::TDistances battleGetDistances(const CStack * stack, BattleHex hex = BattleHex::INVALID, BattleHex * predecessors = nullptr) const; //returns vector of distances to [dest hex number] std::set battleGetAttackedHexes(const CStack* attacker, BattleHex destinationTile, BattleHex attackerPos = BattleHex::INVALID) const; bool battleCanShoot(const CStack * stack, BattleHex dest) const; //determines if stack with given ID shoot at the selected destination bool battleIsStackBlocked(const CStack * stack) const; //returns true if there is neighboring enemy stack @@ -240,8 +240,8 @@ public: TDmgRange calculateDmgRange(const CStack* attacker, const CStack* defender, bool shooting, ui8 charge, bool lucky, bool unlucky, bool deathBlow, bool ballistaDoubleDmg) const; //charge - number of hexes travelled before attack (for champion's jousting); returns pair //hextowallpart //int battleGetWallUnderHex(BattleHex hex) const; //returns part of destructible wall / gate / keep under given hex or -1 if not found - std::pair battleEstimateDamage(const BattleAttackInfo &bai, std::pair * retaliationDmg = NULL) const; //estimates damage dealt by attacker to defender; it may be not precise especially when stack has randomly working bonuses; returns pair - std::pair battleEstimateDamage(const CStack * attacker, const CStack * defender, std::pair * retaliationDmg = NULL) const; //estimates damage dealt by attacker to defender; it may be not precise especially when stack has randomly working bonuses; returns pair + std::pair battleEstimateDamage(const BattleAttackInfo &bai, std::pair * retaliationDmg = nullptr) const; //estimates damage dealt by attacker to defender; it may be not precise especially when stack has randomly working bonuses; returns pair + std::pair battleEstimateDamage(const CStack * attacker, const CStack * defender, std::pair * retaliationDmg = nullptr) const; //estimates damage dealt by attacker to defender; it may be not precise especially when stack has randomly working bonuses; returns pair si8 battleHasDistancePenalty( const CStack * stack, BattleHex destHex ) const; si8 battleHasDistancePenalty(const IBonusBearer *bonusBearer, BattleHex shooterPosition, BattleHex destHex ) const; si8 battleHasWallPenalty(const CStack * stack, BattleHex destHex) const; //checks if given stack has wall penalty @@ -268,7 +268,7 @@ public: ESpellCastProblem::ESpellCastProblem battleIsImmune(const CGHeroInstance * caster, const CSpell * spell, ECastingMode::ECastingMode mode, BattleHex dest) const; - const CStack * getStackIf(boost::function pred) const; + const CStack * getStackIf(std::function pred) const; si8 battleHasShootingPenalty(const CStack * stack, BattleHex destHex) { diff --git a/lib/CConfigHandler.cpp b/lib/CConfigHandler.cpp index 619d5a00a..c7a8d110b 100644 --- a/lib/CConfigHandler.cpp +++ b/lib/CConfigHandler.cpp @@ -135,7 +135,7 @@ void SettingsListener::nodeInvalidated(const std::vector &changedPa callback(parent.getNode(path)); } -void SettingsListener::operator() (boost::function _callback) +void SettingsListener::operator() (std::function _callback) { callback = _callback; } @@ -200,7 +200,7 @@ static void setGem(AdventureMapConfig &ac, const int gem, const JsonNode &g) ac.gemG.push_back(g["graphic"].String()); } -CConfigHandler::CConfigHandler(void): current(NULL) +CConfigHandler::CConfigHandler(void): current(nullptr) { } diff --git a/lib/CConfigHandler.h b/lib/CConfigHandler.h index 5da62ae6d..ef8f3ad1a 100644 --- a/lib/CConfigHandler.h +++ b/lib/CConfigHandler.h @@ -63,7 +63,7 @@ class DLL_LINKAGE SettingsListener // Path to this node std::vector path; // Callback - boost::function callback; + std::function callback; SettingsListener(SettingsStorage &_parent, const std::vector &_path); @@ -75,7 +75,7 @@ public: ~SettingsListener(); // assign callback function - void operator()(boost::function _callback); + void operator()(std::function _callback); friend class SettingsStorage; }; diff --git a/lib/CConsoleHandler.cpp b/lib/CConsoleHandler.cpp index de619825b..9a8be13de 100644 --- a/lib/CConsoleHandler.cpp +++ b/lib/CConsoleHandler.cpp @@ -61,9 +61,9 @@ void printWinError() logGlobal->errorStream() << "Error " << error << " encountered:"; //Get error description - char* pTemp = NULL; + char* pTemp = nullptr; FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, error, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR)&pTemp, 1, NULL); + nullptr, error, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR)&pTemp, 1, nullptr); logGlobal->errorStream() << pTemp; LocalFree( pTemp ); } @@ -124,9 +124,9 @@ LONG WINAPI onUnhandledException(EXCEPTION_POINTERS* exception) MINIDUMP_EXCEPTION_INFORMATION meinfo = {threadId, exception, TRUE}; //create file where dump will be placed - char *mname = NULL; + char *mname = nullptr; char buffer[MAX_PATH + 1]; - HMODULE hModule = NULL; + HMODULE hModule = nullptr; GetModuleFileNameA(hModule, buffer, MAX_PATH); mname = strrchr(buffer, '\\'); if (mname != 0) @@ -228,7 +228,7 @@ CConsoleHandler::CConsoleHandler() : thread(nullptr) #else defColor = "\x1b[0m"; #endif - cb = new boost::function; + cb = new std::function; } CConsoleHandler::~CConsoleHandler() { @@ -248,11 +248,11 @@ void CConsoleHandler::end() #endif thread->join(); delete thread; - thread = NULL; + thread = nullptr; } } void CConsoleHandler::start() { - thread = new boost::thread(boost::bind(&CConsoleHandler::run,console)); + thread = new boost::thread(std::bind(&CConsoleHandler::run,console)); } diff --git a/lib/CConsoleHandler.h b/lib/CConsoleHandler.h index 37a8b9d2b..83a5d892b 100644 --- a/lib/CConsoleHandler.h +++ b/lib/CConsoleHandler.h @@ -75,7 +75,7 @@ public: #endif } - boost::function *cb; //function to be called when message is received + std::function *cb; //function to be called when message is received private: int run(); diff --git a/lib/CCreatureHandler.cpp b/lib/CCreatureHandler.cpp index baddbfe2d..2bccececd 100644 --- a/lib/CCreatureHandler.cpp +++ b/lib/CCreatureHandler.cpp @@ -1046,7 +1046,7 @@ CCreatureHandler::~CCreatureHandler() creature.dellNull(); } -CreatureID CCreatureHandler::pickRandomMonster(const boost::function &randGen, int tier) const +CreatureID CCreatureHandler::pickRandomMonster(const std::function &randGen, int tier) const { int r = 0; if(tier == -1) //pick any allowed creature diff --git a/lib/CCreatureHandler.h b/lib/CCreatureHandler.h index 72cf1e3dd..32572d6fb 100644 --- a/lib/CCreatureHandler.h +++ b/lib/CCreatureHandler.h @@ -184,7 +184,7 @@ public: std::vector > > skillRequirements; // first - Bonus, second - which two skills are needed to use it void deserializationFix(); - CreatureID pickRandomMonster(const boost::function &randGen = 0, int tier = -1) const; //tier <1 - CREATURES_PER_TOWN> or -1 for any + CreatureID pickRandomMonster(const std::function &randGen = 0, int tier = -1) const; //tier <1 - CREATURES_PER_TOWN> or -1 for any void addBonusForTier(int tier, Bonus *b); //tier must be <1-7> void addBonusForAllCreatures(Bonus *b); diff --git a/lib/CCreatureSet.cpp b/lib/CCreatureSet.cpp index a382d25a7..81bd6d65a 100644 --- a/lib/CCreatureSet.cpp +++ b/lib/CCreatureSet.cpp @@ -37,7 +37,7 @@ const CCreature* CCreatureSet::getCreature(SlotID slot) const if (i != stacks.end()) return i->second->type; else - return NULL; + return nullptr; } bool CCreatureSet::setCreature(SlotID slot, CreatureID type, TQuantity quantity) /*slots 0 to 6 */ @@ -281,7 +281,7 @@ const CStackInstance* CCreatureSet::getStackPtr(SlotID slot) const { if(hasStackAtSlot(slot)) return stacks.find(slot)->second; - else return NULL; + else return nullptr; } void CCreatureSet::eraseStack(SlotID slot) @@ -386,7 +386,7 @@ CStackInstance * CCreatureSet::detachStack(SlotID slot) //if(CArmedInstance *armedObj = castToArmyObj()) { - ret->setArmyObj(NULL); //detaches from current armyobj + ret->setArmyObj(nullptr); //detaches from current armyobj } assert(!ret->armyObj); //we failed detaching? @@ -477,9 +477,9 @@ void CStackInstance::init() { experience = 0; count = 0; - type = NULL; + type = nullptr; idRand = -1; - _armyObj = NULL; + _armyObj = nullptr; setNodeType(STACK_INSTANCE); } @@ -549,7 +549,7 @@ void CStackInstance::setType(CreatureID creID) if(creID >= 0 && creID < VLC->creh->creatures.size()) setType(VLC->creh->creatures[creID]); else - setType((const CCreature*)NULL); + setType((const CCreature*)nullptr); } void CStackInstance::setType(const CCreature *c) @@ -638,10 +638,10 @@ std::string CStackInstance::nodeName() const void CStackInstance::deserializationFix() { const CCreature *backup = type; - type = NULL; + type = nullptr; setType(backup); const CArmedInstance *armyBackup = _armyObj; - _armyObj = NULL; + _armyObj = nullptr; setArmyObj(armyBackup); artDeserializationFix(this); } @@ -689,9 +689,9 @@ void CCommanderInstance::init() experience = 0; level = 1; count = 1; - type = NULL; + type = nullptr; idRand = -1; - _armyObj = NULL; + _armyObj = nullptr; setNodeType (CBonusSystemNode::COMMANDER); secondarySkills.resize (ECommander::SPELL_POWER + 1); } @@ -748,7 +748,7 @@ bool CCommanderInstance::gainsLevel() const CStackBasicDescriptor::CStackBasicDescriptor() { - type = NULL; + type = nullptr; count = -1; } diff --git a/lib/CCreatureSet.h b/lib/CCreatureSet.h index b4127e09e..41787c90a 100644 --- a/lib/CCreatureSet.h +++ b/lib/CCreatureSet.h @@ -78,8 +78,8 @@ public: void setArmyObj(const CArmedInstance *ArmyObj); virtual void giveStackExp(TExpType exp); bool valid(bool allowUnrandomized) const; - ArtBearer::ArtBearer bearerType() const OVERRIDE; //from CArtifactSet - virtual std::string nodeName() const OVERRIDE; //from CBonusSystemnode + ArtBearer::ArtBearer bearerType() const override; //from CArtifactSet + virtual std::string nodeName() const override; //from CBonusSystemnode void deserializationFix(); }; @@ -95,7 +95,7 @@ public: std::vector secondarySkills; //ID -> level std::set specialSKills; //std::vector arts; - void init() OVERRIDE; + void init() override; CCommanderInstance(); CCommanderInstance (CreatureID id); ~CCommanderInstance(); @@ -106,8 +106,8 @@ public: bool gainsLevel() const; //true if commander has lower level than should upon his experience ui64 getPower() const {return 0;}; int getExpRank() const; - int getLevel() const OVERRIDE; - ArtBearer::ArtBearer bearerType() const OVERRIDE; //from CArtifactSet + int getLevel() const override; + ArtBearer::ArtBearer bearerType() const override; //from CArtifactSet template void serialize(Handler &h, const int version) { @@ -133,8 +133,8 @@ class DLL_LINKAGE CSimpleArmy : public IArmyDescriptor { public: TSimpleSlots army; - void clear() OVERRIDE; - bool setCreature(SlotID slot, CreatureID cre, TQuantity count) OVERRIDE; + void clear() override; + bool setCreature(SlotID slot, CreatureID cre, TQuantity count) override; operator bool() const; template void serialize(Handler &h, const int version) @@ -181,7 +181,7 @@ public: void setToArmy(CSimpleArmy &src); //erases all our army and moves stacks from src to us; src MUST NOT be an armed object! WARNING: use it wisely. Or better do not use at all. const CStackInstance& getStack(SlotID slot) const; //stack must exist - const CStackInstance* getStackPtr(SlotID slot) const; //if stack doesn't exist, returns NULL + const CStackInstance* getStackPtr(SlotID slot) const; //if stack doesn't exist, returns nullptr const CCreature* getCreature(SlotID slot) const; //workaround of map issue; int getStackCount (SlotID slot) const; TExpType getStackExperience(SlotID slot) const; diff --git a/lib/CGameInterface.h b/lib/CGameInterface.h index 6b218b9e4..d815974bf 100644 --- a/lib/CGameInterface.h +++ b/lib/CGameInterface.h @@ -105,7 +105,7 @@ class DLL_LINKAGE CGlobalAI : public CGameInterface // AI class (to derivate) { public: CGlobalAI(); - virtual BattleAction activeStack(const CStack * stack) OVERRIDE; + virtual BattleAction activeStack(const CStack * stack) override; }; //class to be inherited by adventure-only AIs, it cedes battle actions to given battle-AI diff --git a/lib/CGameState.cpp b/lib/CGameState.cpp index 284a83c7c..2d3d7f471 100644 --- a/lib/CGameState.cpp +++ b/lib/CGameState.cpp @@ -1,7 +1,6 @@ #include "StdInc.h" #include "CGameState.h" -#include #include "mapping/CCampaignHandler.h" #include "CDefObjInfoHandler.h" #include "CArtHandler.h" @@ -28,7 +27,7 @@ #include "rmg/CMapGenerator.h" #include "CStopWatch.h" -DLL_LINKAGE boost::rand48 ran; +DLL_LINKAGE std::minstd_rand ran; class CGObjectInstance; #ifdef min @@ -55,7 +54,7 @@ class CBaseForGSApply public: virtual void applyOnGS(CGameState *gs, void *pack) const =0; virtual ~CBaseForGSApply(){}; - template static CBaseForGSApply *getApplier(const U * t=NULL) + template static CBaseForGSApply *getApplier(const U * t=nullptr) { return new CApplyOnGS; } @@ -73,7 +72,7 @@ public: } }; -static CApplier *applierGs = NULL; +static CApplier *applierGs = nullptr; class IObjectCaller { @@ -102,7 +101,7 @@ class CObjectCallersHandler public: std::vector apps; - template void registerType(const T * t=NULL) + template void registerType(const T * t=nullptr) { apps.push_back(new CObjectCaller); } @@ -129,7 +128,7 @@ public: //for (size_t i = 0; i < apps.size(); i++) //apps[i]->postInit(); } -} *objCaller = NULL; +} *objCaller = nullptr; void MetaString::getLocalString(const std::pair &txt, std::string &dst) const { @@ -364,7 +363,7 @@ static CGObjectInstance * createObject(Obj id, int subid, int3 pos, PlayerColor if(!nobj->defInfo) logGlobal->warnStream() <<"No def declaration for " <pos = pos; - //nobj->state = NULL;//new CLuaObjectScript(); + //nobj->state = nullptr;//new CLuaObjectScript(); nobj->tempOwner = owner; nobj->defInfo->id = id; nobj->defInfo->subid = subid; @@ -376,14 +375,14 @@ static CGObjectInstance * createObject(Obj id, int subid, int3 pos, PlayerColor return nobj; } -CGHeroInstance * CGameState::HeroesPool::pickHeroFor(bool native, PlayerColor player, const CTown *town, bmap > &available, const CHeroClass *bannedClass /*= NULL*/) const +CGHeroInstance * CGameState::HeroesPool::pickHeroFor(bool native, PlayerColor player, const CTown *town, bmap > &available, const CHeroClass *bannedClass /*= nullptr*/) const { - CGHeroInstance *ret = NULL; + CGHeroInstance *ret = nullptr; if(player>=PlayerColor::PLAYER_LIMIT) { logGlobal->errorStream() << "Cannot pick hero for " << town->faction->index << ". Wrong owner!"; - return NULL; + return nullptr; } std::vector pool; @@ -522,15 +521,15 @@ std::pair CGameState::pickObject (CGObjectInstance *obj) case Obj::RANDOM_HERO: return std::make_pair(Obj::HERO, pickHero(obj->tempOwner)); case Obj::RANDOM_MONSTER: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran))); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran))); case Obj::RANDOM_MONSTER_L1: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 1)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 1)); case Obj::RANDOM_MONSTER_L2: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 2)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 2)); case Obj::RANDOM_MONSTER_L3: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 3)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 3)); case Obj::RANDOM_MONSTER_L4: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 4)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 4)); case Obj::RANDOM_RESOURCE: return std::make_pair(Obj::RESOURCE,ran()%7); //now it's OH3 style, use %8 for mithril case Obj::RANDOM_TOWN: @@ -559,11 +558,11 @@ std::pair CGameState::pickObject (CGObjectInstance *obj) return std::make_pair(Obj::TOWN,f); } case Obj::RANDOM_MONSTER_L5: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 5)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 5)); case Obj::RANDOM_MONSTER_L6: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 6)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 6)); case Obj::RANDOM_MONSTER_L7: - return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(boost::ref(ran), 7)); + return std::make_pair(Obj::MONSTER, VLC->creh->pickRandomMonster(std::ref(ran), 7)); case Obj::RANDOM_DWELLING: case Obj::RANDOM_DWELLING_LVL: case Obj::RANDOM_DWELLING_FACTION: @@ -856,7 +855,7 @@ void CGameState::init(StartInfo * si) ran.seed((boost::int32_t)si->seedToBeUsed); scenarioOps = new StartInfo(*si); initialOpts = new StartInfo(*si); - si = NULL; + si = nullptr; switch(scenarioOps->mode) { @@ -1522,11 +1521,11 @@ void CGameState::initDuel() const CArmedInstance *armies[2] = {0}; const CGHeroInstance *heroes[2] = {0}; - CGTownInstance *town = NULL; + CGTownInstance *town = nullptr; for(int i = 0; i < 2; i++) { - CArmedInstance *obj = NULL; + CArmedInstance *obj = nullptr; if(dp.sides[i].heroId >= 0) { const DuelParameters::SideSettings &ss = dp.sides[i]; @@ -1678,8 +1677,8 @@ UpgradeInfo CGameState::getUpgradeInfo(const CStackInstance &stack) UpgradeInfo ret; const CCreature *base = stack.type; - const CGHeroInstance *h = stack.armyObj->ID == Obj::HERO ? static_cast(stack.armyObj) : NULL; - const CGTownInstance *t = NULL; + const CGHeroInstance *h = stack.armyObj->ID == Obj::HERO ? static_cast(stack.armyObj) : nullptr; + const CGTownInstance *t = nullptr; if(stack.armyObj->ID == Obj::TOWN) t = static_cast(stack.armyObj); @@ -2077,7 +2076,7 @@ int CGameState::victoryCheck( PlayerColor player ) const int total = 0; //creature counter for(size_t i = 0; i < map->objects.size(); i++) { - const CArmedInstance *ai = NULL; + const CArmedInstance *ai = nullptr; if(map->objects[i] && map->objects[i]->tempOwner == player //object controlled by player && (ai = dynamic_cast(map->objects[i].get()))) //contains army @@ -2251,7 +2250,7 @@ struct statsHLP { std::vector > &h = gs->players[color].heroes; if(!h.size()) - return NULL; + return nullptr; //best hero will be that with highest exp int best = 0; for(int b=1; b > CGameState::campaignH logGlobal->warnStream() << "Warning, no hero to replace!"; map->removeBlockVisTiles(hp, true); delete hp; - map->objects[g] = NULL; + map->objects[g] = nullptr; } //we don't have to remove hero from Xheroes because it would destroy the order and duplicates shouldn't happen } @@ -2673,7 +2672,7 @@ CGPathNode::CGPathNode() land = 0; moveRemains = 0; turns = 255; - theNodeBefore = NULL; + theNodeBefore = nullptr; } bool CGPathNode::reachable() const @@ -2703,7 +2702,7 @@ bool CPathsInfo::getPath( const int3 &dst, CGPath &out ) CPathsInfo::CPathsInfo( const int3 &Sizes ) :sizes(Sizes) { - hero = NULL; + hero = nullptr; nodes = new CGPathNode**[sizes.x]; for(int i = 0; i < sizes.x; i++) { @@ -2781,7 +2780,7 @@ void InfoAboutHero::assign(const InfoAboutHero & iah) { InfoAboutArmy::operator = (iah); - details = (iah.details ? new Details(*iah.details) : NULL); + details = (iah.details ? new Details(*iah.details) : nullptr); hclass = iah.hclass; portrait = iah.portrait; } @@ -3054,7 +3053,7 @@ void CPathfinder::initializeGraph() node.coord.y = j; node.coord.z = k; node.land = tinfo->terType != ETerrainType::WATER; - node.theNodeBefore = NULL; + node.theNodeBefore = nullptr; } } } diff --git a/lib/CGameState.h b/lib/CGameState.h index 1c7e9cbc6..8b8851031 100644 --- a/lib/CGameState.h +++ b/lib/CGameState.h @@ -179,7 +179,7 @@ public: ui8 daysWithoutCastle; PlayerState(); - std::string nodeName() const OVERRIDE; + std::string nodeName() const override; template void serialize(Handler &h, const int version) { @@ -350,7 +350,7 @@ private: public: CPathfinder(CPathsInfo &_out, CGameState *_gs, const CGHeroInstance *_hero); - void calculatePaths(int3 src = int3(-1,-1,-1), int movement = -1); //calculates possible paths for hero, by default uses current hero position and movement left; returns pointer to newly allocated CPath or NULL if path does not exists + void calculatePaths(int3 src = int3(-1,-1,-1), int movement = -1); //calculates possible paths for hero, by default uses current hero position and movement left; returns pointer to newly allocated CPath or nullptr if path does not exists }; @@ -370,10 +370,10 @@ public: struct DLL_LINKAGE HeroesPool { - bmap > heroesPool; //[subID] - heroes available to buy; NULL if not available + bmap > heroesPool; //[subID] - heroes available to buy; nullptr if not available bmap pavailable; // [subid] -> which players can recruit hero (binary flags) - CGHeroInstance * pickHeroFor(bool native, PlayerColor player, const CTown *town, bmap > &available, const CHeroClass *bannedClass = NULL) const; + CGHeroInstance * pickHeroFor(bool native, PlayerColor player, const CTown *town, bmap > &available, const CHeroClass *bannedClass = nullptr) const; template void serialize(Handler &h, const int version) { @@ -401,7 +401,7 @@ public: PlayerRelations::PlayerRelations getPlayerRelations(PlayerColor color1, PlayerColor color2); bool checkForVisitableDir(const int3 & src, const int3 & dst) const; //check if src tile is visitable from dst tile bool checkForVisitableDir(const int3 & src, const TerrainTile *pom, const int3 & dst) const; //check if src tile is visitable from dst tile - void calculatePaths(const CGHeroInstance *hero, CPathsInfo &out, int3 src = int3(-1,-1,-1), int movement = -1); //calculates possible paths for hero, by default uses current hero position and movement left; returns pointer to newly allocated CPath or NULL if path does not exists + void calculatePaths(const CGHeroInstance *hero, CPathsInfo &out, int3 src = int3(-1,-1,-1), int movement = -1); //calculates possible paths for hero, by default uses current hero position and movement left; returns pointer to newly allocated CPath or nullptr if path does not exists int3 guardingCreaturePosition (int3 pos) const; std::vector guardingCreatures (int3 pos) const; int victoryCheck(PlayerColor player) const; //checks if given player is winner; -1 if std victory, 1 if special victory, 0 else diff --git a/lib/CModHandler.cpp b/lib/CModHandler.cpp index 25e0eac2b..09ac0894d 100644 --- a/lib/CModHandler.cpp +++ b/lib/CModHandler.cpp @@ -45,7 +45,7 @@ void CIdentifierStorage::checkIdentifier(std::string & ID) } CIdentifierStorage::ObjectCallback::ObjectCallback(std::string localScope, std::string remoteScope, std::string type, - std::string name, const boost::function & callback): + std::string name, const std::function & callback): localScope(localScope), remoteScope(remoteScope), type(type), @@ -81,21 +81,21 @@ void CIdentifierStorage::requestIdentifier(ObjectCallback callback) scheduledRequests.push_back(callback); } -void CIdentifierStorage::requestIdentifier(std::string scope, std::string type, std::string name, const boost::function & callback) +void CIdentifierStorage::requestIdentifier(std::string scope, std::string type, std::string name, const std::function & callback) { auto pair = splitString(name, ':'); // remoteScope:name requestIdentifier(ObjectCallback(scope, pair.first, type, pair.second, callback)); } -void CIdentifierStorage::requestIdentifier(std::string type, const JsonNode & name, const boost::function & callback) +void CIdentifierStorage::requestIdentifier(std::string type, const JsonNode & name, const std::function & callback) { auto pair = splitString(name.String(), ':'); // remoteScope:name requestIdentifier(ObjectCallback(name.meta, pair.first, type, pair.second, callback)); } -void CIdentifierStorage::requestIdentifier(const JsonNode & name, const boost::function & callback) +void CIdentifierStorage::requestIdentifier(const JsonNode & name, const std::function & callback) { auto pair = splitString(name.String(), ':'); // remoteScope: auto pair2 = splitString(pair.second, '.'); // type.name diff --git a/lib/CModHandler.h b/lib/CModHandler.h index 59b451fc0..b2940a7b1 100644 --- a/lib/CModHandler.h +++ b/lib/CModHandler.h @@ -31,9 +31,9 @@ class CIdentifierStorage std::string remoteScope; /// scope in which this object must be found std::string type; /// type, e.g. creature, faction, hero, etc std::string name; /// string ID - boost::function callback; + std::function callback; - ObjectCallback(std::string localScope, std::string remoteScope, std::string type, std::string name, const boost::function & callback); + ObjectCallback(std::string localScope, std::string remoteScope, std::string type, std::string name, const std::function & callback); }; struct ObjectData // entry created on ID registration @@ -53,9 +53,9 @@ class CIdentifierStorage public: /// request identifier for specific object name. If ID is not yet resolved callback will be queued /// and will be called later - void requestIdentifier(std::string scope, std::string type, std::string name, const boost::function & callback); - void requestIdentifier(std::string type, const JsonNode & name, const boost::function & callback); - void requestIdentifier(const JsonNode & name, const boost::function & callback); + void requestIdentifier(std::string scope, std::string type, std::string name, const std::function & callback); + void requestIdentifier(std::string type, const JsonNode & name, const std::function & callback); + void requestIdentifier(const JsonNode & name, const std::function & callback); /// registers new object, calls all associated callbacks void registerObject(std::string scope, std::string type, std::string name, si32 identifier); diff --git a/lib/CObjectHandler.cpp b/lib/CObjectHandler.cpp index 1909a6ab9..379495e74 100644 --- a/lib/CObjectHandler.cpp +++ b/lib/CObjectHandler.cpp @@ -18,7 +18,6 @@ #include "CSpellHandler.h" #include "CModHandler.h" #include "../client/CSoundBase.h" -#include #include "CTownHandler.h" #include "CCreatureHandler.h" #include "VCMI_Lib.h" @@ -41,8 +40,8 @@ using namespace boost::assign; std::map > > CGTeleport::objs; std::vector > CGTeleport::gates; -IGameCallback * IObjectInterface::cb = NULL; -extern boost::rand48 ran; +IGameCallback * IObjectInterface::cb = nullptr; +extern std::minstd_rand ran; std::map > CGKeys::playerKeyMap; std::map > CGMagi::eyelist; ui8 CGObelisk::obeliskCount; //how many obelisks are on map @@ -304,7 +303,7 @@ CGObjectInstance::CGObjectInstance() //state = new CLuaObjectScript(); ID = Obj::NO_OBJ; subID = -1; - defInfo = NULL; + defInfo = nullptr; tempOwner = PlayerColor::UNFLAGGABLE; blockVisit = false; } @@ -312,7 +311,7 @@ CGObjectInstance::~CGObjectInstance() { //if (state) // delete state; - //state=NULL; + //state=nullptr; } const std::string & CGObjectInstance::getHoverText() const @@ -336,9 +335,9 @@ int CGObjectInstance::getHeight() const //returns height of object graphic in ti } bool CGObjectInstance::visitableAt(int x, int y) const //returns true if object is visitable at location (x, y) form left top tile of image (x, y in tiles) { - if(defInfo==NULL) + if(defInfo==nullptr) { - logGlobal->warnStream() << "Warning: VisitableAt for obj "<< id.getNum() <<": NULL defInfo!"; + logGlobal->warnStream() << "Warning: VisitableAt for obj "<< id.getNum() <<": nullptr defInfo!"; return false; } @@ -351,7 +350,7 @@ bool CGObjectInstance::visitableAt(int x, int y) const //returns true if object } bool CGObjectInstance::blockingAt(int x, int y) const { - if(x<0 || y<0 || x>=getWidth() || y>=getHeight() || defInfo==NULL) + if(x<0 || y<0 || x>=getWidth() || y>=getHeight() || defInfo==nullptr) return false; if((defInfo->blockMap[y+6-getHeight()] >> (7-(8-getWidth()+x) )) & 1) return false; @@ -754,10 +753,10 @@ CGHeroInstance::CGHeroInstance() isStanding = true; moveDir = 4; exp = 0xffffffff; - visitedTown = NULL; - type = NULL; - boat = NULL; - commander = NULL; + visitedTown = nullptr; + type = nullptr; + boat = nullptr; + commander = nullptr; sex = 0xff; secSkills.push_back(std::make_pair(SecondarySkill::DEFAULT, -1)); } @@ -842,7 +841,7 @@ void CGHeroInstance::initHero() mana = manaLimit(); } -void CGHeroInstance::initArmy(IArmyDescriptor *dst /*= NULL*/) +void CGHeroInstance::initArmy(IArmyDescriptor *dst /*= nullptr*/) { if(!dst) dst = this; @@ -1206,7 +1205,7 @@ void CGHeroInstance::Updatespecialty() //TODO: calculate special value of bonuse break; //use only hero skills as bonuses to avoid feedback loop case Bonus::PRIMARY_SKILL: //for creatures, that is { - const CCreature * cre = NULL; + const CCreature * cre = nullptr; int creLevel = 0; if (auto creatureLimiter = std::dynamic_pointer_cast(b->limiter)) //TODO: more general eveluation of bonuses? { @@ -2167,7 +2166,7 @@ void CGTownInstance::onHeroVisit(const CGHeroInstance * h) const { if(armedGarrison() || visitingHero) { - const CGHeroInstance *defendingHero = NULL; + const CGHeroInstance *defendingHero = nullptr; const CArmedInstance *defendingArmy = this; if(visitingHero) @@ -2183,7 +2182,7 @@ void CGTownInstance::onHeroVisit(const CGHeroInstance * h) const //TODO //"borrowing" army from garrison to visiting hero - cb->startBattlePrimary(h, defendingArmy, getSightCenter(), h, defendingHero, false, (outsideTown ? NULL : this)); + cb->startBattlePrimary(h, defendingArmy, getSightCenter(), h, defendingHero, false, (outsideTown ? nullptr : this)); } else { @@ -2581,10 +2580,10 @@ void CGTownInstance::setVisitingHero(CGHeroInstance *h) else { PlayerState *p = cb->gameState()->getPlayer(visitingHero->tempOwner); - visitingHero->visitedTown = NULL; + visitingHero->visitedTown = nullptr; visitingHero->detachFrom(&townAndVis); visitingHero->attachTo(p); - visitingHero = NULL; + visitingHero = nullptr; } } @@ -2604,11 +2603,11 @@ void CGTownInstance::setGarrisonedHero(CGHeroInstance *h) else { PlayerState *p = cb->gameState()->getPlayer(garrisonHero->tempOwner); - garrisonHero->visitedTown = NULL; + garrisonHero->visitedTown = nullptr; garrisonHero->inTownGarrison = false; garrisonHero->detachFrom(this); garrisonHero->attachTo(p); - garrisonHero = NULL; + garrisonHero = nullptr; } updateMoraleBonusFromArmy(); //avoid giving morale bonus for same army twice } @@ -3954,7 +3953,10 @@ void CGTeleport::postInit() //matches subterranean gates into pairs } //sort by position - std::sort(gatesSplit[0].begin(), gatesSplit[0].end(), boost::bind(&CGObjectInstance::pos, _1) < boost::bind(&CGObjectInstance::pos, _2)); + std::sort(gatesSplit[0].begin(), gatesSplit[0].end(), [](const CGObjectInstance * a, const CGObjectInstance * b) + { + return a->pos < b->pos; + }); for(size_t i = 0; i < gatesSplit[0].size(); i++) { @@ -3978,7 +3980,7 @@ void CGTeleport::postInit() //matches subterranean gates into pairs if(best.first >= 0) //found pair { gates.push_back(std::make_pair(cur->id, gatesSplit[1][best.first]->id)); - gatesSplit[1][best.first] = NULL; + gatesSplit[1][best.first] = nullptr; } else { @@ -4956,7 +4958,7 @@ const CGHeroInstance * CGSeerHut::getHeroToKill(bool allowNull) const { const CGObjectInstance *o = cb->getObjByQuestIdentifier(quest->m13489val); if(allowNull && !o) - return NULL; + return nullptr; assert(o && o->ID == Obj::HERO); return static_cast(o); } @@ -4965,7 +4967,7 @@ const CGCreature * CGSeerHut::getCreatureToKill(bool allowNull) const { const CGObjectInstance *o = cb->getObjByQuestIdentifier(quest->m13489val); if(allowNull && !o) - return NULL; + return nullptr; assert(o && o->ID == Obj::MONSTER); return static_cast(o); } @@ -6080,7 +6082,7 @@ void CGOnceVisitable::blockingDialogAnswered(const CGHeroInstance *hero, ui32 an void CBank::initObj() { index = VLC->objh->bankObjToIndex(this); - bc = NULL; + bc = nullptr; daycounter = 0; multiplier = 1; } @@ -6150,7 +6152,7 @@ void CBank::setPropertyDer (ui8 what, ui32 val) reset (val%100); break; case ObjProperty::BANK_CLEAR_CONFIG: - bc = NULL; + bc = nullptr; break; case ObjProperty::BANK_CLEAR_ARTIFACTS: //remove rewards from Derelict Ship artifacts.clear(); @@ -6210,7 +6212,7 @@ void CBank::setPropertyDer (ui8 what, ui32 val) void CBank::newTurn() const { - if (bc == NULL) + if (bc == nullptr) { if (cb->getDate() == 1) initialize(); //initialize on first day @@ -6415,7 +6417,7 @@ void CBank::battleFinished(const CGHeroInstance *hero, const BattleResult &resul cb->showInfoDialog(&iw); cb->giveCreatures(this, hero, ourArmy, false); } - cb->setObjProperty (id, ObjProperty::BANK_CLEAR_CONFIG, 0); //bc = NULL + cb->setObjProperty (id, ObjProperty::BANK_CLEAR_CONFIG, 0); //bc = nullptr } } @@ -6659,7 +6661,7 @@ void CGMagi::onHeroVisit(const CGHeroInstance * h) const } void CGBoat::initObj() { - hero = NULL; + hero = nullptr; } void CGSirens::initObj() @@ -6804,7 +6806,7 @@ IShipyard::IShipyard(const CGObjectInstance *O) IShipyard * IShipyard::castFrom( CGObjectInstance *obj ) { if(!obj) - return NULL; + return nullptr; if(obj->ID == Obj::TOWN) { @@ -6816,7 +6818,7 @@ IShipyard * IShipyard::castFrom( CGObjectInstance *obj ) } else { - return NULL; + return nullptr; } } @@ -7047,7 +7049,7 @@ void CArmedInstance::randomizeArmy(int type) CArmedInstance::CArmedInstance() { - battle = NULL; + battle = nullptr; } //int CArmedInstance::valOfGlobalBonuses(CSelector selector) const @@ -7294,7 +7296,7 @@ const IMarket * IMarket::castFrom(const CGObjectInstance *obj, bool verbose /*= default: if(verbose) logGlobal->errorStream() << "Cannot cast to IMarket object with ID " << obj->ID; - return NULL; + return nullptr; } } diff --git a/lib/CObjectHandler.h b/lib/CObjectHandler.h index 64212632a..cfa62e209 100644 --- a/lib/CObjectHandler.h +++ b/lib/CObjectHandler.h @@ -81,8 +81,8 @@ public: CQuest(){missionType = MISSION_NONE;}; //default constructor virtual bool checkQuest (const CGHeroInstance * h) const; //determines whether the quest is complete or not - virtual void getVisitText (MetaString &text, std::vector &components, bool isCustom, bool FirstVisit, const CGHeroInstance * h = NULL) const; - virtual void getCompletionText (MetaString &text, std::vector &components, bool isCustom, const CGHeroInstance * h = NULL) const; + virtual void getVisitText (MetaString &text, std::vector &components, bool isCustom, bool FirstVisit, const CGHeroInstance * h = nullptr) const; + virtual void getCompletionText (MetaString &text, std::vector &components, bool isCustom, const CGHeroInstance * h = nullptr) const; virtual void getRolloverText (MetaString &text, bool onHover) const; //hover or quest log entry virtual void completeQuest (const CGHeroInstance * h) const {}; virtual void addReplacements(MetaString &out, const std::string &base) const; @@ -141,7 +141,7 @@ public: enum EGeneratorState {GOOD, BOAT_ALREADY_BUILT, TILE_BLOCKED, NO_WATER}; EGeneratorState state() const; //0 - can buid, 1 - there is already a boat at dest tile, 2 - dest tile is blocked, 3 - no water - void getProblemText(MetaString &out, const CGHeroInstance *visitor = NULL) const; + void getProblemText(MetaString &out, const CGHeroInstance *visitor = nullptr) const; }; class DLL_LINKAGE IShipyard : public IBoatGenerator @@ -395,7 +395,7 @@ public: double getHeroStrength() const; ui64 getTotalStrength() const; TExpType calculateXp(TExpType exp) const; //apply learning skill - ui8 getSpellSchoolLevel(const CSpell * spell, int *outSelectedSchool = NULL) const; //returns level on which given spell would be cast by this hero (0 - none, 1 - basic etc); optionally returns number of selected school by arg - 0 - air magic, 1 - fire magic, 2 - water magic, 3 - earth magic, + ui8 getSpellSchoolLevel(const CSpell * spell, int *outSelectedSchool = nullptr) const; //returns level on which given spell would be cast by this hero (0 - none, 1 - basic etc); optionally returns number of selected school by arg - 0 - air magic, 1 - fire magic, 2 - water magic, 3 - earth magic, bool canCastThisSpell(const CSpell * spell) const; //determines if this hero can cast given spell; takes into account existing spell in spellbook, existing spellbook and artifact bonuses CStackBasicDescriptor calculateNecromancy (const BattleResult &battleResult) const; void showNecromancyDialog(const CStackBasicDescriptor &raisedStack) const; @@ -411,7 +411,7 @@ public: void putArtifact(ArtifactPosition pos, CArtifactInstance *art); void putInBackpack(CArtifactInstance *art); void initExp(); - void initArmy(IArmyDescriptor *dst = NULL); + void initArmy(IArmyDescriptor *dst = nullptr); //void giveArtifact (ui32 aid); void initHeroDefInfo(); void pushPrimSkill(PrimarySkill::PrimarySkill which, int val); @@ -477,8 +477,8 @@ public: void onHeroVisit(const CGHeroInstance * h) const override; void newTurn() const override; void setProperty(ui8 what, ui32 val) override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; private: void heroAcceptsCreatures(const CGHeroInstance *h) const; @@ -495,7 +495,7 @@ public: void onHeroVisit(const CGHeroInstance * h) const override; void initObj() override; bool wasVisited (const CGHeroInstance * h) const override; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; template void serialize(Handler &h, const int version) @@ -533,7 +533,7 @@ public: void onHeroVisit (const CGHeroInstance * h) const override; COPWBonus (BuildingID index, CGTownInstance *TOWN); - COPWBonus (){ID = BuildingID::NONE; town = NULL;}; + COPWBonus (){ID = BuildingID::NONE; town = nullptr;}; template void serialize(Handler &h, const int version) { h & static_cast(*this); @@ -551,7 +551,7 @@ public: void onHeroVisit (const CGHeroInstance * h) const override; CTownBonus (BuildingID index, CGTownInstance *TOWN); - CTownBonus (){ID = BuildingID::NONE; town = NULL;}; + CTownBonus (){ID = BuildingID::NONE; town = nullptr;}; template void serialize(Handler &h, const int version) { h & static_cast(*this); @@ -672,7 +672,7 @@ public: void onHeroVisit(const CGHeroInstance * h) const override; void onHeroLeave(const CGHeroInstance * h) const override; void initObj() override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; protected: void setPropertyDer(ui8 what, ui32 val) override; }; @@ -697,9 +697,9 @@ public: void initObj() override; void onHeroVisit(const CGHeroInstance * h) const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; - void heroLevelUpDone(const CGHeroInstance *hero) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; + void heroLevelUpDone(const CGHeroInstance *hero) const override; template void serialize(Handler &h, const int version) { @@ -756,8 +756,8 @@ public: const std::string & getHoverText() const override; void initObj() override; void newTurn() const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; struct DLL_LINKAGE RestoredCreature // info about merging stacks after battle back into one @@ -810,7 +810,7 @@ public: CQuest * quest; IQuestObject(){quest = new CQuest;}; - virtual void getVisitText (MetaString &text, std::vector &components, bool isCustom, bool FirstVisit, const CGHeroInstance * h = NULL) const; + virtual void getVisitText (MetaString &text, std::vector &components, bool isCustom, bool FirstVisit, const CGHeroInstance * h = nullptr) const; virtual bool checkQuest (const CGHeroInstance * h) const; template void serialize(Handler &h, const int version) @@ -833,14 +833,14 @@ public: const std::string & getHoverText() const override; void newTurn() const override; void onHeroVisit(const CGHeroInstance * h) const override; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; int checkDirection() const; //calculates the region of map where monster is placed void setObjToKill(); //remember creatures / heroes to kill after they are initialized const CGHeroInstance *getHeroToKill(bool allowNull = false) const; const CGCreature *getCreatureToKill(bool allowNull = false) const; void getRolloverText (MetaString &text, bool onHover) const; - void getCompletionText(MetaString &text, std::vector &components, bool isCustom, const CGHeroInstance * h = NULL) const; + void getCompletionText(MetaString &text, std::vector &components, bool isCustom, const CGHeroInstance * h = nullptr) const; void finishQuest (const CGHeroInstance * h, ui32 accept) const; //common for both objects void completeQuest (const CGHeroInstance * h) const; @@ -907,7 +907,7 @@ public: ui8 getPassableness() const; void onHeroVisit(const CGHeroInstance * h) const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; template void serialize(Handler &h, const int version) { @@ -923,8 +923,8 @@ public: std::string message; void onHeroVisit(const CGHeroInstance * h) const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; void pick( const CGHeroInstance * h ) const; void initObj() override; @@ -944,8 +944,8 @@ public: void onHeroVisit(const CGHeroInstance * h) const override; void initObj() override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; void collectRes(PlayerColor player) const; @@ -963,7 +963,7 @@ public: void onHeroVisit(const CGHeroInstance * h) const override; void initObj() override; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; template void serialize(Handler &h, const int version) { @@ -994,8 +994,8 @@ public: ui32 producedQuantity; void onHeroVisit(const CGHeroInstance * h) const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; void flagMine(PlayerColor player) const; void newTurn() const override; @@ -1143,9 +1143,9 @@ public: CGBorderGuard() : IQuestObject(){}; void initObj() override; void onHeroVisit(const CGHeroInstance * h) const override; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; - void getVisitText (MetaString &text, std::vector &components, bool isCustom, bool FirstVisit, const CGHeroInstance * h = NULL) const; + void getVisitText (MetaString &text, std::vector &components, bool isCustom, bool FirstVisit, const CGHeroInstance * h = nullptr) const; void getRolloverText (MetaString &text, bool onHover) const; bool checkQuest (const CGHeroInstance * h) const; @@ -1181,7 +1181,7 @@ public: CGBoat() { - hero = NULL; + hero = nullptr; direction = 4; } template void serialize(Handler &h, const int version) @@ -1201,7 +1201,7 @@ public: void onHeroVisit(const CGHeroInstance * h) const override; const std::string & getHoverText() const override; void initObj() override; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; template void serialize(Handler &h, const int version) { @@ -1226,8 +1226,8 @@ class DLL_LINKAGE CBank : public CArmedInstance void newTurn() const override; bool wasVisited (PlayerColor player) const override; void onHeroVisit(const CGHeroInstance * h) const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; template void serialize(Handler &h, const int version) { @@ -1246,7 +1246,7 @@ public: const std::string & getHoverText() const override; void newTurn() const override {}; //empty, no reset void onHeroVisit(const CGHeroInstance * h) const override; - void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const OVERRIDE; + void battleFinished(const CGHeroInstance *hero, const BattleResult &result) const override; template void serialize(Handler &h, const int version) { @@ -1284,7 +1284,7 @@ class DLL_LINKAGE CCartographer : public CPlayersVisited ///behaviour varies depending on surface and floor public: void onHeroVisit(const CGHeroInstance * h) const override; - void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const OVERRIDE; + void blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const override; template void serialize(Handler &h, const int version) { diff --git a/lib/CObstacleInstance.h b/lib/CObstacleInstance.h index f156c07d4..d06f61950 100644 --- a/lib/CObstacleInstance.h +++ b/lib/CObstacleInstance.h @@ -56,7 +56,7 @@ struct DLL_LINKAGE CObstacleInstance struct DLL_LINKAGE MoatObstacle : CObstacleInstance { - virtual std::vector getAffectedTiles() const OVERRIDE; //for special effects (not blocking) + virtual std::vector getAffectedTiles() const override; //for special effects (not blocking) }; struct DLL_LINKAGE SpellCreatedObstacle : CObstacleInstance @@ -69,10 +69,10 @@ struct DLL_LINKAGE SpellCreatedObstacle : CObstacleInstance SpellCreatedObstacle(); - virtual std::vector getAffectedTiles() const OVERRIDE; //for special effects (not blocking) - virtual bool visibleForSide(ui8 side, bool hasNativeStack) const OVERRIDE; //0 attacker + virtual std::vector getAffectedTiles() const override; //for special effects (not blocking) + virtual bool visibleForSide(ui8 side, bool hasNativeStack) const override; //0 attacker - virtual void battleTurnPassed() OVERRIDE; + virtual void battleTurnPassed() override; template void serialize(Handler &h, const int version) { diff --git a/lib/CRandomGenerator.h b/lib/CRandomGenerator.h index 81c540755..f13c2b9fe 100644 --- a/lib/CRandomGenerator.h +++ b/lib/CRandomGenerator.h @@ -11,28 +11,11 @@ #pragma once -#include -#include - -#if BOOST_VERSION >= 104700 -#include -#include -#else -#include -#include -#endif -#include - -typedef boost::mt19937 TGenerator; -#if BOOST_VERSION >= 104700 -typedef boost::random::uniform_int_distribution TIntDist; -typedef boost::random::uniform_real_distribution TRealDist; -#else -typedef boost::uniform_int TIntDist; -typedef boost::uniform_real TRealDist; -#endif -typedef boost::variate_generator TRandI; -typedef boost::variate_generator TRand; +typedef std::mt19937 TGenerator; +typedef std::uniform_int_distribution TIntDist; +typedef std::uniform_real_distribution TRealDist; +typedef std::function TRandI; +typedef std::function TRand; /// The random generator randomly generates integers and real numbers("doubles") between /// a given range. This is a header only class and mainly a wrapper for @@ -55,8 +38,7 @@ public: /// e.g.: auto a = gen.getRangeI(0,10); a(); a(); a(); TRandI getRangeI(int lower, int upper) { - TIntDist range(lower, upper); - return TRandI(gen, range); + return std::bind(TIntDist(lower, upper), gen); } int getInteger(int lower, int upper) @@ -68,8 +50,7 @@ public: /// e.g.: auto a = gen.getRangeI(0,10); a(); a(); a(); TRand getRange(double lower, double upper) { - TRealDist range(lower, upper); - return TRand(gen, range); + return std::bind(TRealDist(lower, upper), gen); } double getDouble(double lower, double upper) diff --git a/lib/CSpellHandler.h b/lib/CSpellHandler.h index 536a14562..e5ba0227d 100644 --- a/lib/CSpellHandler.h +++ b/lib/CSpellHandler.h @@ -48,7 +48,7 @@ public: CSpell(); ~CSpell(); - std::vector rangeInHexes(BattleHex centralHex, ui8 schoolLvl, ui8 side, bool *outDroppedHexes = NULL ) const; //convert range to specific hexes; last optional out parameter is set to true, if spell would cover unavailable hexes (that are not included in ret) + std::vector rangeInHexes(BattleHex centralHex, ui8 schoolLvl, ui8 side, bool *outDroppedHexes = nullptr ) const; //convert range to specific hexes; last optional out parameter is set to true, if spell would cover unavailable hexes (that are not included in ret) si16 mainEffectAnim; //main spell effect animation, in AC format (or -1 when none) ETargetType getTargetType() const; diff --git a/lib/CThreadHelper.cpp b/lib/CThreadHelper.cpp index c250f1b9f..f09b79f47 100644 --- a/lib/CThreadHelper.cpp +++ b/lib/CThreadHelper.cpp @@ -16,7 +16,7 @@ * */ -CThreadHelper::CThreadHelper(std::vector > *Tasks, int Threads) +CThreadHelper::CThreadHelper(std::vector > *Tasks, int Threads) { currentTask = 0; amount = Tasks->size(); tasks = Tasks; @@ -26,7 +26,7 @@ void CThreadHelper::run() { boost::thread_group grupa; for(int i=0;i Task; +typedef std::function Task; /// Can assign CPU work to other threads/cores class DLL_LINKAGE CThreadHelper @@ -25,11 +25,11 @@ class DLL_LINKAGE CThreadHelper void processTasks(); public: - CThreadHelper(std::vector > *Tasks, int Threads); + CThreadHelper(std::vector > *Tasks, int Threads); void run(); }; -template inline void setData(T * data, boost::function func) +template inline void setData(T * data, std::function func) { *data = func(); } @@ -37,16 +37,16 @@ template inline void setData(T * data, boost::function func) void DLL_LINKAGE setThreadName(const std::string &name); #define GET_DATA(TYPE,DESTINATION,FUNCTION_TO_GET) \ - (boost::bind(&setData,&DESTINATION,FUNCTION_TO_GET)) + (std::bind(&setData,&DESTINATION,FUNCTION_TO_GET)) #define GET_SURFACE(SUR_DESTINATION, SUR_NAME) \ (GET_DATA \ (SDL_Surface*,SUR_DESTINATION,\ - boost::function(boost::bind(&BitmapHandler::loadBitmap,SUR_NAME,true)))) + std::function(std::bind(&BitmapHandler::loadBitmap,SUR_NAME,true)))) #define GET_DEF(DESTINATION, DEF_NAME) \ (GET_DATA \ (CDefHandler*,DESTINATION,\ - boost::function(boost::bind(CDefHandler::giveDef,DEF_NAME)))) + std::function(std::bind(CDefHandler::giveDef,DEF_NAME)))) #define GET_DEF_ESS(DESTINATION, DEF_NAME) \ (GET_DATA \ (CDefEssential*,DESTINATION,\ - boost::function(boost::bind(CDefHandler::giveDefEss,DEF_NAME)))) + std::function(std::bind(CDefHandler::giveDefEss,DEF_NAME)))) diff --git a/lib/Connection.cpp b/lib/Connection.cpp index 47170c4f3..007988c96 100644 --- a/lib/Connection.cpp +++ b/lib/Connection.cpp @@ -60,7 +60,7 @@ void CConnection::init() wmx = new boost::mutex; rmx = new boost::mutex; - handler = NULL; + handler = nullptr; receivedStop = sendStop = false; static int cid = 1; connectionID = cid++; @@ -199,7 +199,7 @@ void CConnection::close() { socket->close(); delete socket; - socket = NULL; + socket = nullptr; } } @@ -220,7 +220,7 @@ void CConnection::reportState(CLogger * out) CPack * CConnection::retreivePack() { - CPack *ret = NULL; + CPack *ret = nullptr; boost::unique_lock lock(*rmx); logNetwork->traceStream() << "Listening... "; *this >> ret; diff --git a/lib/Connection.h b/lib/Connection.h index 9a01c2f09..2b09325dd 100644 --- a/lib/Connection.h +++ b/lib/Connection.h @@ -91,19 +91,19 @@ class DLL_LINKAGE CTypeList public: CTypeList(); ui16 registerType(const std::type_info *type); - template ui16 registerType(const T * t = NULL) + template ui16 registerType(const T * t = nullptr) { return registerType(getTypeInfo(t)); } ui16 getTypeID(const std::type_info *type); - template ui16 getTypeID(const T * t = NULL) + template ui16 getTypeID(const T * t = nullptr) { return getTypeID(getTypeInfo(t)); } - template const std::type_info * getTypeInfo(const T * t = NULL) + template const std::type_info * getTypeInfo(const T * t = nullptr) { if(t) return &typeid(*t); @@ -351,7 +351,7 @@ public: template const VectorisedObjectInfo *getVectorisedTypeInfo() { - const std::type_info *myType = NULL; + const std::type_info *myType = nullptr; // // if(boost::is_base_of::value) //ugly workaround to support also types derived from CGObjectInstance -> if we encounter one, treat it aas CGObj.. // myType = &typeid(CGObjectInstance); @@ -360,7 +360,7 @@ public: TTypeVecMap::iterator i = vectors.find(myType); if(i == vectors.end()) - return NULL; + return nullptr; else { assert(!i->second.empty()); @@ -374,7 +374,7 @@ public: T* getVectorItemFromId(const VectorisedObjectInfo &oInfo, U id) const { /* if(id < 0) - return NULL;*/ + return nullptr;*/ si32 idAsNumber = idToNumber(id); assert(oInfo.vector); @@ -557,7 +557,7 @@ public: delete iter->second; } - template void registerType(const T * t=NULL) + template void registerType(const T * t=nullptr) { ui16 ID = typeList.registerType(t); savers[ID] = new CPointerSaver,T>; @@ -593,11 +593,11 @@ public: template void savePointer(const T &data) { - //write if pointer is not NULL - ui8 hlp = (data!=NULL); + //write if pointer is not nullptr + ui8 hlp = (data!=nullptr); *this << hlp; - //if pointer is NULL then we don't need anything more... + //if pointer is nullptr then we don't need anything more... if(!hlp) return; @@ -873,7 +873,7 @@ public: delete iter->second; } - template void registerType(const T * t=NULL) + template void registerType(const T * t=nullptr) { ui16 ID = typeList.registerType(t); loaders[ID] = new CPointerLoader,T>; @@ -980,7 +980,7 @@ public: *this >> hlp; if(!hlp) { - data = NULL; + data = nullptr; return; } @@ -1374,7 +1374,7 @@ public: for(iter = apps.begin(); iter != apps.end(); iter++) delete iter->second; } - template void registerType(const U * t=NULL) + template void registerType(const U * t=nullptr) { ui16 ID = typeList.registerType(t); apps[ID] = T::getApplier(t); diff --git a/lib/ConstTransitivePtr.h b/lib/ConstTransitivePtr.h index b1347bf35..7391c3f9a 100644 --- a/lib/ConstTransitivePtr.h +++ b/lib/ConstTransitivePtr.h @@ -20,7 +20,7 @@ class ConstTransitivePtr : ptr(const_cast(Ptr)) {} public: - ConstTransitivePtr(T *Ptr = NULL) + ConstTransitivePtr(T *Ptr = nullptr) : ptr(Ptr) {} @@ -64,7 +64,7 @@ public: void dellNull() { delete ptr; - ptr = NULL; + ptr = nullptr; } template void serialize(Handler &h, const int version) diff --git a/lib/HeroBonus.cpp b/lib/HeroBonus.cpp index 442f3a4fb..d699b00ec 100644 --- a/lib/HeroBonus.cpp +++ b/lib/HeroBonus.cpp @@ -187,7 +187,7 @@ const Bonus * BonusList::getFirst(const CSelector &selector) const if(selector(b)) return &*b; } - return NULL; + return nullptr; } Bonus * BonusList::getFirst(const CSelector &select) @@ -198,7 +198,7 @@ Bonus * BonusList::getFirst(const CSelector &select) if(select(b)) return &*b; } - return NULL; + return nullptr; } void BonusList::getModifiersWDescr(TModDescr &out) const @@ -248,7 +248,7 @@ int BonusList::valOfBonuses(const CSelector &select) const // void BonusList::limit(const CBonusSystemNode &node) // { -// remove_if(boost::bind(&CBonusSystemNode::isLimitedOnUs, boost::ref(node), _1)); +// remove_if(std::bind(&CBonusSystemNode::isLimitedOnUs, std::ref(node), _1)); // } @@ -329,7 +329,7 @@ int IBonusBearer::valOfBonuses(Bonus::BonusType type, int subtype /*= -1*/) cons int IBonusBearer::valOfBonuses(const CSelector &selector, const std::string &cachingStr) const { CSelector limit = 0; - TBonusListPtr hlp = getAllBonuses(selector, limit, NULL, cachingStr); + TBonusListPtr hlp = getAllBonuses(selector, limit, nullptr, cachingStr); return hlp->totalValue(); } bool IBonusBearer::hasBonus(const CSelector &selector, const std::string &cachingStr /*= ""*/) const @@ -374,12 +374,12 @@ int IBonusBearer::getBonusesCount(const CSelector &selector, const std::string & const TBonusListPtr IBonusBearer::getBonuses(const CSelector &selector, const std::string &cachingStr /*= ""*/) const { - return getAllBonuses(selector, 0, NULL, cachingStr); + return getAllBonuses(selector, 0, nullptr, cachingStr); } const TBonusListPtr IBonusBearer::getBonuses(const CSelector &selector, const CSelector &limit, const std::string &cachingStr /*= ""*/) const { - return getAllBonuses(selector, limit, NULL, cachingStr); + return getAllBonuses(selector, limit, nullptr, cachingStr); } bool IBonusBearer::hasBonusFrom(Bonus::BonusSource source, ui32 sourceID) const @@ -512,7 +512,7 @@ const Bonus * IBonusBearer::getEffect(ui16 id, int turn /*= 0*/) const return &(*it); } } - return NULL; + return nullptr; } ui8 IBonusBearer::howManyEffectsSet(ui16 id) const @@ -558,7 +558,7 @@ Bonus * CBonusSystemNode::getBonusLocalFirst(const CSelector &selector) return ret; } - return NULL; + return nullptr; } const Bonus * CBonusSystemNode::getBonusLocalFirst( const CSelector &selector ) const @@ -604,7 +604,7 @@ void CBonusSystemNode::getAllBonusesRec(BonusList &out) const bonuses.getAllBonuses(out); } -const TBonusListPtr CBonusSystemNode::getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= NULL*/, const std::string &cachingStr /*= ""*/) const +const TBonusListPtr CBonusSystemNode::getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= nullptr*/, const std::string &cachingStr /*= ""*/) const { bool limitOnUs = (!root || root == this); //caching won't work when we want to limit bonuses against an external node if (CBonusSystemNode::cachingEnabled && limitOnUs) @@ -657,7 +657,7 @@ const TBonusListPtr CBonusSystemNode::getAllBonuses(const CSelector &selector, c } } -const TBonusListPtr CBonusSystemNode::getAllBonusesWithoutCaching(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= NULL*/) const +const TBonusListPtr CBonusSystemNode::getAllBonusesWithoutCaching(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root /*= nullptr*/) const { auto ret = make_shared(); @@ -1099,7 +1099,7 @@ const CSpell * Bonus::sourceSpell() const { if(source == SPELL_EFFECT) return SpellID(sid).toSpell(); - return NULL; + return nullptr; } std::string Bonus::Description() const @@ -1250,7 +1250,7 @@ const CStack * retreiveStackBattle(const CBonusSystemNode *node) case CBonusSystemNode::STACK_BATTLE: return static_cast(node); default: - return NULL; + return nullptr; } } @@ -1263,7 +1263,7 @@ const CStackInstance * retreiveStackInstance(const CBonusSystemNode *node) case CBonusSystemNode::STACK_BATTLE: return (static_cast(node))->base; default: - return NULL; + return nullptr; } } @@ -1277,7 +1277,7 @@ const CCreature * retrieveCreature(const CBonusSystemNode *node) const CStackInstance *csi = retreiveStackInstance(node); if(csi) return csi->type; - return NULL; + return nullptr; } } @@ -1360,7 +1360,7 @@ CCreatureTypeLimiter::CCreatureTypeLimiter(const CCreature &Creature, bool Inclu CCreatureTypeLimiter::CCreatureTypeLimiter() { - creature = NULL; + creature = nullptr; includeUpgrades = false; } @@ -1410,7 +1410,7 @@ bool IPropagator::shouldBeAttached(CBonusSystemNode *dest) // CBonusSystemNode * CPropagatorNodeType::getDestNode(CBonusSystemNode *source, CBonusSystemNode *redParent, CBonusSystemNode *redChild) // { -// return NULL; +// return nullptr; // } CPropagatorNodeType::CPropagatorNodeType() diff --git a/lib/HeroBonus.h b/lib/HeroBonus.h index cd55cb8d3..1cb6070e7 100644 --- a/lib/HeroBonus.h +++ b/lib/HeroBonus.h @@ -27,7 +27,7 @@ typedef std::vector > TModDescr; //modifiers values a typedef std::set TNodes; typedef std::set TCNodes; typedef std::vector TNodesVector; -typedef boost::function CSelector; +typedef std::function CSelector; @@ -373,7 +373,7 @@ public: void push_back(Bonus* const &x); std::vector::iterator erase (const int position); void clear(); - void resize(std::vector::size_type sz, Bonus* c = NULL ); + void resize(std::vector::size_type sz, Bonus* c = nullptr ); void insert(std::vector::iterator position, std::vector::size_type n, Bonus* const &x); Bonus *const &operator[] (std::vector::size_type n) { return bonuses[n]; } Bonus *const &operator[] (std::vector::size_type n) const { return bonuses[n]; } @@ -474,7 +474,7 @@ public: CPropagatorNodeType(); CPropagatorNodeType(int NodeType); bool shouldBeAttached(CBonusSystemNode *dest); - //CBonusSystemNode *getDestNode(CBonusSystemNode *source, CBonusSystemNode *redParent, CBonusSystemNode *redChild) OVERRIDE; + //CBonusSystemNode *getDestNode(CBonusSystemNode *source, CBonusSystemNode *redParent, CBonusSystemNode *redChild) override; template void serialize(Handler &h, const int version) { @@ -508,9 +508,9 @@ class DLL_LINKAGE IBonusBearer public: //new bonusing node interface // * selector is predicate that tests if HeroBonus matches our criteria - // * root is node on which call was made (NULL will be replaced with this) + // * root is node on which call was made (nullptr will be replaced with this) //interface - virtual const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = NULL, const std::string &cachingStr = "") const = 0; + virtual const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = nullptr, const std::string &cachingStr = "") const = 0; void getModifiersWDescr(TModDescr &out, const CSelector &selector, const std::string &cachingStr = "") const; //out: pairs int getBonusesCount(const CSelector &selector, const std::string &cachingStr = "") const; int valOfBonuses(const CSelector &selector, const std::string &cachingStr = "") const; @@ -577,7 +577,7 @@ private: void getBonusesRec(BonusList &out, const CSelector &selector, const CSelector &limit) const; void getAllBonusesRec(BonusList &out) const; - const TBonusListPtr getAllBonusesWithoutCaching(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = NULL) const; + const TBonusListPtr getAllBonusesWithoutCaching(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = nullptr) const; public: @@ -586,7 +586,7 @@ public: void limitBonuses(const BonusList &allBonuses, BonusList &out) const; //out will bo populed with bonuses that are not limited here TBonusListPtr limitBonuses(const BonusList &allBonuses) const; //same as above, returns out by val for convienence - const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = NULL, const std::string &cachingStr = "") const; + const TBonusListPtr getAllBonuses(const CSelector &selector, const CSelector &limit, const CBonusSystemNode *root = nullptr, const std::string &cachingStr = "") const; void getParents(TCNodes &out) const; //retrieves list of parent nodes (nodes to inherit bonuses from), const Bonus *getBonusLocalFirst(const CSelector &selector) const; @@ -651,7 +651,7 @@ public: namespace NBonus { - //set of methods that may be safely called with NULL objs + //set of methods that may be safely called with nullptr objs DLL_LINKAGE int valOf(const CBonusSystemNode *obj, Bonus::BonusType type, int subtype = -1); //subtype -> subtype of bonus, if -1 then any DLL_LINKAGE bool hasOfType(const CBonusSystemNode *obj, Bonus::BonusType type, int subtype = -1);//determines if hero has a bonus of given type (and optionally subtype) //DLL_LINKAGE const HeroBonus * get(const CBonusSystemNode *obj, int from, int id ); @@ -796,7 +796,7 @@ class DLL_LINKAGE LimiterList : public ILimiter std::vector limiters; public: - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; void add(TLimiterPtr limiter); }; @@ -810,7 +810,7 @@ public: CCreatureTypeLimiter(const CCreature &Creature, bool IncludeUpgrades = true); void setCreature (CreatureID id); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { @@ -829,7 +829,7 @@ public: HasAnotherBonusLimiter(Bonus::BonusType bonus = Bonus::NONE); HasAnotherBonusLimiter(Bonus::BonusType bonus, TBonusSubtype _subtype); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { @@ -845,7 +845,7 @@ public: CreatureNativeTerrainLimiter(); CreatureNativeTerrainLimiter(int TerrainType); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { @@ -861,7 +861,7 @@ public: CreatureFactionLimiter(); CreatureFactionLimiter(int TerrainType); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { @@ -877,7 +877,7 @@ public: CreatureAlignmentLimiter(); CreatureAlignmentLimiter(si8 Alignment); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { @@ -893,7 +893,7 @@ public: StackOwnerLimiter(); StackOwnerLimiter(PlayerColor Owner); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { @@ -909,7 +909,7 @@ public: RankRangeLimiter(); RankRangeLimiter(ui8 Min, ui8 Max = 255); - int limit(const BonusLimitationContext &context) const OVERRIDE; + int limit(const BonusLimitationContext &context) const override; template void serialize(Handler &h, const int version) { diff --git a/lib/IGameCallback.cpp b/lib/IGameCallback.cpp index e0a8c3c19..849351c96 100644 --- a/lib/IGameCallback.cpp +++ b/lib/IGameCallback.cpp @@ -1,8 +1,6 @@ #include "StdInc.h" #include "IGameCallback.h" -#include - #include "CGameState.h" #include "mapping/CMap.h" #include "CObjectHandler.h" @@ -38,7 +36,7 @@ #define ERROR_RET_IF(cond, txt) do {if(cond){logGlobal->errorStream() << BOOST_CURRENT_FUNCTION << ": " << txt; return;}} while(0) #define ERROR_RET_VAL_IF(cond, txt, retVal) do {if(cond){logGlobal->errorStream() << BOOST_CURRENT_FUNCTION << ": " << txt; return retVal;}} while(0) -extern boost::rand48 ran; +extern std::minstd_rand ran; CGameState * CPrivilagedInfoCallback::gameState () { @@ -63,7 +61,7 @@ int CGameInfoCallback::getResource(PlayerColor Player, Res::ERes which) const const CGHeroInstance* CGameInfoCallback::getSelectedHero( PlayerColor Player ) const { const PlayerState *p = getPlayer(Player); - ERROR_RET_VAL_IF(!p, "No player info!", NULL); + ERROR_RET_VAL_IF(!p, "No player info!", nullptr); return getHero(p->currentSelection); } @@ -88,7 +86,7 @@ void CPrivilagedInfoCallback::getTilesInRange( boost::unordered_setgetPlayerTeam(*player); + const TeamState * team = !player ? nullptr : gs->getPlayerTeam(*player); for (int xd = std::max(pos.x - radious , 0); xd <= std::min(pos.x + radious, gs->map->width - 1); xd++) { for (int yd = std::max(pos.y - radious, 0); yd <= std::min(pos.y + radious, gs->map->height - 1); yd++) @@ -259,27 +257,27 @@ template DLL_LINKAGE void CPrivilagedInfoCallback::saveCommonState(CS TerrainTile * CNonConstInfoCallback::getTile( int3 pos ) { if(!gs->map->isInTheMap(pos)) - return NULL; + return nullptr; return &gs->map->getTile(pos); } const PlayerState * CGameInfoCallback::getPlayer(PlayerColor color, bool verbose) const { - ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!hasAccess(color), verbose, "Cannot access player " << color << "info!", NULL); - ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!vstd::contains(gs->players,color), verbose, "Cannot find player " << color << "info!", NULL); + ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!hasAccess(color), verbose, "Cannot access player " << color << "info!", nullptr); + ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!vstd::contains(gs->players,color), verbose, "Cannot find player " << color << "info!", nullptr); return &gs->players[color]; } const CTown * CGameInfoCallback::getNativeTown(PlayerColor color) const { const PlayerSettings *ps = getPlayerSettings(color); - ERROR_RET_VAL_IF(!ps, "There is no such player!", NULL); + ERROR_RET_VAL_IF(!ps, "There is no such player!", nullptr); return VLC->townh->factions[ps->castle]->town; } const CGObjectInstance * CGameInfoCallback::getObjByQuestIdentifier(int identifier) const { - ERROR_RET_VAL_IF(!vstd::contains(gs->map->questIdentifierToId, identifier), "There is no object with such quest identifier!", NULL); + ERROR_RET_VAL_IF(!vstd::contains(gs->map->questIdentifierToId, identifier), "There is no object with such quest identifier!", nullptr); return getObj(gs->map->questIdentifierToId[identifier]); } @@ -294,7 +292,7 @@ const CGObjectInstance* CGameInfoCallback::getObj(ObjectInstanceID objid, bool v { if(verbose) logGlobal->errorStream() << "Cannot get object with id " << oid; - return NULL; + return nullptr; } const CGObjectInstance *ret = gs->map->objects[oid]; @@ -302,14 +300,14 @@ const CGObjectInstance* CGameInfoCallback::getObj(ObjectInstanceID objid, bool v { if(verbose) logGlobal->errorStream() << "Cannot get object with id " << oid << ". Object was removed."; - return NULL; + return nullptr; } if(!isVisible(ret, player)) { if(verbose) logGlobal->errorStream() << "Cannot get object with id " << oid << ". Object is not visible."; - return NULL; + return nullptr; } return ret; @@ -321,7 +319,7 @@ const CGHeroInstance* CGameInfoCallback::getHero(ObjectInstanceID objid) const if(obj) return dynamic_cast(obj); else - return NULL; + return nullptr; } const CGTownInstance* CGameInfoCallback::getTown(ObjectInstanceID objid) const { @@ -329,7 +327,7 @@ const CGTownInstance* CGameInfoCallback::getTown(ObjectInstanceID objid) const if(obj) return dynamic_cast(obj); else - return NULL; + return nullptr; } void CGameInfoCallback::getUpgradeInfo(const CArmedInstance *obj, SlotID stackPos, UpgradeInfo &out) const @@ -371,7 +369,7 @@ int CGameInfoCallback::estimateSpellDamage(const CSpell * sp, const CGHeroInstan { if (hero) //but we see hero's spellbook return gs->curB->calculateSpellDmg( - sp, hero, NULL, hero->getSpellSchoolLevel(sp), hero->getPrimSkillLevel(PrimarySkill::SPELL_POWER)); + sp, hero, nullptr, hero->getSpellSchoolLevel(sp), hero->getPrimSkillLevel(PrimarySkill::SPELL_POWER)); else return 0; //mage guild } @@ -379,7 +377,7 @@ int CGameInfoCallback::estimateSpellDamage(const CSpell * sp, const CGHeroInstan //const CGHeroInstance * ourHero = gs->curB->heroes[0]->tempOwner == player ? gs->curB->heroes[0] : gs->curB->heroes[1]; const CGHeroInstance * ourHero = hero; return gs->curB->calculateSpellDmg( - sp, ourHero, NULL, ourHero->getSpellSchoolLevel(sp), ourHero->getPrimSkillLevel(PrimarySkill::SPELL_POWER)); + sp, ourHero, nullptr, ourHero->getSpellSchoolLevel(sp), ourHero->getPrimSkillLevel(PrimarySkill::SPELL_POWER)); } void CGameInfoCallback::getThievesGuildInfo(SThievesGuildInfo & thi, const CGObjectInstance * obj) @@ -493,7 +491,7 @@ bool CGameInfoCallback::isVisible(const CGObjectInstance *obj) const // if() // const CArmedInstance *armi = dynamic_cast(obj); // if(!armi) -// return NULL; +// return nullptr; // else // return armi; // } @@ -559,7 +557,7 @@ std::vector CGameInfoCallback::getAvailableHeroes(const const TerrainTile * CGameInfoCallback::getTile( int3 tile, bool verbose) const { - ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!isVisible(tile), verbose, tile << " is not visible!", NULL); + ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!isVisible(tile), verbose, tile << " is not visible!", nullptr); //boost::shared_lock lock(*gs->mx); return &gs->map->getTile(tile); @@ -858,7 +856,7 @@ const CGHeroInstance* CPlayerSpecificInfoCallback::getHeroBySerial(int serialId, { ASSERT_IF_CALLED_WITH_PLAYER const PlayerState *p = getPlayer(*player); - ERROR_RET_VAL_IF(!p, "No player info", NULL); + ERROR_RET_VAL_IF(!p, "No player info", nullptr); if (!includeGarrisoned) { @@ -866,7 +864,7 @@ const CGHeroInstance* CPlayerSpecificInfoCallback::getHeroBySerial(int serialId, if(p->heroes[i]->inTownGarrison) serialId++; } - ERROR_RET_VAL_IF(serialId < 0 || serialId >= p->heroes.size(), "No player info", NULL); + ERROR_RET_VAL_IF(serialId < 0 || serialId >= p->heroes.size(), "No player info", nullptr); return p->heroes[serialId]; } @@ -874,8 +872,8 @@ const CGTownInstance* CPlayerSpecificInfoCallback::getTownBySerial(int serialId) { ASSERT_IF_CALLED_WITH_PLAYER const PlayerState *p = getPlayer(*player); - ERROR_RET_VAL_IF(!p, "No player info", NULL); - ERROR_RET_VAL_IF(serialId < 0 || serialId >= p->towns.size(), "No player info", NULL); + ERROR_RET_VAL_IF(!p, "No player info", nullptr); + ERROR_RET_VAL_IF(serialId < 0 || serialId >= p->towns.size(), "No player info", nullptr); return p->towns[serialId]; } @@ -930,9 +928,9 @@ CGObjectInstance * CNonConstInfoCallback::getObjInstance( ObjectInstanceID oid ) const TeamState * CGameInfoCallback::getTeam( TeamID teamID ) const { - ERROR_RET_VAL_IF(!vstd::contains(gs->teams, teamID), "Cannot find info for team " << teamID, NULL); + ERROR_RET_VAL_IF(!vstd::contains(gs->teams, teamID), "Cannot find info for team " << teamID, nullptr); const TeamState *ret = &gs->teams[teamID]; - ERROR_RET_VAL_IF(!!player && !vstd::contains(ret->players, *player), "Illegal attempt to access team data!", NULL); + ERROR_RET_VAL_IF(!!player && !vstd::contains(ret->players, *player), "Illegal attempt to access team data!", nullptr); return ret; } @@ -941,7 +939,7 @@ const TeamState * CGameInfoCallback::getPlayerTeam( PlayerColor color ) const const PlayerState * ps = getPlayer(color); if (ps) return getTeam(ps->team); - return NULL; + return nullptr; } const CGHeroInstance* CGameInfoCallback::getHeroWithSubid( int subid ) const @@ -950,7 +948,7 @@ const CGHeroInstance* CGameInfoCallback::getHeroWithSubid( int subid ) const if(h->subID == subid) return h; - return NULL; + return nullptr; } PlayerColor CGameInfoCallback::getLocalPlayer() const diff --git a/lib/IGameCallback.h b/lib/IGameCallback.h index 74bbc9c00..7c26de39e 100644 --- a/lib/IGameCallback.h +++ b/lib/IGameCallback.h @@ -102,7 +102,7 @@ public: bool getHeroInfo(const CGObjectInstance *hero, InfoAboutHero &dest) const; int getSpellCost(const CSpell * sp, const CGHeroInstance * caster) const; //when called during battle, takes into account creatures' spell cost reduction int estimateSpellDamage(const CSpell * sp, const CGHeroInstance * hero) const; //estimates damage of given spell; returns 0 if spell causes no dmg - const CGHeroInstance* getSelectedHero(PlayerColor player) const; //NULL if no hero is selected + const CGHeroInstance* getSelectedHero(PlayerColor player) const; //nullptr if no hero is selected const CGHeroInstance* getSelectedHero() const; //of current (active) player const CArtifactInstance * getArtInstance(ArtifactInstanceID aid) const; const CGObjectInstance * getObjInstance(ObjectInstanceID oid) const; @@ -114,7 +114,7 @@ public: std::vector getFlaggableObjects(int3 pos) const; std::vector getObjDescriptions(int3 pos)const; //returns descriptions of objects at pos in order from the lowest to the highest PlayerColor getOwner(ObjectInstanceID heroID) const; - const CGObjectInstance *getObjByQuestIdentifier(int identifier) const; //NULL if object has been removed (eg. killed) + const CGObjectInstance *getObjByQuestIdentifier(int identifier) const; //nullptr if object has been removed (eg. killed) //map int3 guardingCreaturePosition (int3 pos) const; @@ -249,7 +249,7 @@ public: virtual void showCompInfo(ShowInInfobox * comp)=0; virtual void heroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero)=0; virtual void stopHeroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero)=0; - virtual void startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank = false, const CGTownInstance *town = NULL)=0; //use hero=NULL for no hero + virtual void startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank = false, const CGTownInstance *town = nullptr)=0; //use hero=nullptr for no hero virtual void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, bool creatureBank = false)=0; //if any of armies is hero, hero will be used virtual void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, bool creatureBank = false)=0; //if any of armies is hero, hero will be used, visitable tile of second obj is place of battle virtual void setAmount(ObjectInstanceID objid, ui32 val)=0; diff --git a/lib/IGameEventsReceiver.h b/lib/IGameEventsReceiver.h index cf4ec79f1..a5b0e926d 100644 --- a/lib/IGameEventsReceiver.h +++ b/lib/IGameEventsReceiver.h @@ -117,7 +117,7 @@ public: virtual void tileHidden(const boost::unordered_set &pos){}; virtual void tileRevealed(const boost::unordered_set &pos){}; virtual void newObject(const CGObjectInstance * obj){}; //eg. ship built in shipyard - virtual void availableArtifactsChanged(const CGBlackMarket *bm = NULL){}; //bm may be NULL, then artifacts are changed in the global pool (used by merchants in towns) + virtual void availableArtifactsChanged(const CGBlackMarket *bm = nullptr){}; //bm may be nullptr, then artifacts are changed in the global pool (used by merchants in towns) virtual void centerView (int3 pos, int focusTime){}; virtual void availableCreaturesChanged(const CGDwelling *town){}; virtual void heroBonusChanged(const CGHeroInstance *hero, const Bonus &bonus, bool gain){};//if gain hero received bonus, else he lost it diff --git a/lib/JsonNode.cpp b/lib/JsonNode.cpp index 9fd9c4a7a..8812cb5e8 100644 --- a/lib/JsonNode.cpp +++ b/lib/JsonNode.cpp @@ -140,7 +140,7 @@ void JsonNode::setType(JsonType Type) if (type == Type) return; - //Reset node to NULL + //Reset node to nullptr if (Type != DATA_NULL) setType(DATA_NULL); diff --git a/lib/JsonNode.h b/lib/JsonNode.h index af4bd5dee..4a4b04ed9 100644 --- a/lib/JsonNode.h +++ b/lib/JsonNode.h @@ -68,7 +68,7 @@ public: void setMeta(std::string metadata, bool recursive = true); - /// Convert node to another type. Converting to NULL will clear all data + /// Convert node to another type. Converting to nullptr will clear all data void setType(JsonType Type); JsonType getType() const; diff --git a/lib/NetPacks.h b/lib/NetPacks.h index 37ec2af72..18f68ddb9 100644 --- a/lib/NetPacks.h +++ b/lib/NetPacks.h @@ -71,7 +71,7 @@ struct CPackForServer : public CPack CPackForServer() { type = 2; - c = NULL; + c = nullptr; player = PlayerColor::NEUTRAL; }; @@ -2269,7 +2269,7 @@ struct SelectMap : public CPregamePackToPropagate } SelectMap() { - mapInfo = NULL; + mapInfo = nullptr; free = true; } ~SelectMap() @@ -2301,7 +2301,7 @@ struct UpdateStartOptions : public CPregamePackToPropagate } UpdateStartOptions() { - options = NULL; + options = nullptr; free = true; } ~UpdateStartOptions() diff --git a/lib/NetPacksLib.cpp b/lib/NetPacksLib.cpp index a90a14137..d3ab5b457 100644 --- a/lib/NetPacksLib.cpp +++ b/lib/NetPacksLib.cpp @@ -144,7 +144,7 @@ DLL_LINKAGE void HeroVisitCastle::applyGs( CGameState *gs ) if(start()) t->setVisitingHero(h); else - t->setVisitingHero(NULL); + t->setVisitingHero(nullptr); } DLL_LINKAGE void ChangeSpells::applyGs( CGameState *gs ) @@ -217,7 +217,7 @@ DLL_LINKAGE void SetAvailableHeroes::applyGs( CGameState *gs ) DLL_LINKAGE void GiveBonus::applyGs( CGameState *gs ) { - CBonusSystemNode *cbsn = NULL; + CBonusSystemNode *cbsn = nullptr; switch(who) { case HERO: @@ -316,10 +316,10 @@ DLL_LINKAGE void RemoveObject::applyGs( CGameState *gs ) if(h->visitedTown) { if(h->inTownGarrison) - h->visitedTown->garrisonHero = NULL; + h->visitedTown->garrisonHero = nullptr; else - h->visitedTown->visitingHero = NULL; - h->visitedTown = NULL; + h->visitedTown->visitingHero = nullptr; + h->visitedTown = nullptr; } //return hero to the pool, so he may reappear in tavern @@ -327,7 +327,7 @@ DLL_LINKAGE void RemoveObject::applyGs( CGameState *gs ) if(!vstd::contains(gs->hpool.pavailable, h->subID)) gs->hpool.pavailable[h->subID] = 0xff; - gs->map->objects[id.getNum()] = NULL; + gs->map->objects[id.getNum()] = nullptr; return; @@ -336,14 +336,14 @@ DLL_LINKAGE void RemoveObject::applyGs( CGameState *gs ) auto quest = dynamic_cast(obj); if (quest) { - gs->map->quests[quest->qid] = NULL; + gs->map->quests[quest->qid] = nullptr; BOOST_FOREACH (auto &player, gs->players) { BOOST_FOREACH (auto &q, player.second.quests) { if (q.obj == obj) { - q.obj = NULL; + q.obj = nullptr; } } } @@ -415,9 +415,9 @@ void TryMoveHero::applyGs( CGameState *gs ) CGBoat *b = const_cast(h->boat); b->direction = h->moveDir; b->pos = start; - b->hero = NULL; + b->hero = nullptr; gs->map->addBlockVisTiles(b); - h->boat = NULL; + h->boat = nullptr; } if(start!=end && (result == SUCCESS || result == TELEPORTATION || result == EMBARK || result == DISEMBARK)) @@ -472,9 +472,9 @@ DLL_LINKAGE void SetHeroesInTown::applyGs( CGameState *gs ) bool newGarrisonComesFromVisiting = g && g == t->visitingHero; if(newVisitorComesFromGarrison) - t->setGarrisonedHero(NULL); + t->setGarrisonedHero(nullptr); if(newGarrisonComesFromVisiting) - t->setVisitingHero(NULL); + t->setVisitingHero(nullptr); if(!newGarrisonComesFromVisiting || v) t->setVisitingHero(v); if(!newVisitorComesFromGarrison || g) @@ -543,7 +543,7 @@ DLL_LINKAGE void GiveHero::applyGs( CGameState *gs ) DLL_LINKAGE void NewObject::applyGs( CGameState *gs ) { - CGObjectInstance *o = NULL; + CGObjectInstance *o = nullptr; switch(ID) { case Obj::BOAT: @@ -607,7 +607,7 @@ DLL_LINKAGE const CStackInstance * StackLocation::getStack() if(!army->hasStackAtSlot(slot)) { logNetwork->warnStream() << "Warning: " << army->nodeName() << " dont have a stack at slot " << slot; - return NULL; + return nullptr; } return &army->getStack(slot); } @@ -664,10 +664,10 @@ DLL_LINKAGE const CArtifactInstance *ArtifactLocation::getArt() const else { logNetwork->warnStream() << "ArtifactLocation::getArt: That location is locked!"; - return NULL; + return nullptr; } } - return NULL; + return nullptr; } DLL_LINKAGE const CArtifactSet * ArtifactLocation::getHolderArtSet() const @@ -1130,7 +1130,7 @@ void BattleResult::applyGs( CGameState *gs ) CBonusSystemNode::treeHasChanged(); } - gs->curB->belligerents[0]->battle = gs->curB->belligerents[1]->battle = NULL; + gs->curB->belligerents[0]->battle = gs->curB->belligerents[1]->battle = nullptr; gs->curB.dellNull(); } diff --git a/lib/StartInfo.h b/lib/StartInfo.h index 094cc3248..4da832025 100644 --- a/lib/StartInfo.h +++ b/lib/StartInfo.h @@ -104,7 +104,7 @@ struct StartInfo if(it->second.playerID == nameID) return &it->second; - return NULL; + return nullptr; } template diff --git a/lib/UnlockGuard.h b/lib/UnlockGuard.h index 6e02a59ff..ce99d93ca 100644 --- a/lib/UnlockGuard.h +++ b/lib/UnlockGuard.h @@ -62,18 +62,18 @@ namespace vstd unlock_guard() { - m = NULL; + m = nullptr; } unlock_guard(unlock_guard &&other) : m(other.m) { - other.m = NULL; + other.m = nullptr; } void release() { - m = NULL; + m = nullptr; } ~unlock_guard() diff --git a/lib/VCMIDirs.cpp b/lib/VCMIDirs.cpp index 8e08f8804..bb41b2156 100644 --- a/lib/VCMIDirs.cpp +++ b/lib/VCMIDirs.cpp @@ -64,7 +64,7 @@ std::string VCMIDirs::localPath() const // ...so here goes a bit of hardcode instead std::string home_dir = "."; - if (getenv("HOME") != NULL ) + if (getenv("HOME") != nullptr ) home_dir = getenv("HOME"); return boost::filesystem::path(home_dir + "/Library/Application Support/vcmi").string(); @@ -94,7 +94,7 @@ std::string VCMIDirs::libraryName(std::string basename) const std::string VCMIDirs::localPath() const { - if (getenv("HOME") != NULL ) + if (getenv("HOME") != nullptr ) return std::string(getenv("HOME")) + "/.vcmi"; return "."; } diff --git a/lib/VCMI_Lib.cpp b/lib/VCMI_Lib.cpp index 0d080e528..c7293faca 100644 --- a/lib/VCMI_Lib.cpp +++ b/lib/VCMI_Lib.cpp @@ -28,7 +28,7 @@ #include "filesystem/CResourceLoader.h" #include "CConsoleHandler.h" -LibClasses * VLC = NULL; +LibClasses * VLC = nullptr; DLL_LINKAGE void preinitDLL(CConsoleHandler *Console) { diff --git a/lib/mapping/CMap.cpp b/lib/mapping/CMap.cpp index 5fc9f598b..eda124f65 100644 --- a/lib/mapping/CMap.cpp +++ b/lib/mapping/CMap.cpp @@ -100,7 +100,7 @@ TerrainTile::TerrainTile() : terType(ETerrainType::BORDER), terView(0), riverTyp } -bool TerrainTile::entrableTerrain(const TerrainTile * from /*= NULL*/) const +bool TerrainTile::entrableTerrain(const TerrainTile * from /*= nullptr*/) const { return entrableTerrain(from ? from->terType != ETerrainType::WATER : true, from ? from->terType == ETerrainType::WATER : true); } @@ -111,7 +111,7 @@ bool TerrainTile::entrableTerrain(bool allowLand, bool allowSea) const && ((allowSea && terType == ETerrainType::WATER) || (allowLand && terType != ETerrainType::WATER)); } -bool TerrainTile::isClear(const TerrainTile *from /*= NULL*/) const +bool TerrainTile::isClear(const TerrainTile *from /*= nullptr*/) const { return entrableTerrain(from) && !blocked; } diff --git a/lib/mapping/CMap.h b/lib/mapping/CMap.h index 63e51e46e..a058e4213 100644 --- a/lib/mapping/CMap.h +++ b/lib/mapping/CMap.h @@ -132,7 +132,7 @@ struct DLL_LINKAGE VictoryCondition si32 objectId; /// needed count for creatures (1) / resource (2); upgraded town hall level (3); si32 count; - /// object of specific monster / city / hero instance (NULL if not used); set during map parsing + /// object of specific monster / city / hero instance (nullptr if not used); set during map parsing const CGObjectInstance * obj; template @@ -240,10 +240,10 @@ struct DLL_LINKAGE TerrainTile TerrainTile(); /// Gets true if the terrain is not a rock. If from is water/land, same type is also required. - bool entrableTerrain(const TerrainTile * from = NULL) const; + bool entrableTerrain(const TerrainTile * from = nullptr) const; bool entrableTerrain(bool allowLand, bool allowSea) const; /// Checks for blocking objects and terraint type (water / land). - bool isClear(const TerrainTile * from = NULL) const; + bool isClear(const TerrainTile * from = nullptr) const; /// Gets the ID of the top visitable object or -1 if there is none. int topVisitableId() const; bool isWater() const; diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index bbb6ef877..ecb39d3df 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -44,8 +44,6 @@ #ifndef _MSC_VER #include #endif -#include -#include extern bool end2; #ifdef min #undef min @@ -63,7 +61,7 @@ extern bool end2; sendAndApply(&bnr); CondSh battleMadeAction; -CondSh battleResult(NULL); +CondSh battleResult(nullptr); template class CApplyOnGH; class CBaseForGHApply @@ -71,7 +69,7 @@ class CBaseForGHApply public: virtual bool applyOnGH(CGameHandler *gh, CConnection *c, void *pack, PlayerColor player) const =0; virtual ~CBaseForGHApply(){} - template static CBaseForGHApply *getApplier(const U * t=NULL) + template static CBaseForGHApply *getApplier(const U * t=nullptr) { return new CApplyOnGH; } @@ -89,7 +87,7 @@ public: } }; -static CApplier *applier = NULL; +static CApplier *applier = nullptr; CMP_stack cmpst ; @@ -153,7 +151,7 @@ void PlayerStatuses::setFlag(PlayerColor player, bool PlayerStatus::*flag, bool } template -void callWith(std::vector args, boost::function fun, ui32 which) +void callWith(std::vector args, std::function fun, ui32 which) { fun(args[which]); } @@ -817,13 +815,13 @@ void CGameHandler::applyBattleEffects(BattleAttack &bat, const CStack *att, cons void CGameHandler::handleConnection(std::set players, CConnection &c) { setThreadName("CGameHandler::handleConnection"); - srand(time(NULL)); + srand(time(nullptr)); try { while(1)//server should never shut connection first //was: while(!end2) { - CPack *pack = NULL; + CPack *pack = nullptr; PlayerColor player = PlayerColor::NEUTRAL; si32 requestID = -999; int packType = 0; @@ -1014,7 +1012,7 @@ startWalking: CGameHandler::CGameHandler(void) { QID = 1; - //gs = NULL; + //gs = nullptr; IObjectInterface::cb = this; applier = new CApplier; registerTypes3(*applier); @@ -1025,15 +1023,15 @@ CGameHandler::CGameHandler(void) CGameHandler::~CGameHandler(void) { delete applier; - applier = NULL; + applier = nullptr; delete gs; } void CGameHandler::init(StartInfo *si) { - //extern DLL_LINKAGE boost::rand48 ran; + //extern DLL_LINKAGE std::minstd_rand ran; if(!si->seedToBeUsed) - si->seedToBeUsed = std::time(NULL); + si->seedToBeUsed = std::time(nullptr); gs = new CGameState(); logGlobal->infoStream() << "Gamestate created!"; @@ -1098,7 +1096,7 @@ void CGameHandler::newTurn() bool newMonth = getDate(Date::DAY_OF_MONTH) == 28; std::map hadGold;//starting gold - for buildings like dwarven treasury - srand(time(NULL)); + srand(time(nullptr)); if (firstTurn) { @@ -1139,13 +1137,13 @@ void CGameHandler::newTurn() n.specialWeek = NewTurn::DOUBLE_GROWTH; if (VLC->modh->settings.ALL_CREATURES_GET_DOUBLE_MONTHS) { - std::pair newMonster(54, VLC->creh->pickRandomMonster(boost::ref(rand))); + std::pair newMonster(54, VLC->creh->pickRandomMonster(std::ref(rand))); n.creatureid = newMonster.second; } else if(VLC->creh->doubledCreatures.size()) { const std::vector doubledCreatures (VLC->creh->doubledCreatures.begin(), VLC->creh->doubledCreatures.end()); - n.creatureid = vstd::pickRandomElementOf (doubledCreatures, boost::ref(rand)); + n.creatureid = vstd::pickRandomElementOf (doubledCreatures, std::ref(rand)); } else { @@ -1161,7 +1159,7 @@ void CGameHandler::newTurn() if (monthType < 25) { n.specialWeek = NewTurn::BONUS_GROWTH; //+5 - std::pair newMonster (54, VLC->creh->pickRandomMonster(boost::ref(rand))); + std::pair newMonster (54, VLC->creh->pickRandomMonster(std::ref(rand))); //TODO do not pick neutrals n.creatureid = newMonster.second; } @@ -1187,7 +1185,7 @@ void CGameHandler::newTurn() sah.player = i->first; //pick heroes and their armies - CHeroClass *banned = NULL; + CHeroClass *banned = nullptr; for (int j = 0; j < GameConstants::AVAILABLE_HEROES_PER_PLAYER; j++) { if(CGHeroInstance *h = gs->hpool.pickHeroFor(j == 0, i->first, getNativeTown(i->first), pool, banned)) //first hero - native if possible, second hero -> any other class @@ -1475,7 +1473,7 @@ void CGameHandler::run(bool resume) if(j->second == *i) pom.insert(j->first); - boost::thread(boost::bind(&CGameHandler::handleConnection,this,pom,boost::ref(**i))); + boost::thread(std::bind(&CGameHandler::handleConnection,this,pom,std::ref(**i))); } if(gs->scenarioOps->mode == StartInfo::DUEL) @@ -1534,7 +1532,7 @@ void CGameHandler::run(bool resume) void CGameHandler::setupBattle( int3 tile, const CArmedInstance *armies[2], const CGHeroInstance *heroes[2], bool creatureBank, const CGTownInstance *town ) { - battleResult.set(NULL); + battleResult.set(nullptr); //send info about battles BattleStart bs; @@ -1961,7 +1959,7 @@ void CGameHandler::removeArtifact(const ArtifactLocation &al) } void CGameHandler::startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank, - const CGTownInstance *town) //use hero=NULL for no hero + const CGTownInstance *town) //use hero=nullptr for no hero { engageIntoBattle(army1->tempOwner); engageIntoBattle(army2->tempOwner); @@ -1985,8 +1983,8 @@ void CGameHandler::startBattlePrimary(const CArmedInstance *army1, const CArmedI void CGameHandler::startBattleI( const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, bool creatureBank ) { startBattlePrimary(army1, army2, tile, - army1->ID == Obj::HERO ? static_cast(army1) : NULL, - army2->ID == Obj::HERO ? static_cast(army2) : NULL, + army1->ID == Obj::HERO ? static_cast(army1) : nullptr, + army2->ID == Obj::HERO ? static_cast(army2) : nullptr, creatureBank); } @@ -2565,7 +2563,7 @@ void CGameHandler::sendMessageToAll( const std::string &message ) bool CGameHandler::recruitCreatures( ObjectInstanceID objid, CreatureID crid, ui32 cram, si32 fromLvl ) { const CGDwelling *dw = static_cast(gs->getObj(objid)); - const CArmedInstance *dst = NULL; + const CArmedInstance *dst = nullptr; const CCreature *c = VLC->creh->creatures[crid]; bool warMachine = c->hasBonusOfType(Bonus::SIEGE_WEAPON); @@ -2799,7 +2797,7 @@ bool CGameHandler::moveArtifact(const ArtifactLocation &al1, const ArtifactLocat const CArtifactInstance *srcArtifact = src.getArt(); const CArtifactInstance *destArtifact = dst.getArt(); - if (srcArtifact == NULL) + if (srcArtifact == nullptr) COMPLAIN_RET("No artifact to move!"); if (destArtifact && srcPlayer != dstPlayer) COMPLAIN_RET("Can't touch artifact on hero of another player!"); @@ -2958,7 +2956,7 @@ bool CGameHandler::buyArtifact(const IMarket *m, const CGHeroInstance *h, Res::E { if(art && art->id == aid) { - art = NULL; + art = nullptr; found = true; break; } @@ -3093,7 +3091,7 @@ bool CGameHandler::sellCreatures(ui32 count, const IMarket *market, const CGHero bool CGameHandler::transformInUndead(const IMarket *market, const CGHeroInstance * hero, SlotID slot) { - const CArmedInstance *army = NULL; + const CArmedInstance *army = nullptr; if (hero) army = hero; else @@ -3190,7 +3188,7 @@ bool CGameHandler::hireHero(const CGObjectInstance *obj, ui8 hid, PlayerColor pl bmap > pool = gs->unusedHeroesFromPool(); const CGHeroInstance *theOtherHero = p->availableHeroes[!hid]; - const CGHeroInstance *newHero = NULL; + const CGHeroInstance *newHero = nullptr; if (theOtherHero) //on XXL maps all heroes can be imprisoned :( newHero = gs->hpool.pickHeroFor(false, player, getNativeTown(player), pool, theOtherHero->type->heroClass); @@ -3390,7 +3388,7 @@ bool CGameHandler::makeBattleAction( BattleAction &ba ) if(stackAtEnd && stack->ID == stackAtEnd->ID) //we should just move, it will be handled by following check { - stackAtEnd = NULL; + stackAtEnd = nullptr; } if(!stackAtEnd) @@ -3614,7 +3612,7 @@ bool CGameHandler::makeBattleAction( BattleAction &ba ) const CStack *healer = gs->curB->battleGetStackByID(ba.stackNumber), *destStack = gs->curB->battleGetStackByPos(ba.destinationTile); - if(healer == NULL || destStack == NULL || !healer->hasBonusOfType(Bonus::HEALER)) + if(healer == nullptr || destStack == nullptr || !healer->hasBonusOfType(Bonus::HEALER)) { complain("There is either no healer, no destination, or healer cannot heal :P"); } @@ -3715,7 +3713,7 @@ bool CGameHandler::makeBattleAction( BattleAction &ba ) int casterSide = gs->curB->whatSide(stack->owner); const CGHeroInstance * secHero = gs->curB->getHero(gs->curB->theOtherPlayer(stack->owner)); - handleSpellCasting(spellID, spellLvl, destination, casterSide, stack->owner, NULL, secHero, 0, ECastingMode::CREATURE_ACTIVE_CASTING, stack); + handleSpellCasting(spellID, spellLvl, destination, casterSide, stack->owner, nullptr, secHero, 0, ECastingMode::CREATURE_ACTIVE_CASTING, stack); } sendAndApply(&end_action); @@ -4062,7 +4060,7 @@ void CGameHandler::handleSpellCasting( SpellID spellID, int spellLvl, BattleHex { sse.effect.back().additionalInfo = stack->ID; //we need to know who casted Bind } - const Bonus * bonus = NULL; + const Bonus * bonus = nullptr; if (caster) bonus = caster->getBonusLocalFirst(Selector::typeSubtype(Bonus::SPECIAL_PECULIAR_ENCHANT, spellID)); //TODO does hero specialty should affects his stack casting spells? @@ -4257,7 +4255,7 @@ void CGameHandler::handleSpellCasting( SpellID spellID, int spellLvl, BattleHex break; case SpellID::CLONE: { - const CStack * clonedStack = NULL; + const CStack * clonedStack = nullptr; if (attackedCres.size()) clonedStack = *attackedCres.begin(); if (!clonedStack) @@ -4364,14 +4362,14 @@ void CGameHandler::handleSpellCasting( SpellID spellID, int spellLvl, BattleHex { if(battleStacks[j]->owner == gs->curB->sides[casterSide]) //get enemy stacks which can be affected by this spell { - if (!gs->curB->battleIsImmune(NULL, spell, ECastingMode::MAGIC_MIRROR, battleStacks[j]->position)) + if (!gs->curB->battleIsImmune(nullptr, spell, ECastingMode::MAGIC_MIRROR, battleStacks[j]->position)) mirrorTargets.push_back(battleStacks[j]); } } if (mirrorTargets.size()) { int targetHex = mirrorTargets[rand() % mirrorTargets.size()]->position; - handleSpellCasting(spellID, 0, targetHex, 1 - casterSide, (*it)->owner, NULL, (caster ? caster : NULL), usedSpellPower, ECastingMode::MAGIC_MIRROR, (*it)); + handleSpellCasting(spellID, 0, targetHex, 1 - casterSide, (*it)->owner, nullptr, (caster ? caster : nullptr), usedSpellPower, ECastingMode::MAGIC_MIRROR, (*it)); } } } @@ -4419,7 +4417,7 @@ bool CGameHandler::makeCustomAction( BattleAction &ba ) handleSpellCasting (SpellID(ba.additionalInfo), skill, ba.destinationTile, ba.side, h->tempOwner, h, secondHero, h->getPrimSkillLevel(PrimarySkill::SPELL_POWER), - ECastingMode::HERO_CASTING, NULL, ba.selectedStack); + ECastingMode::HERO_CASTING, nullptr, ba.selectedStack); sendAndApply(&end_action); if( !gs->curB->battleGetStackByID(gs->curB->activeStack, false)->alive() ) @@ -4554,7 +4552,7 @@ void CGameHandler::stackTurnTrigger(const CStack * st) { int spellLeveL = bl[index]->val; //spell level const CGHeroInstance * enemyHero = gs->curB->getHero(gs->curB->theOtherPlayer(st->owner)); - handleSpellCasting(spellID, spellLeveL, -1, side, st->owner, NULL, enemyHero, 0, ECastingMode::ENCHANTER_CASTING, st); + handleSpellCasting(spellID, spellLeveL, -1, side, st->owner, nullptr, enemyHero, 0, ECastingMode::ENCHANTER_CASTING, st); BattleSetStackProperty ssp; ssp.which = BattleSetStackProperty::ENCHANTER_COUNTER; @@ -5245,7 +5243,7 @@ void CGameHandler::attackCasting(const BattleAttack & bat, Bonus::BonusType atta } BOOST_FOREACH(SpellID spellID, spellsToCast) { - const CStack * oneOfAttacked = NULL; + const CStack * oneOfAttacked = nullptr; for (int g=0; g 0 && !bat.bsa[g].isSecondary()) //apply effects only to first target stack if it's alive @@ -5256,7 +5254,7 @@ void CGameHandler::attackCasting(const BattleAttack & bat, Bonus::BonusType atta } bool castMe = false; int meleeRanged; - if(oneOfAttacked == NULL) //all attacked creatures have been killed + if(oneOfAttacked == nullptr) //all attacked creatures have been killed return; int spellLevel = 0; TBonusListPtr spellsByType = attacker->getBonuses(Selector::typeSubtype(attackMode, spellID)); @@ -5281,7 +5279,7 @@ void CGameHandler::attackCasting(const BattleAttack & bat, Bonus::BonusType atta //casting //TODO: check if spell can be blocked or target is immune if (castMe) //stacks use 0 spell power. If needed, default = 3 or custom value is used - handleSpellCasting(spellID, spellLevel, destination, !attacker->attackerOwned, attacker->owner, NULL, NULL, 0, ECastingMode::AFTER_ATTACK_CASTING, attacker); + handleSpellCasting(spellID, spellLevel, destination, !attacker->attackerOwned, attacker->owner, nullptr, nullptr, 0, ECastingMode::AFTER_ATTACK_CASTING, attacker); } } } @@ -5314,10 +5312,10 @@ void CGameHandler::handleAfterAttackCasting( const BattleAttack & bat ) double chanceToKill = double(attacker->count * attacker->valOfBonuses(Bonus::DEATH_STARE, 0)) / 100; vstd::amin(chanceToKill, 1); //cap at 100% - boost::binomial_distribution<> distr(attacker->count, chanceToKill); - boost::mt19937 rng(rand()); - boost::variate_generator > dice (rng, distr); - int staredCreatures = dice(); + std::binomial_distribution<> distr(attacker->count, chanceToKill); + std::mt19937 rng(rand()); + + int staredCreatures = distr(rng); int maxToKill = (attacker->count * chanceToKill + 99) / 100; vstd::amin(staredCreatures, maxToKill); @@ -5327,7 +5325,7 @@ void CGameHandler::handleAfterAttackCasting( const BattleAttack & bat ) { if (bat.bsa[0].newAmount > 0) //TODO: death stare was not originally available for multiple-hex attacks, but... handleSpellCasting(SpellID::DEATH_STARE, 0, gs->curB->battleGetStackByID(bat.bsa[0].stackAttacked)->position, - !attacker->attackerOwned, attacker->owner, NULL, NULL, staredCreatures, ECastingMode::AFTER_ATTACK_CASTING, attacker); + !attacker->attackerOwned, attacker->owner, nullptr, nullptr, staredCreatures, ECastingMode::AFTER_ATTACK_CASTING, attacker); } } @@ -5341,7 +5339,7 @@ void CGameHandler::handleAfterAttackCasting( const BattleAttack & bat ) if (acidDamage) { handleSpellCasting(SpellID::ACID_BREATH_DAMAGE, 0, gs->curB->battleGetStackByID(bat.bsa[0].stackAttacked)->position, - !attacker->attackerOwned, attacker->owner, NULL, NULL, + !attacker->attackerOwned, attacker->owner, nullptr, nullptr, acidDamage * attacker->count, ECastingMode::AFTER_ATTACK_CASTING, attacker); } } @@ -5380,7 +5378,7 @@ bool CGameHandler::castSpell(const CGHeroInstance *h, SpellID spellID, const int } //try to find unoccupied boat to summon - const CGBoat *nearest = NULL; + const CGBoat *nearest = nullptr; double dist = 0; int3 summonPos = h->bestLocation(); if(summonPos.x < 0) @@ -5803,7 +5801,7 @@ void CGameHandler::runBattle() TBonusListPtr bl = gs->curB->heroes[i]->getBonuses(Selector::type(Bonus::OPENING_BATTLE_SPELL)); BOOST_FOREACH (Bonus *b, *bl) { - handleSpellCasting(SpellID(b->subtype), 3, -1, 0, gs->curB->heroes[i]->tempOwner, NULL, gs->curB->heroes[1-i], b->val, ECastingMode::HERO_CASTING, NULL); + handleSpellCasting(SpellID(b->subtype), 3, -1, 0, gs->curB->heroes[i]->tempOwner, nullptr, gs->curB->heroes[1-i], b->val, ECastingMode::HERO_CASTING, nullptr); } } } @@ -5850,7 +5848,7 @@ void CGameHandler::runBattle() if(next->hasBonusOfType(Bonus::ATTACKS_NEAREST_CREATURE)) //while in berserk { //fixme: stack should not attack itself std::pair attackInfo = curB.getNearestStack(next, boost::logic::indeterminate); - if(attackInfo.first != NULL) + if(attackInfo.first != nullptr) { BattleAction attack; attack.actionType = Battle::WALK_AND_ATTACK; @@ -6064,7 +6062,7 @@ void CGameHandler::putArtifact(const ArtifactLocation &al, const CArtifactInstan void CGameHandler::giveHeroNewArtifact(const CGHeroInstance *h, const CArtifact *artType, ArtifactPosition pos) { - CArtifactInstance *a = NULL; + CArtifactInstance *a = nullptr; if(!artType->constituents) { a = new CArtifactInstance(); diff --git a/server/CGameHandler.h b/server/CGameHandler.h index b3e40c16c..fe95b1ac9 100644 --- a/server/CGameHandler.h +++ b/server/CGameHandler.h @@ -129,59 +129,59 @@ public: ////////////////////////////////////////////////////////////////////////// //from IGameCallback //do sth - void changeSpells(const CGHeroInstance * hero, bool give, const std::set &spells) OVERRIDE; - bool removeObject(const CGObjectInstance * obj) OVERRIDE; - void setBlockVis(ObjectInstanceID objid, bool bv) OVERRIDE; - void setOwner(const CGObjectInstance * obj, PlayerColor owner) OVERRIDE; - void setHoverName(const CGObjectInstance * objid, MetaString * name) OVERRIDE; - void changePrimSkill(const CGHeroInstance * hero, PrimarySkill::PrimarySkill which, si64 val, bool abs=false) OVERRIDE; - void changeSecSkill(const CGHeroInstance * hero, SecondarySkill which, int val, bool abs=false) OVERRIDE; - //void showInfoDialog(InfoWindow *iw) OVERRIDE; + void changeSpells(const CGHeroInstance * hero, bool give, const std::set &spells) override; + bool removeObject(const CGObjectInstance * obj) override; + void setBlockVis(ObjectInstanceID objid, bool bv) override; + void setOwner(const CGObjectInstance * obj, PlayerColor owner) override; + void setHoverName(const CGObjectInstance * objid, MetaString * name) override; + void changePrimSkill(const CGHeroInstance * hero, PrimarySkill::PrimarySkill which, si64 val, bool abs=false) override; + void changeSecSkill(const CGHeroInstance * hero, SecondarySkill which, int val, bool abs=false) override; + //void showInfoDialog(InfoWindow *iw) override; - void showBlockingDialog(BlockingDialog *iw) OVERRIDE; - void showGarrisonDialog(ObjectInstanceID upobj, ObjectInstanceID hid, bool removableUnits) OVERRIDE; - void showThievesGuildWindow(PlayerColor player, ObjectInstanceID requestingObjId) OVERRIDE; - void giveResource(PlayerColor player, Res::ERes which, int val) OVERRIDE; - void giveResources(PlayerColor player, TResources resources) OVERRIDE; + void showBlockingDialog(BlockingDialog *iw) override; + void showGarrisonDialog(ObjectInstanceID upobj, ObjectInstanceID hid, bool removableUnits) override; + void showThievesGuildWindow(PlayerColor player, ObjectInstanceID requestingObjId) override; + void giveResource(PlayerColor player, Res::ERes which, int val) override; + void giveResources(PlayerColor player, TResources resources) override; - void giveCreatures(const CArmedInstance *objid, const CGHeroInstance * h, const CCreatureSet &creatures, bool remove) OVERRIDE; - void takeCreatures(ObjectInstanceID objid, const std::vector &creatures) OVERRIDE; - bool changeStackType(const StackLocation &sl, CCreature *c) OVERRIDE; - bool changeStackCount(const StackLocation &sl, TQuantity count, bool absoluteValue = false) OVERRIDE; - bool insertNewStack(const StackLocation &sl, const CCreature *c, TQuantity count) OVERRIDE; - bool eraseStack(const StackLocation &sl, bool forceRemoval = false) OVERRIDE; - bool swapStacks(const StackLocation &sl1, const StackLocation &sl2) OVERRIDE; - bool addToSlot(const StackLocation &sl, const CCreature *c, TQuantity count) OVERRIDE; - void tryJoiningArmy(const CArmedInstance *src, const CArmedInstance *dst, bool removeObjWhenFinished, bool allowMerging) OVERRIDE; - bool moveStack(const StackLocation &src, const StackLocation &dst, TQuantity count = -1) OVERRIDE; + void giveCreatures(const CArmedInstance *objid, const CGHeroInstance * h, const CCreatureSet &creatures, bool remove) override; + void takeCreatures(ObjectInstanceID objid, const std::vector &creatures) override; + bool changeStackType(const StackLocation &sl, CCreature *c) override; + bool changeStackCount(const StackLocation &sl, TQuantity count, bool absoluteValue = false) override; + bool insertNewStack(const StackLocation &sl, const CCreature *c, TQuantity count) override; + bool eraseStack(const StackLocation &sl, bool forceRemoval = false) override; + bool swapStacks(const StackLocation &sl1, const StackLocation &sl2) override; + bool addToSlot(const StackLocation &sl, const CCreature *c, TQuantity count) override; + void tryJoiningArmy(const CArmedInstance *src, const CArmedInstance *dst, bool removeObjWhenFinished, bool allowMerging) override; + bool moveStack(const StackLocation &src, const StackLocation &dst, TQuantity count = -1) override; - void removeAfterVisit(const CGObjectInstance *object) OVERRIDE; + void removeAfterVisit(const CGObjectInstance *object) override; - void giveHeroNewArtifact(const CGHeroInstance *h, const CArtifact *artType, ArtifactPosition pos) OVERRIDE; - void giveHeroArtifact(const CGHeroInstance *h, const CArtifactInstance *a, ArtifactPosition pos) OVERRIDE; - void putArtifact(const ArtifactLocation &al, const CArtifactInstance *a) OVERRIDE; - void removeArtifact(const ArtifactLocation &al) OVERRIDE; - bool moveArtifact(const ArtifactLocation &al1, const ArtifactLocation &al2) OVERRIDE; - void synchronizeArtifactHandlerLists() OVERRIDE; + void giveHeroNewArtifact(const CGHeroInstance *h, const CArtifact *artType, ArtifactPosition pos) override; + void giveHeroArtifact(const CGHeroInstance *h, const CArtifactInstance *a, ArtifactPosition pos) override; + void putArtifact(const ArtifactLocation &al, const CArtifactInstance *a) override; + void removeArtifact(const ArtifactLocation &al) override; + bool moveArtifact(const ArtifactLocation &al1, const ArtifactLocation &al2) override; + void synchronizeArtifactHandlerLists() override; - void showCompInfo(ShowInInfobox * comp) OVERRIDE; - void heroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) OVERRIDE; - void stopHeroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) OVERRIDE; - //bool removeArtifact(const CArtifact* art, int hid) OVERRIDE; - void startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank = false, const CGTownInstance *town = NULL) OVERRIDE; //use hero=NULL for no hero - void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, bool creatureBank = false) OVERRIDE; //if any of armies is hero, hero will be used - void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, bool creatureBank = false) OVERRIDE; //if any of armies is hero, hero will be used, visitable tile of second obj is place of battle//void startBattleI(int heroID, CCreatureSet army, int3 tile, boost::function cb) OVERRIDE; //for hero<=>neutral army - void setAmount(ObjectInstanceID objid, ui32 val) OVERRIDE; - bool moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, PlayerColor asker = PlayerColor::NEUTRAL) OVERRIDE; - void giveHeroBonus(GiveBonus * bonus) OVERRIDE; - void setMovePoints(SetMovePoints * smp) OVERRIDE; - void setManaPoints(ObjectInstanceID hid, int val) OVERRIDE; - void giveHero(ObjectInstanceID id, PlayerColor player) OVERRIDE; - void changeObjPos(ObjectInstanceID objid, int3 newPos, ui8 flags) OVERRIDE; - void heroExchange(ObjectInstanceID hero1, ObjectInstanceID hero2) OVERRIDE; + void showCompInfo(ShowInInfobox * comp) override; + void heroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) override; + void stopHeroVisitCastle(const CGTownInstance * obj, const CGHeroInstance * hero) override; + //bool removeArtifact(const CArtifact* art, int hid) override; + void startBattlePrimary(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool creatureBank = false, const CGTownInstance *town = nullptr) override; //use hero=nullptr for no hero + void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, int3 tile, bool creatureBank = false) override; //if any of armies is hero, hero will be used + void startBattleI(const CArmedInstance *army1, const CArmedInstance *army2, bool creatureBank = false) override; //if any of armies is hero, hero will be used, visitable tile of second obj is place of battle//void startBattleI(int heroID, CCreatureSet army, int3 tile, std::function cb) override; //for hero<=>neutral army + void setAmount(ObjectInstanceID objid, ui32 val) override; + bool moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, PlayerColor asker = PlayerColor::NEUTRAL) override; + void giveHeroBonus(GiveBonus * bonus) override; + void setMovePoints(SetMovePoints * smp) override; + void setManaPoints(ObjectInstanceID hid, int val) override; + void giveHero(ObjectInstanceID id, PlayerColor player) override; + void changeObjPos(ObjectInstanceID objid, int3 newPos, ui8 flags) override; + void heroExchange(ObjectInstanceID hero1, ObjectInstanceID hero2) override; - bool isVisitCoveredByAnotherQuery(const CGObjectInstance *obj, const CGHeroInstance *hero) OVERRIDE; + bool isVisitCoveredByAnotherQuery(const CGObjectInstance *obj, const CGHeroInstance *hero) override; ////////////////////////////////////////////////////////////////////////// void useScholarSkill(ObjectInstanceID hero1, ObjectInstanceID hero2); @@ -197,7 +197,7 @@ public: void expGiven(const CGHeroInstance *hero); //triggers needed level-ups, handles also commander of this hero ////////////////////////////////////////////////////////////////////////// - void commitPackage(CPackForClient *pack) OVERRIDE; + void commitPackage(CPackForClient *pack) override; void init(StartInfo *si); void handleConnection(std::set players, CConnection &c); diff --git a/server/CQuery.h b/server/CQuery.h index 2ab7f6089..e2301052c 100644 --- a/server/CQuery.h +++ b/server/CQuery.h @@ -66,9 +66,9 @@ public: CObjectVisitQuery(const CGObjectInstance *Obj, const CGHeroInstance *Hero, int3 Tile); - virtual bool blocksPack(const CPack *pack) const OVERRIDE; - virtual void onRemoval(CGameHandler *gh, PlayerColor color) OVERRIDE; - virtual void onExposure(CGameHandler *gh, QueryPtr topQuery) OVERRIDE; + virtual bool blocksPack(const CPack *pack) const override; + virtual void onRemoval(CGameHandler *gh, PlayerColor color) override; + virtual void onExposure(CGameHandler *gh, QueryPtr topQuery) override; }; class CBattleQuery : public CQuery @@ -81,9 +81,9 @@ public: CBattleQuery(); CBattleQuery(const BattleInfo *Bi); //TODO - virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const OVERRIDE; - virtual bool blocksPack(const CPack *pack) const OVERRIDE; - virtual void onRemoval(CGameHandler *gh, PlayerColor color) OVERRIDE; + virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const override; + virtual bool blocksPack(const CPack *pack) const override; + virtual void onRemoval(CGameHandler *gh, PlayerColor color) override; }; //Created when hero attempts move and something happens @@ -104,8 +104,8 @@ class CDialogQuery : public CQuery { public: boost::optional answer; - virtual bool endsByPlayerAnswer() const OVERRIDE; - virtual bool blocksPack(const CPack *pack) const OVERRIDE; + virtual bool endsByPlayerAnswer() const override; + virtual bool blocksPack(const CPack *pack) const override; }; class CGarrisonDialogQuery : public CDialogQuery //used also for hero exchange dialogs @@ -114,8 +114,8 @@ public: std::array exchangingArmies; CGarrisonDialogQuery(const CArmedInstance *up, const CArmedInstance *down); - virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const OVERRIDE; - virtual bool blocksPack(const CPack *pack) const OVERRIDE; + virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const override; + virtual bool blocksPack(const CPack *pack) const override; }; //yes/no and component selection dialogs @@ -126,7 +126,7 @@ public: CBlockingDialogQuery(const BlockingDialog &bd); - virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const OVERRIDE; + virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const override; }; class CHeroLevelUpDialogQuery : public CDialogQuery @@ -134,8 +134,8 @@ class CHeroLevelUpDialogQuery : public CDialogQuery public: CHeroLevelUpDialogQuery(const HeroLevelUp &Hlu); - virtual void onRemoval(CGameHandler *gh, PlayerColor color) OVERRIDE; - virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const OVERRIDE; + virtual void onRemoval(CGameHandler *gh, PlayerColor color) override; + virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const override; HeroLevelUp hlu; }; @@ -146,8 +146,8 @@ class CCommanderLevelUpDialogQuery : public CDialogQuery public: CCommanderLevelUpDialogQuery(const CommanderLevelUp &Clu); - virtual void onRemoval(CGameHandler *gh, PlayerColor color) OVERRIDE; - virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const OVERRIDE; + virtual void onRemoval(CGameHandler *gh, PlayerColor color) override; + virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const override; CommanderLevelUp clu; }; diff --git a/server/CVCMIServer.cpp b/server/CVCMIServer.cpp index 19e186a39..1e9f1be08 100644 --- a/server/CVCMIServer.cpp +++ b/server/CVCMIServer.cpp @@ -1,8 +1,6 @@ #include "StdInc.h" #include -#include -#include #include "../lib/filesystem/CResourceLoader.h" #include "../lib/mapping/CCampaignHandler.h" @@ -62,9 +60,9 @@ static void vaccept(tcp::acceptor *ac, tcp::socket *s, boost::system::error_code -CPregameServer::CPregameServer(CConnection *Host, TAcceptor *Acceptor /*= NULL*/) - : host(Host), listeningThreads(0), acceptor(Acceptor), upcomingConnection(NULL), - curmap(NULL), curStartInfo(NULL), state(RUNNING) +CPregameServer::CPregameServer(CConnection *Host, TAcceptor *Acceptor /*= nullptr*/) + : host(Host), listeningThreads(0), acceptor(Acceptor), upcomingConnection(nullptr), + curmap(nullptr), curStartInfo(nullptr), state(RUNNING) { initConnection(host); } @@ -76,7 +74,7 @@ void CPregameServer::handleConnection(CConnection *cpc) { while(!cpc->receivedStop) { - CPackForSelectionScreen *cpfs = NULL; + CPackForSelectionScreen *cpfs = nullptr; *cpc >> cpfs; logNetwork->infoStream() << "Got package to announce " << typeid(*cpfs).name() << " from " << *cpc; @@ -205,7 +203,7 @@ void CPregameServer::connectionAccepted(const boost::system::error_code& ec) logNetwork->infoStream() << "We got a new connection! :)"; CConnection *pc = new CConnection(upcomingConnection, NAME); initConnection(pc); - upcomingConnection = NULL; + upcomingConnection = nullptr; *pc << (ui8)pc->connectionID << curmap; @@ -226,7 +224,7 @@ void CPregameServer::start_async_accept() assert(acceptor); upcomingConnection = new TSocket(acceptor->get_io_service()); - acceptor->async_accept(*upcomingConnection, boost::bind(&CPregameServer::connectionAccepted, this, boost::asio::placeholders::error)); + acceptor->async_accept(*upcomingConnection, std::bind(&CPregameServer::connectionAccepted, this, _1)); } void CPregameServer::announceTxt(const std::string &txt, const std::string &playerName /*= "system"*/) @@ -310,7 +308,7 @@ void CPregameServer::startListeningThread(CConnection * pc) } CVCMIServer::CVCMIServer() -: io(new boost::asio::io_service()), acceptor(new TAcceptor(*io, tcp::endpoint(tcp::v4(), port))), firstConnection(NULL) +: io(new boost::asio::io_service()), acceptor(new TAcceptor(*io, tcp::endpoint(tcp::v4(), port))), firstConnection(nullptr) { logNetwork->debugStream() << "CVCMIServer created!"; } @@ -389,7 +387,7 @@ void CVCMIServer::newPregame() void CVCMIServer::start() { - ServerReady *sr = NULL; + ServerReady *sr = nullptr; intpr::mapped_region *mr; try { @@ -409,7 +407,7 @@ void CVCMIServer::start() boost::system::error_code error; logNetwork->infoStream()<<"Listening for connections at port " << acceptor->local_endpoint().port(); tcp::socket * s = new tcp::socket(acceptor->get_io_service()); - boost::thread acc(boost::bind(vaccept,acceptor,s,&error)); + boost::thread acc(std::bind(vaccept,acceptor,s,&error)); sr->setToTrueAndNotify(); delete mr; @@ -550,7 +548,7 @@ int main(int argc, char** argv) logNetwork->infoStream() << "Port " << port << " will be used."; loadDLLClasses(); - srand ( (ui32)time(NULL) ); + srand ( (ui32)time(nullptr) ); try { io_service io_service; diff --git a/server/CVCMIServer.h b/server/CVCMIServer.h index 50c6f0182..01d2a8732 100644 --- a/server/CVCMIServer.h +++ b/server/CVCMIServer.h @@ -75,7 +75,7 @@ public: const CMapInfo *curmap; StartInfo *curStartInfo; - CPregameServer(CConnection *Host, TAcceptor *Acceptor = NULL); + CPregameServer(CConnection *Host, TAcceptor *Acceptor = nullptr); ~CPregameServer(); void run();