mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Simplify getAffectedStacks arguments. casterColor not needed anymore.
This commit is contained in:
		| @@ -458,7 +458,7 @@ void CBattleAI::attemptCastingSpell() | ||||
| 			{ | ||||
| 				int damageDealt = 0, damageReceived = 0; | ||||
|  | ||||
| 				auto stacksSuffering = ps.spell->getAffectedStacks(cb.get(), ECastingMode::HERO_CASTING, playerID, skillLevel, ps.dest, hero); | ||||
| 				auto stacksSuffering = ps.spell->getAffectedStacks(cb.get(), ECastingMode::HERO_CASTING, hero, skillLevel, ps.dest); | ||||
|  | ||||
| 				if(stacksSuffering.empty()) | ||||
| 					return -1; | ||||
|   | ||||
| @@ -272,7 +272,7 @@ void DefaultSpellMechanics::battleCast(const SpellCastEnvironment * env, BattleS | ||||
| 	//must be vector, as in Chain Lightning order matters | ||||
| 	std::vector<const CStack*> attackedCres; //CStack vector is somewhat more suitable than ID vector | ||||
|  | ||||
| 	auto creatures = owner->getAffectedStacks(parameters.cb, parameters.mode, parameters.casterColor, parameters.spellLvl, parameters.getFirstDestinationHex(), parameters.caster); | ||||
| 	auto creatures = owner->getAffectedStacks(parameters.cb, parameters.mode, parameters.caster, parameters.spellLvl, parameters.getFirstDestinationHex()); | ||||
| 	std::copy(creatures.begin(), creatures.end(), std::back_inserter(attackedCres)); | ||||
|  | ||||
| 	logGlobal->debugStream() << "will affect: " << attackedCres.size() << " stacks"; | ||||
| @@ -672,7 +672,7 @@ std::set<const CStack *> DefaultSpellMechanics::getAffectedStacks(SpellTargeting | ||||
| { | ||||
| 	std::set<const CStack* > attackedCres;//std::set to exclude multiple occurrences of two hex creatures | ||||
|  | ||||
| 	const ui8 attackerSide = ctx.cb->playerToSide(ctx.casterColor) == 1; | ||||
| 	const ui8 attackerSide = ctx.cb->playerToSide(ctx.caster->getOwner()) == 1; | ||||
| 	const auto attackedHexes = rangeInHexes(ctx.destination, ctx.schoolLvl, attackerSide); | ||||
|  | ||||
| 	const CSpell::TargetInfo ti(owner, ctx.schoolLvl, ctx.mode); | ||||
| @@ -691,8 +691,8 @@ std::set<const CStack *> DefaultSpellMechanics::getAffectedStacks(SpellTargeting | ||||
| 	else if(ti.type == CSpell::CREATURE) | ||||
| 	{ | ||||
| 		auto predicate = [=](const CStack * s){ | ||||
| 			const bool positiveToAlly = owner->isPositive() && s->owner == ctx.casterColor; | ||||
| 			const bool negativeToEnemy = owner->isNegative() && s->owner != ctx.casterColor; | ||||
| 			const bool positiveToAlly = owner->isPositive() && s->owner == ctx.caster->getOwner(); | ||||
| 			const bool negativeToEnemy = owner->isNegative() && s->owner != ctx.caster->getOwner(); | ||||
| 			const bool validTarget = s->isValidTarget(!ti.onlyAlive); //todo: this should be handled by spell class | ||||
|  | ||||
| 			//for single target spells select stacks covering destination tile | ||||
| @@ -796,7 +796,7 @@ void DefaultSpellMechanics::castMagicMirror(const SpellCastEnvironment* env, Bat | ||||
| 	//must be vector, as in Chain Lightning order matters | ||||
| 	std::vector<const CStack*> attackedCres; //CStack vector is somewhat more suitable than ID vector | ||||
|  | ||||
| 	auto creatures = owner->getAffectedStacks(parameters.cb, parameters.mode, parameters.casterColor, parameters.spellLvl, destination, parameters.caster); | ||||
| 	auto creatures = owner->getAffectedStacks(parameters.cb, parameters.mode, parameters.caster, parameters.spellLvl, destination); | ||||
| 	std::copy(creatures.begin(), creatures.end(), std::back_inserter(attackedCres)); | ||||
|  | ||||
| 	logGlobal->debugStream() << "will affect: " << attackedCres.size() << " stacks"; | ||||
|   | ||||
| @@ -153,9 +153,9 @@ std::vector<BattleHex> CSpell::rangeInHexes(BattleHex centralHex, ui8 schoolLvl, | ||||
| 	return mechanics->rangeInHexes(centralHex,schoolLvl,side,outDroppedHexes); | ||||
| } | ||||
|  | ||||
| std::set<const CStack *> CSpell::getAffectedStacks(const CBattleInfoCallback * cb, ECastingMode::ECastingMode mode, PlayerColor casterColor, int spellLvl, BattleHex destination, const ISpellCaster * caster) const | ||||
| std::set<const CStack *> CSpell::getAffectedStacks(const CBattleInfoCallback * cb, ECastingMode::ECastingMode mode, const ISpellCaster * caster, int spellLvl, BattleHex destination) const | ||||
| { | ||||
| 	ISpellMechanics::SpellTargetingContext ctx(this, cb,mode,casterColor,spellLvl,destination); | ||||
| 	ISpellMechanics::SpellTargetingContext ctx(this, cb, mode, caster, spellLvl, destination); | ||||
|  | ||||
| 	std::set<const CStack* > attackedCres = mechanics->getAffectedStacks(ctx); | ||||
|  | ||||
|   | ||||
| @@ -218,7 +218,7 @@ public: | ||||
| 	ui32 calculateDamage(const ISpellCaster * caster, const CStack * affectedCreature, int spellSchoolLevel, int usedSpellPower) const; | ||||
|  | ||||
| 	///selects from allStacks actually affected stacks | ||||
| 	std::set<const CStack *> getAffectedStacks(const CBattleInfoCallback * cb, ECastingMode::ECastingMode mode, PlayerColor casterColor, int spellLvl, BattleHex destination, const ISpellCaster * caster) const; | ||||
| 	std::set<const CStack *> getAffectedStacks(const CBattleInfoCallback * cb, ECastingMode::ECastingMode mode, const ISpellCaster * caster, int spellLvl, BattleHex destination) const; | ||||
|  | ||||
| 	si32 getCost(const int skillLevel) const; | ||||
|  | ||||
|   | ||||
| @@ -91,11 +91,11 @@ public: | ||||
| 		CSpell::TargetInfo ti; | ||||
| 		ECastingMode::ECastingMode mode; | ||||
| 		BattleHex destination; | ||||
| 		PlayerColor casterColor; | ||||
| 		const ISpellCaster * caster; | ||||
| 		int schoolLvl; | ||||
|  | ||||
| 		SpellTargetingContext(const CSpell * s, const CBattleInfoCallback * c, ECastingMode::ECastingMode m, PlayerColor cc, int lvl, BattleHex dest) | ||||
| 			: cb(c), ti(s,lvl, m), mode(m), destination(dest), casterColor(cc), schoolLvl(lvl) | ||||
| 		SpellTargetingContext(const CSpell * s, const CBattleInfoCallback * c, ECastingMode::ECastingMode m, const ISpellCaster * caster_, int lvl, BattleHex dest) | ||||
| 			: cb(c), ti(s,lvl, m), mode(m), destination(dest), caster(caster_), schoolLvl(lvl) | ||||
| 		{}; | ||||
|  | ||||
| 	}; | ||||
|   | ||||
| @@ -842,7 +842,7 @@ void CGameHandler::prepareAttack(BattleAttack &bat, const CStack *att, const CSt | ||||
|  | ||||
| 		//TODO: should spell override creature`s projectile? | ||||
|  | ||||
| 		std::set<const CStack*> attackedCreatures = SpellID(bonus->subtype).toSpell()->getAffectedStacks(gs->curB, ECastingMode::SPELL_LIKE_ATTACK, att->owner, bonus->val, targetHex, att); | ||||
| 		std::set<const CStack*> attackedCreatures = SpellID(bonus->subtype).toSpell()->getAffectedStacks(gs->curB, ECastingMode::SPELL_LIKE_ATTACK, att, bonus->val, targetHex); | ||||
|  | ||||
| 		//TODO: get exact attacked hex for defender | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user