From 69ca03c308d84abc7ffbccb0a880d121cad4428c Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 19 Jan 2014 09:43:41 +0100 Subject: [PATCH] Issue #777: Move DrawState to CreatureStats. All creatures can cast spells, and some creatures have weapons. --- apps/openmw/mwmechanics/aiwander.cpp | 6 ++---- apps/openmw/mwmechanics/creaturestats.cpp | 12 +++++++++++- apps/openmw/mwmechanics/creaturestats.hpp | 5 +++++ apps/openmw/mwmechanics/npcstats.cpp | 13 +------------ apps/openmw/mwmechanics/npcstats.hpp | 5 ----- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/apps/openmw/mwmechanics/aiwander.cpp b/apps/openmw/mwmechanics/aiwander.cpp index 853d0ff7b..9a78f1acd 100644 --- a/apps/openmw/mwmechanics/aiwander.cpp +++ b/apps/openmw/mwmechanics/aiwander.cpp @@ -7,8 +7,7 @@ #include "../mwbase/environment.hpp" #include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/dialoguemanager.hpp" -#include "../mwmechanics/npcstats.hpp" - +#include "creaturestats.hpp" #include namespace @@ -66,8 +65,7 @@ namespace MWMechanics bool AiWander::execute (const MWWorld::Ptr& actor,float duration) { - if (actor.getClass().isNpc()) - actor.getClass().getNpcStats(actor).setDrawState(DrawState_Nothing); + actor.getClass().getCreatureStats(actor).setDrawState(DrawState_Nothing); MWBase::World *world = MWBase::Environment::get().getWorld(); if(mDuration) { diff --git a/apps/openmw/mwmechanics/creaturestats.cpp b/apps/openmw/mwmechanics/creaturestats.cpp index 8d37e34c8..70e4bd989 100644 --- a/apps/openmw/mwmechanics/creaturestats.cpp +++ b/apps/openmw/mwmechanics/creaturestats.cpp @@ -16,7 +16,7 @@ namespace MWMechanics mAttackingOrSpell(false), mAttackType(AT_Chop), mIsWerewolf(false), mFallHeight(0), mRecalcDynamicStats(false), mKnockdown(false), mHitRecovery(false), - mMovementFlags(0) + mMovementFlags(0), mDrawState (DrawState_Nothing) { for (int i=0; i<4; ++i) mAiSettings[i] = 0; @@ -452,4 +452,14 @@ namespace MWMechanics return false; // shut up, compiler } + DrawState_ CreatureStats::getDrawState() const + { + return mDrawState; + } + + void CreatureStats::setDrawState(DrawState_ state) + { + mDrawState = state; + } + } diff --git a/apps/openmw/mwmechanics/creaturestats.hpp b/apps/openmw/mwmechanics/creaturestats.hpp index 308883fc5..0981522a5 100644 --- a/apps/openmw/mwmechanics/creaturestats.hpp +++ b/apps/openmw/mwmechanics/creaturestats.hpp @@ -10,6 +10,7 @@ #include "spells.hpp" #include "activespells.hpp" #include "aisequence.hpp" +#include "drawstate.hpp" namespace MWMechanics { @@ -18,6 +19,7 @@ namespace MWMechanics /// class CreatureStats { + DrawState_ mDrawState; AttributeValue mAttributes[8]; DynamicStat mDynamic[3]; // health, magicka, fatigue int mLevel; @@ -57,6 +59,9 @@ namespace MWMechanics public: CreatureStats(); + DrawState_ getDrawState() const; + void setDrawState(DrawState_ state); + bool needToRecalcDynamicStats(); void addToFallHeight(float height); diff --git a/apps/openmw/mwmechanics/npcstats.cpp b/apps/openmw/mwmechanics/npcstats.cpp index 293b078da..d18519168 100644 --- a/apps/openmw/mwmechanics/npcstats.cpp +++ b/apps/openmw/mwmechanics/npcstats.cpp @@ -22,8 +22,7 @@ #include "../mwbase/soundmanager.hpp" MWMechanics::NpcStats::NpcStats() -: mDrawState (DrawState_Nothing) -, mBounty (0) + : mBounty (0) , mLevelProgress(0) , mDisposition(0) , mReputation(0) @@ -36,16 +35,6 @@ MWMechanics::NpcStats::NpcStats() mSkillIncreases.resize (ESM::Attribute::Length, 0); } -MWMechanics::DrawState_ MWMechanics::NpcStats::getDrawState() const -{ - return mDrawState; -} - -void MWMechanics::NpcStats::setDrawState (DrawState_ state) -{ - mDrawState = state; -} - float MWMechanics::NpcStats::getAttackStrength() const { return mAttackStrength; diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index b89a2b4b3..bf76b80d6 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -7,7 +7,6 @@ #include #include "stat.hpp" -#include "drawstate.hpp" #include "creaturestats.hpp" @@ -30,7 +29,6 @@ namespace MWMechanics /// \note the faction key must be in lowercase std::map mFactionRank; - DrawState_ mDrawState; int mDisposition; SkillValue mSkill[27]; SkillValue mWerewolfSkill[27]; @@ -61,9 +59,6 @@ namespace MWMechanics int getProfit() const; void modifyProfit(int diff); - DrawState_ getDrawState() const; - void setDrawState (DrawState_ state); - /// When attacking, stores how strong the attack should be (0 = weakest, 1 = strongest) float getAttackStrength() const; void setAttackStrength(float value);