1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

WIP on SpellCastContext

This commit is contained in:
AlexVinS
2016-09-06 05:11:32 +03:00
parent 1d840a33a5
commit 9ee954edcc
3 changed files with 37 additions and 17 deletions

View File

@@ -136,6 +136,26 @@ void SpellCastContext::prepareBattleCast(const BattleSpellCastParameters & param
sc.manaGained = 0;
}
void SpellCastContext::addDamageToDisplay(const si32 value)
{
sc.dmgToDisplay += value;
}
void SpellCastContext::setDamageToDisplay(const si32 value)
{
sc.dmgToDisplay = value;
}
void SpellCastContext::sendCastPacket(const SpellCastEnvironment * env)
{
for(auto sta : attackedCres)
{
sc.affectedCres.insert(sta->ID);
}
env->sendAndApply(&sc);
}
///DefaultSpellMechanics
void DefaultSpellMechanics::applyBattle(BattleInfo * battle, const BattleSpellCast * packet) const
{
@@ -234,13 +254,9 @@ void DefaultSpellMechanics::battleCast(const SpellCastEnvironment * env, BattleS
}
}
for(auto cre : ctx.attackedCres)
{
ctx.sc.affectedCres.insert(cre->ID);
}
applyBattleEffects(env, parameters, ctx);
env->sendAndApply(&ctx.sc);
ctx.sendCastPacket(env);
if(parameters.mode == ECastingMode::HERO_CASTING)
{
@@ -421,7 +437,7 @@ void DefaultSpellMechanics::applyBattleEffects(const SpellCastEnvironment * env,
else
bsa.damageAmount = owner->calculateDamage(parameters.caster, attackedCre, parameters.effectLevel, parameters.effectPower) >> chainLightningModifier;
ctx.sc.dmgToDisplay += bsa.damageAmount;
ctx.addDamageToDisplay(bsa.damageAmount);
bsa.stackAttacked = (attackedCre)->ID;
if(parameters.mode == ECastingMode::ENCHANTER_CASTING) //multiple damage spells cast
@@ -720,14 +736,10 @@ void DefaultSpellMechanics::castMagicMirror(const SpellCastEnvironment* env, Bat
handleResistance(env, ctx.attackedCres, ctx.sc);
for(auto cre : ctx.attackedCres)
{
ctx.sc.affectedCres.insert(cre->ID);
}
applyBattleEffects(env, parameters, ctx);
env->sendAndApply(&ctx.sc);
ctx.sendCastPacket(env);
if(!ctx.si.stacks.empty()) //after spellcast info shows
env->sendAndApply(&ctx.si);