From b5c270082b7f7702c740e3e2e488ab2ba24fbc68 Mon Sep 17 00:00:00 2001 From: DjWarmonger Date: Tue, 10 Mar 2015 18:32:05 +0100 Subject: [PATCH] Added missing files. --- lib/spells/CDefaultSpellMechanics.h | 52 +++++++++++++++++++++++++++++ lib/spells/SpellMechanics.h | 19 +++++++++++ 2 files changed, 71 insertions(+) create mode 100644 lib/spells/CDefaultSpellMechanics.h create mode 100644 lib/spells/SpellMechanics.h diff --git a/lib/spells/CDefaultSpellMechanics.h b/lib/spells/CDefaultSpellMechanics.h new file mode 100644 index 000000000..48a83116e --- /dev/null +++ b/lib/spells/CDefaultSpellMechanics.h @@ -0,0 +1,52 @@ +/* + * CDefaultSpellMechanics.h, part of VCMI engine + * + * Authors: listed in file AUTHORS in main folder + * + * License: GNU General Public License v2.0 or later + * Full text of license available in license.txt file, in main folder + * + */ + +#pragma once + +#include "ISpellMechanics.h" + +class ISpellMechanics; +class BattleSpellCast; +class StacksInjured; + +struct SpellCastContext +{ + SpellCastContext(std::vector & attackedCres, BattleSpellCast & sc, StacksInjured & si): + attackedCres(attackedCres), sc(sc), si(si){}; + std::vector & attackedCres; + BattleSpellCast & sc; + StacksInjured & si; +}; + +class DLL_LINKAGE DefaultSpellMechanics : public ISpellMechanics +{ +public: + DefaultSpellMechanics(CSpell * s): ISpellMechanics(s){}; + + std::vector rangeInHexes(BattleHex centralHex, ui8 schoolLvl, ui8 side, bool * outDroppedHexes = nullptr) const override; + std::set getAffectedStacks(SpellTargetingContext & ctx) const override; + + ESpellCastProblem::ESpellCastProblem isImmuneByStack(const CGHeroInstance * caster, const CStack * obj) const override; + + virtual void applyBattle(BattleInfo * battle, const BattleSpellCast * packet) const override; + bool adventureCast(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override final; + void battleCast(const SpellCastEnvironment * env, BattleSpellCastParameters & parameters) const override; + +protected: + virtual void applyBattleEffects(const SpellCastEnvironment * env, BattleSpellCastParameters & parameters, SpellCastContext & ctx) const; + + virtual int calculateDuration(const CGHeroInstance * caster, int usedSpellPower) const; + + ///calculate healed HP for all spells casted by hero + ui32 calculateHealedHP(const CGHeroInstance * caster, const CStack * stack, const CStack * sacrificedStack) const; + + ///actual adventure cast implementation + virtual bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const; +}; diff --git a/lib/spells/SpellMechanics.h b/lib/spells/SpellMechanics.h new file mode 100644 index 000000000..62b5283f3 --- /dev/null +++ b/lib/spells/SpellMechanics.h @@ -0,0 +1,19 @@ +/* +* SpellMechanics.h, part of VCMI engine +* +* Authors: listed in file AUTHORS in main folder +* +* License: GNU General Public License v2.0 or later +* Full text of license available in license.txt file, in main folder +* +*/ + +#pragma once + +#include "CSpellHandler.h" + +#include "ISpellMechanics.h" +#include "CDefaultSpellMechanics.h" +#include "AdventureSpellMechanics.h" +#include "BattleSpellMechanics.h" +#include "CreatureSpellMechanics.h" \ No newline at end of file