mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	* proper bool serialization
* refactoring towards more enums/typedefs
This commit is contained in:
		| @@ -374,7 +374,7 @@ BattleInfo * BattleInfo::setupBattle( int3 tile, int terrain, int battlefieldTyp | ||||
| 	else | ||||
| 	{ | ||||
| 		curB->town = NULL; | ||||
| 		curB->siege = 0; | ||||
| 		curB->siege = CGTownInstance::NONE; | ||||
| 		curB->terrainType = terrain; | ||||
| 	} | ||||
|  | ||||
| @@ -566,13 +566,13 @@ BattleInfo * BattleInfo::setupBattle( int3 tile, int terrain, int battlefieldTyp | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	if (curB->siege == 2 || curB->siege == 3) | ||||
| 	if (curB->siege == CGTownInstance::CITADEL || curB->siege == CGTownInstance::CASTLE) | ||||
| 	{ | ||||
| 		// keep tower | ||||
| 		CStack * stack = curB->generateNewStack(CStackBasicDescriptor(149, 1), false, 255, -2); | ||||
| 		stacks.push_back(stack); | ||||
|  | ||||
| 		if (curB->siege == 3) | ||||
| 		if (curB->siege == CGTownInstance::CASTLE) | ||||
| 		{ | ||||
| 			// lower tower + upper tower | ||||
| 			CStack * stack = curB->generateNewStack(CStackBasicDescriptor(149, 1), false, 255, -4); | ||||
|   | ||||
| @@ -47,7 +47,7 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb | ||||
| { | ||||
| 	ui8 sides[2]; //sides[0] - attacker, sides[1] - defender | ||||
| 	si32 round, activeStack, selectedStack; | ||||
| 	ui8 siege; //    = 0 ordinary battle    = 1 a siege with a Fort    = 2 a siege with a Citadel    = 3 a siege with a Castle | ||||
| 	CGTownInstance::EFortLevel siege; | ||||
| 	const CGTownInstance * town; //used during town siege - id of attacked town; -1 if not town defence | ||||
| 	int3 tile; //for background and bonuses | ||||
| 	CGHeroInstance* heroes[2]; | ||||
| @@ -60,7 +60,7 @@ struct DLL_LINKAGE BattleInfo : public CBonusSystemNode, public CBattleInfoCallb | ||||
| 	SiegeInfo si; | ||||
|  | ||||
| 	si32 battlefieldType; //like !!BA:B | ||||
| 	ui8 terrainType; //used for some stack nativity checks (not the bonus limiters though that have their own copy) | ||||
| 	int terrainType; //used for some stack nativity checks (not the bonus limiters though that have their own copy) | ||||
|  | ||||
| 	ui8 tacticsSide; //which side is requested to play tactics phase | ||||
| 	ui8 tacticDistance; //how many hexes we can go forward (1 = only hexes adjacent to margin line) | ||||
|   | ||||
| @@ -405,7 +405,7 @@ bool CBattleInfoEssentials::battleHasHero(ui8 side) const | ||||
| ui8 CBattleInfoEssentials::battleGetWallState(int partOfWall) const | ||||
| { | ||||
| 	RETURN_IF_NOT_BATTLE(0); | ||||
| 	if(getBattle()->siege == 0) | ||||
| 	if(getBattle()->siege == CGTownInstance::NONE) | ||||
| 		return 0; | ||||
|  | ||||
| 	assert(partOfWall >= 0 && partOfWall < EWallParts::PARTS_COUNT); | ||||
|   | ||||
| @@ -1020,7 +1020,7 @@ void CCommanderInstance::init() | ||||
| 	type = NULL; | ||||
| 	idRand = -1; | ||||
| 	_armyObj = NULL; | ||||
| 	setNodeType (Bonus::COMMANDER); | ||||
| 	setNodeType (CBonusSystemNode::COMMANDER); | ||||
| 	secondarySkills.resize (ECommander::SPELL_POWER + 1); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -131,7 +131,7 @@ void CPlayersVisited::setPropertyDer( ui8 what, ui32 val ) | ||||
| 		players.insert((ui8)val); | ||||
| } | ||||
|  | ||||
| bool CPlayersVisited::wasVisited( ui8 player ) const | ||||
| bool CPlayersVisited::wasVisited( TPlayerColor player ) const | ||||
| { | ||||
| 	return vstd::contains(players,player); | ||||
| } | ||||
| @@ -3552,7 +3552,7 @@ void CGVisitableOPW::newTurn() const | ||||
| 		cb->setHoverName(id,&ms); | ||||
| 	} | ||||
| } | ||||
| bool CGVisitableOPW::wasVisited(ui8 player) const | ||||
| bool CGVisitableOPW::wasVisited(TPlayerColor player) const | ||||
| { | ||||
| 	return visited; //TODO: other players should see object as unvisited | ||||
| } | ||||
| @@ -6268,7 +6268,7 @@ void CGKeys::setPropertyDer (ui8 what, ui32 val) //101-108 - enable key for play | ||||
| 		playerKeyMap.find(what-101)->second.insert((ui8)val); | ||||
| } | ||||
|  | ||||
| bool CGKeys::wasMyColorVisited (int player) const | ||||
| bool CGKeys::wasMyColorVisited (TPlayerColor player) const | ||||
| { | ||||
| 	if (vstd::contains(playerKeyMap[player], subID)) //creates set if it's not there | ||||
| 		return true; | ||||
| @@ -6291,7 +6291,7 @@ const std::string CGKeys::getName() const | ||||
| 	return name; | ||||
| } | ||||
|  | ||||
| bool CGKeymasterTent::wasVisited (ui8 player) const | ||||
| bool CGKeymasterTent::wasVisited (TPlayerColor player) const | ||||
| { | ||||
| 	return wasMyColorVisited (player); | ||||
| } | ||||
|   | ||||
| @@ -55,7 +55,7 @@ public: | ||||
| 		MISSION_ART = 5, MISSION_ARMY = 6, MISSION_RESOURCES = 7, MISSION_HERO = 8, MISSION_PLAYER = 9, MISSION_KEYMASTER = 10}; | ||||
| 	enum Eprogress {NOT_ACTIVE, IN_PROGRESS, COMPLETE}; | ||||
|  | ||||
| 	si32 qid; //unique quets id for serialization / identification | ||||
| 	si32 qid; //unique quest id for serialization / identification | ||||
|  | ||||
| 	Emission missionType; | ||||
| 	Eprogress progress; | ||||
| @@ -172,8 +172,8 @@ public: | ||||
| 	CGDefInfo * defInfo; | ||||
| 	ui8 animPhaseShift; | ||||
|  | ||||
| 	ui8 tempOwner; | ||||
| 	ui8 blockVisit; //if non-zero then blocks the tile but is visitable from neighbouring tile | ||||
| 	TPlayerColor tempOwner; | ||||
| 	bool blockVisit; //if non-zero then blocks the tile but is visitable from neighbouring tile | ||||
|  | ||||
| 	virtual ui8 getPassableness() const; //bitmap - if the bit is set the corresponding player can pass through the visitable tiles of object, even if it's blockvis; if not set - default properties from definfo are used | ||||
| 	virtual int3 getSightCenter() const; //"center" tile from which the sight distance is calculated | ||||
| @@ -234,9 +234,9 @@ public: | ||||
| class DLL_LINKAGE CPlayersVisited: public CGObjectInstance | ||||
| { | ||||
| public: | ||||
| 	std::set<ui8> players; //players that visited this object | ||||
| 	std::set<TPlayerColor> players; //players that visited this object | ||||
|  | ||||
| 	bool wasVisited(ui8 player) const; | ||||
| 	bool wasVisited(TPlayerColor player) const; | ||||
| 	void setPropertyDer(ui8 what, ui32 val) override; | ||||
|  | ||||
| 	template <typename Handler> void serialize(Handler &h, const int version) | ||||
| @@ -305,7 +305,7 @@ public: | ||||
| 	std::vector<std::pair<ui8,ui8> > secSkills; //first - ID of skill, second - level of skill (1 - basic, 2 - adv., 3 - expert); if hero has ability (-1, -1) it meansthat it should have default secondary abilities | ||||
| 	ui32 movement; //remaining movement points | ||||
| 	ui8 sex; | ||||
| 	ui8 inTownGarrison; // if hero is in town garrison | ||||
| 	bool inTownGarrison; // if hero is in town garrison | ||||
| 	ConstTransitivePtr<CGTownInstance> visitedTown; //set if hero is visiting town or in the town garrison | ||||
| 	ConstTransitivePtr<CCommanderInstance> commander; | ||||
| 	const CGBoat *boat; //set to CGBoat when sailing | ||||
| @@ -319,7 +319,7 @@ public: | ||||
| 	struct DLL_LINKAGE Patrol | ||||
| 	{ | ||||
| 		Patrol(){patrolling=false;patrolRadious=-1;}; | ||||
| 		ui8 patrolling; | ||||
| 		bool patrolling; | ||||
| 		ui32 patrolRadious; | ||||
| 		template <typename Handler> void serialize(Handler &h, const int version) | ||||
| 		{ | ||||
| @@ -329,7 +329,7 @@ public: | ||||
|  | ||||
| 	struct DLL_LINKAGE HeroSpecial : CBonusSystemNode | ||||
| 	{ | ||||
| 		ui8 growsWithLevel; | ||||
| 		bool growsWithLevel; | ||||
|  | ||||
| 		HeroSpecial(){growsWithLevel = false;}; | ||||
|  | ||||
| @@ -714,10 +714,10 @@ private: | ||||
| class DLL_LINKAGE CGEvent : public CGPandoraBox  //event objects | ||||
| { | ||||
| public: | ||||
| 	ui8 removeAfterVisit; //true if event is removed after occurring | ||||
| 	bool removeAfterVisit; //true if event is removed after occurring | ||||
| 	ui8 availableFor; //players whom this event is available for | ||||
| 	ui8 computerActivate; //true if computre player can activate this event | ||||
| 	ui8 humanActivate; //true if human player can activate this event | ||||
| 	bool computerActivate; //true if computer player can activate this event | ||||
| 	bool humanActivate; //true if human player can activate this event | ||||
|  | ||||
| 	template <typename Handler> void serialize(Handler &h, const int version) | ||||
| 	{ | ||||
| @@ -738,8 +738,8 @@ public: | ||||
| 	std::string message; //message printed for attacking hero | ||||
| 	std::vector<ui32> resources; //[res_id], resources given to hero that has won with monsters | ||||
| 	TArtifactID gainedArtifact; //ID of artifact gained to hero, -1 if none | ||||
| 	ui8 neverFlees; //if true, the troops will never flee | ||||
| 	ui8 notGrowingTeam; //if true, number of units won't grow | ||||
| 	bool neverFlees; //if true, the troops will never flee | ||||
| 	bool notGrowingTeam; //if true, number of units won't grow | ||||
| 	ui64 temppower; //used to handle fractional stack growth for tiny stacks | ||||
|  | ||||
|  | ||||
| @@ -891,7 +891,7 @@ public: | ||||
| class DLL_LINKAGE CGGarrison : public CArmedInstance | ||||
| { | ||||
| public: | ||||
| 	ui8 removableUnits; | ||||
| 	bool removableUnits; | ||||
|  | ||||
| 	ui8 getPassableness() const; | ||||
| 	void onHeroVisit(const CGHeroInstance * h) const override; | ||||
| @@ -1002,7 +1002,7 @@ class DLL_LINKAGE CGVisitableOPW : public CGObjectInstance //objects visitable O | ||||
| public: | ||||
| 	ui8 visited; //true if object has been visited this week | ||||
|  | ||||
| 	bool wasVisited(ui8 player) const; | ||||
| 	bool wasVisited(TPlayerColor player) const; | ||||
| 	void onHeroVisit(const CGHeroInstance * h) const override; | ||||
| 	void newTurn() const override; | ||||
|  | ||||
| @@ -1046,7 +1046,7 @@ public: | ||||
| }; | ||||
|  | ||||
| class DLL_LINKAGE CGMagicSpring : public CGVisitableOPW | ||||
| {///unfortunatelly, this one is quite different than others | ||||
| {///unfortunately, this one is quite different than others | ||||
| public: | ||||
| 	void onHeroVisit(const CGHeroInstance * h) const override; | ||||
| 	const std::string & getHoverText() const override; | ||||
| @@ -1098,11 +1098,11 @@ public: | ||||
| class DLL_LINKAGE CGKeys : public CGObjectInstance //Base class for Keymaster and guards | ||||
| { | ||||
| public: | ||||
| 	static std::map <ui8, std::set <ui8> > playerKeyMap; //[players][keysowned] | ||||
| 	static std::map <TPlayerColor, std::set <ui8> > playerKeyMap; //[players][keysowned] | ||||
| 	//SubID 0 - lightblue, 1 - green, 2 - red, 3 - darkblue, 4 - brown, 5 - purple, 6 - white, 7 - black | ||||
|  | ||||
| 	const std::string getName() const; //depending on color | ||||
| 	bool wasMyColorVisited (int player) const; | ||||
| 	bool wasMyColorVisited (TPlayerColor player) const; | ||||
|  | ||||
| 	const std::string & getHoverText() const override; | ||||
|  | ||||
| @@ -1117,7 +1117,7 @@ protected: | ||||
| class DLL_LINKAGE CGKeymasterTent : public CGKeys | ||||
| { | ||||
| public: | ||||
| 	bool wasVisited (ui8 player) const; | ||||
| 	bool wasVisited (TPlayerColor player) const; | ||||
| 	void onHeroVisit(const CGHeroInstance * h) const override; | ||||
|  | ||||
| 	template <typename Handler> void serialize(Handler &h, const int version) | ||||
|   | ||||
| @@ -530,7 +530,7 @@ void CTownHandler::load(const JsonNode &source) | ||||
| 		if (alignment == -1) | ||||
| 			faction.alignment = EAlignment::NEUTRAL; | ||||
| 		else | ||||
| 			faction.alignment = alignment; | ||||
| 			faction.alignment = static_cast<EAlignment::EAlignment>(alignment); | ||||
|  | ||||
| 		if (!node.second["town"].isNull()) | ||||
| 		{ | ||||
|   | ||||
| @@ -174,7 +174,7 @@ public: | ||||
| 	TFaction factionID; | ||||
|  | ||||
| 	ui8 nativeTerrain; | ||||
| 	ui8 alignment; // uses EAlignment enum | ||||
| 	EAlignment::EAlignment alignment; | ||||
|  | ||||
| 	TCreature commander; | ||||
|  | ||||
|   | ||||
| @@ -34,7 +34,7 @@ | ||||
| #include "CObjectHandler.h" //for CArmedInstance | ||||
| #include "Mapping/CCampaignHandler.h" //for CCampaignState | ||||
|  | ||||
| const ui32 version = 734; | ||||
| const ui32 version = 735; | ||||
| const TSlot COMMANDER_SLOT_PLACEHOLDER = -2; | ||||
|  | ||||
| class CConnection; | ||||
| @@ -72,6 +72,7 @@ namespace boost | ||||
| enum SerializationLvl | ||||
| { | ||||
| 	Wrong=0, | ||||
| 	Boolean, | ||||
| 	Primitive, | ||||
| 	Array, | ||||
| 	Pointer, | ||||
| @@ -118,6 +119,23 @@ public: | ||||
|  | ||||
| extern DLL_LINKAGE CTypeList typeList; | ||||
|  | ||||
|  | ||||
| template<typename Ser> | ||||
| struct SaveBoolean | ||||
| { | ||||
| 	static void invoke(Ser &s, const bool &data) | ||||
| 	{ | ||||
| 		s.saveBoolean(data); | ||||
| 	} | ||||
| }; | ||||
| template<typename Ser> | ||||
| struct LoadBoolean | ||||
| { | ||||
| 	static void invoke(Ser &s, bool &data) | ||||
| 	{ | ||||
| 		s.loadBoolean(data); | ||||
| 	} | ||||
| }; | ||||
| template<typename Ser,typename T> | ||||
| struct SavePrimitive | ||||
| { | ||||
| @@ -222,6 +240,10 @@ struct SerializationLevel | ||||
| { | ||||
| 	typedef mpl::integral_c_tag tag; | ||||
| 	typedef | ||||
| 		typename mpl::eval_if< | ||||
| 			boost::is_same<T, bool>, | ||||
| 			mpl::int_<Boolean>, | ||||
| 		//else | ||||
| 		typename mpl::eval_if< | ||||
| 			boost::is_fundamental<T>, | ||||
| 			mpl::int_<Primitive>, | ||||
| @@ -252,6 +274,7 @@ struct SerializationLevel | ||||
| 		> | ||||
| 		> | ||||
| 		> | ||||
| 		> | ||||
| 		>::type type; | ||||
| 	static const int value = SerializationLevel::type::value; | ||||
| }; | ||||
| @@ -406,7 +429,7 @@ struct SaveIfStackInstance<Ser, CStackInstance *> | ||||
| 		assert(data->armyObj); | ||||
| 		TSlot slot = -1; | ||||
|  | ||||
| 		if(data->getNodeType() == Bonus::COMMANDER) | ||||
| 		if(data->getNodeType() == CBonusSystemNode::COMMANDER) | ||||
| 			slot = COMMANDER_SLOT_PLACEHOLDER; | ||||
| 		else | ||||
| 			slot = data->armyObj->findStack(data); | ||||
| @@ -582,6 +605,9 @@ public: | ||||
| 	{ | ||||
| 		typedef | ||||
| 			//if | ||||
| 			typename mpl::eval_if< mpl::equal_to<SerializationLevel<T>,mpl::int_<Boolean> >, | ||||
| 			mpl::identity<SaveBoolean<Serializer> >, | ||||
| 			//else if | ||||
| 			typename mpl::eval_if< mpl::equal_to<SerializationLevel<T>,mpl::int_<Primitive> >, | ||||
| 			mpl::identity<SavePrimitive<Serializer,T> >, | ||||
| 			//else if | ||||
| @@ -602,6 +628,7 @@ public: | ||||
| 			> | ||||
| 			> | ||||
| 			> | ||||
| 			> | ||||
| 			>::type typex; | ||||
| 		typex::invoke(* this->This(), data); | ||||
| 	} | ||||
| @@ -689,6 +716,11 @@ public: | ||||
| 		si32 writ = static_cast<si32>(data); | ||||
| 		*this << writ; | ||||
| 	} | ||||
| 	void saveBoolean(const bool & data) | ||||
| 	{ | ||||
| 		ui8 writ = static_cast<ui8>(data); | ||||
| 		*this << writ; | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -778,6 +810,9 @@ public: | ||||
| 	{ | ||||
| 		typedef | ||||
| 			//if | ||||
| 			typename mpl::eval_if< mpl::equal_to<SerializationLevel<T>,mpl::int_<Boolean> >, | ||||
| 			mpl::identity<LoadBoolean<Serializer> >, | ||||
| 			//else if | ||||
| 			typename mpl::eval_if< mpl::equal_to<SerializationLevel<T>,mpl::int_<Primitive> >, | ||||
| 			mpl::identity<LoadPrimitive<Serializer,T> >, | ||||
| 			//else if | ||||
| @@ -798,6 +833,7 @@ public: | ||||
| 			> | ||||
| 			> | ||||
| 			> | ||||
| 			> | ||||
| 			>::type typex; | ||||
| 		typex::invoke(* this->This(), data); | ||||
| 	} | ||||
| @@ -1049,6 +1085,12 @@ public: | ||||
| 		*this >> read; | ||||
| 		data = static_cast<E>(read); | ||||
| 	} | ||||
| 	void loadBoolean(bool &data) | ||||
| 	{ | ||||
| 		ui8 read; | ||||
| 		*this >> read; | ||||
| 		data = static_cast<bool>(read); | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| class DLL_LINKAGE CSaveFile | ||||
|   | ||||
| @@ -970,7 +970,7 @@ void CBonusSystemNode::exportBonuses() | ||||
| 		exportBonus(b); | ||||
| } | ||||
|  | ||||
| ui8 CBonusSystemNode::getNodeType() const | ||||
| CBonusSystemNode::ENodeTypes CBonusSystemNode::getNodeType() const | ||||
| { | ||||
| 	return nodeType; | ||||
| } | ||||
| @@ -995,7 +995,7 @@ const TNodesVector& CBonusSystemNode::getChildrenNodes() const | ||||
| 	return children; | ||||
| } | ||||
|  | ||||
| void CBonusSystemNode::setNodeType(ui8 type) | ||||
| void CBonusSystemNode::setNodeType(CBonusSystemNode::ENodeTypes type) | ||||
| { | ||||
| 	nodeType = type; | ||||
| } | ||||
| @@ -1345,7 +1345,7 @@ int CCreatureTypeLimiter::limit(const BonusLimitationContext &context) const | ||||
| 	//drop bonus if it's not our creature and (we dont check upgrades or its not our upgrade) | ||||
| } | ||||
|  | ||||
| CCreatureTypeLimiter::CCreatureTypeLimiter(const CCreature &Creature, ui8 IncludeUpgrades /*= true*/) | ||||
| CCreatureTypeLimiter::CCreatureTypeLimiter(const CCreature &Creature, bool IncludeUpgrades /*= true*/) | ||||
| 	:creature(&Creature), includeUpgrades(IncludeUpgrades) | ||||
| { | ||||
| } | ||||
| @@ -1411,7 +1411,7 @@ CPropagatorNodeType::CPropagatorNodeType() | ||||
|  | ||||
| } | ||||
|  | ||||
| CPropagatorNodeType::CPropagatorNodeType(ui8 NodeType) | ||||
| CPropagatorNodeType::CPropagatorNodeType(int NodeType) | ||||
| 	: nodeType(NodeType) | ||||
| { | ||||
| } | ||||
|   | ||||
| @@ -467,10 +467,10 @@ public: | ||||
|  | ||||
| class DLL_LINKAGE CPropagatorNodeType : public IPropagator | ||||
| { | ||||
| 	ui8 nodeType; | ||||
| 	int nodeType; //CBonusSystemNode::ENodeTypes | ||||
| public: | ||||
| 	CPropagatorNodeType(); | ||||
| 	CPropagatorNodeType(ui8 NodeType); | ||||
| 	CPropagatorNodeType(int NodeType); | ||||
| 	bool shouldBeAttached(CBonusSystemNode *dest); | ||||
| 	//CBonusSystemNode *getDestNode(CBonusSystemNode *source, CBonusSystemNode *redParent, CBonusSystemNode *redChild) OVERRIDE; | ||||
|  | ||||
| @@ -547,6 +547,12 @@ public: | ||||
|  | ||||
| class DLL_LINKAGE CBonusSystemNode : public IBonusBearer | ||||
| { | ||||
| public: | ||||
| 	enum ENodeTypes | ||||
| 	{ | ||||
| 		UNKNOWN, STACK_INSTANCE, STACK_BATTLE, specialty, ARTIFACT, CREATURE, ARTIFACT_INSTANCE, HERO, PLAYER, TEAM, | ||||
| 		TOWN_AND_VISITOR, BATTLE, COMMANDER | ||||
| 	}; | ||||
| private: | ||||
| 	BonusList bonuses; //wielded bonuses (local or up-propagated here) | ||||
| 	BonusList exportedBonuses; //bonuses coming from this node (wielded or propagated away) | ||||
| @@ -554,7 +560,7 @@ private: | ||||
| 	TNodesVector parents; //parents -> we inherit bonuses from them, we may attach our bonuses to them | ||||
| 	TNodesVector children; | ||||
|  | ||||
| 	ui8 nodeType; | ||||
| 	ENodeTypes nodeType; | ||||
| 	std::string description; | ||||
|  | ||||
| 	static const bool cachingEnabled; | ||||
| @@ -622,8 +628,8 @@ public: | ||||
| 	BonusList &getBonusList(); | ||||
| 	const BonusList &getBonusList() const; | ||||
| 	BonusList &getExportedBonusList(); | ||||
| 	ui8 getNodeType() const; | ||||
| 	void setNodeType(ui8 type); | ||||
| 	CBonusSystemNode::ENodeTypes getNodeType() const; | ||||
| 	void setNodeType(CBonusSystemNode::ENodeTypes type); | ||||
| 	const TNodesVector &getParentNodes() const; | ||||
| 	const TNodesVector &getChildrenNodes() const; | ||||
| 	const std::string &getDescription() const; | ||||
| @@ -639,11 +645,6 @@ public: | ||||
| 		BONUS_TREE_DESERIALIZATION_FIX | ||||
| 		//h & parents & children; | ||||
| 	} | ||||
| 	enum ENodeTypes | ||||
| 	{ | ||||
| 		UNKNOWN, STACK_INSTANCE, STACK_BATTLE, specialty, ARTIFACT, CREATURE, ARTIFACT_INSTANCE, HERO, PLAYER, TEAM, | ||||
| 		TOWN_AND_VISITOR, BATTLE | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| namespace NBonus | ||||
| @@ -761,10 +762,10 @@ class DLL_LINKAGE CCreatureTypeLimiter : public ILimiter //affect only stacks of | ||||
| { | ||||
| public: | ||||
| 	const CCreature *creature; | ||||
| 	ui8 includeUpgrades; | ||||
| 	bool includeUpgrades; | ||||
|  | ||||
| 	CCreatureTypeLimiter(); | ||||
| 	CCreatureTypeLimiter(const CCreature &Creature, ui8 IncludeUpgrades = true); | ||||
| 	CCreatureTypeLimiter(const CCreature &Creature, bool IncludeUpgrades = true); | ||||
| 	void setCreature (TCreature id); | ||||
|  | ||||
| 	int limit(const BonusLimitationContext &context) const OVERRIDE; | ||||
| @@ -781,7 +782,7 @@ class DLL_LINKAGE HasAnotherBonusLimiter : public ILimiter //applies only to nod | ||||
| public: | ||||
| 	TBonusType type; | ||||
| 	TBonusSubtype subtype; | ||||
| 	ui8 isSubtypeRelevant; //check for subtype only if this is true | ||||
| 	bool isSubtypeRelevant; //check for subtype only if this is true | ||||
|  | ||||
| 	HasAnotherBonusLimiter(TBonusType bonus = Bonus::NONE); | ||||
| 	HasAnotherBonusLimiter(TBonusType bonus, TBonusSubtype _subtype); | ||||
| @@ -798,7 +799,7 @@ public: | ||||
| class DLL_LINKAGE CreatureNativeTerrainLimiter : public ILimiter //applies only to creatures that are on their native terrain | ||||
| { | ||||
| public: | ||||
| 	si8 terrainType; | ||||
| 	int terrainType; | ||||
| 	CreatureNativeTerrainLimiter(); | ||||
| 	CreatureNativeTerrainLimiter(int TerrainType); | ||||
|  | ||||
|   | ||||
| @@ -1420,7 +1420,7 @@ DLL_LINKAGE void ObstaclesRemoved::applyGs( CGameState *gs ) | ||||
|  | ||||
| DLL_LINKAGE void CatapultAttack::applyGs( CGameState *gs ) | ||||
| { | ||||
| 	if(gs->curB && gs->curB->siege != 0) //if there is a battle and it's a siege | ||||
| 	if(gs->curB && gs->curB->siege != CGTownInstance::NONE) //if there is a battle and it's a siege | ||||
| 	{ | ||||
| 		BOOST_FOREACH(const auto &it,attackedParts) | ||||
| 		{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user