From 8581934ba2f8ae80073cfabd08834df39a9c16bd Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 21 Mar 2016 15:07:40 +0300 Subject: Move status effects start/end calls into separate functions in actorsprite. --- src/being/actorsprite.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/being/actorsprite.h | 11 +++++++++++ 2 files changed, 49 insertions(+) (limited to 'src/being') diff --git a/src/being/actorsprite.cpp b/src/being/actorsprite.cpp index e73397145..f444bdd71 100644 --- a/src/being/actorsprite.cpp +++ b/src/being/actorsprite.cpp @@ -212,6 +212,44 @@ void ActorSprite::setStatusEffectBlock(const int offset, } } +void ActorSprite::setStatusEffectOpitons(const uint32_t option, + const uint32_t opt1, + const uint32_t opt2, + const uint32_t opt3) +{ + uint32_t statusEffects = opt2; + statusEffects |= option << 16; + + setStunMode(opt1); + setStatusEffectBlock(0, + CAST_U16((statusEffects >> 16) & 0xffffU)); + setStatusEffectBlock(16, + CAST_U16(statusEffects & 0xffffU)); + setStatusEffectBlock(32, + opt3); +} + +void ActorSprite::setStatusEffectOpitons(const uint32_t option, + const uint32_t opt1, + const uint32_t opt2) +{ + uint32_t statusEffects = opt2; + statusEffects |= option << 16; + + setStunMode(opt1); + setStatusEffectBlock(0, + CAST_U16((statusEffects >> 16) & 0xffffU)); + setStatusEffectBlock(16, + CAST_U16(statusEffects & 0xffffU)); +} + +void ActorSprite::setStatusEffectOpiton0(const uint32_t option) +{ + const uint32_t statusEffects = option << 16; + setStatusEffectBlock(0, + CAST_U16((statusEffects >> 16) & 0xffff)); +} + void ActorSprite::updateStunMode(const int oldMode, const int newMode) { handleStatusEffect(StatusEffect::getStatusEffect( diff --git a/src/being/actorsprite.h b/src/being/actorsprite.h index 68964d04d..5c5f5a80d 100644 --- a/src/being/actorsprite.h +++ b/src/being/actorsprite.h @@ -120,6 +120,17 @@ class ActorSprite notfinal : public CompoundSprite, public Actor void setStatusEffect(const int index, const Enable active); + void setStatusEffectOpitons(const uint32_t option, + const uint32_t opt1, + const uint32_t opt2, + const uint32_t opt3); + + void setStatusEffectOpitons(const uint32_t option, + const uint32_t opt1, + const uint32_t opt2); + + void setStatusEffectOpiton0(const uint32_t option); + /** * A status effect block is a 16 bit mask of status effects. We assign * each such flag a block ID of offset + bitnr. -- cgit v1.2.3-70-g09d2