From b1259ca15c71d9dcb95b6204ec4dbb106732b795 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:25:33 +0200 Subject: [PATCH] added a 'backend' for NPC/Player draw state --- apps/openmw/mwmechanics/drawstate.hpp | 11 +++++++++++ apps/openmw/mwmechanics/npcstats.hpp | 5 +++-- apps/openmw/mwworld/player.cpp | 7 +++++-- apps/openmw/mwworld/player.hpp | 8 +++++++- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 apps/openmw/mwmechanics/drawstate.hpp diff --git a/apps/openmw/mwmechanics/drawstate.hpp b/apps/openmw/mwmechanics/drawstate.hpp new file mode 100644 index 000000000..3ea115d42 --- /dev/null +++ b/apps/openmw/mwmechanics/drawstate.hpp @@ -0,0 +1,11 @@ +#ifndef GAME_MWMECHANICS_DRAWSTATE_H +#define GAME_MWMECHANICS_DRAWSTATE_H + +enum DrawState +{ + DrawState_Weapon, + DrawState_Spell, + DrawState_Nothing +} + +#endif diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index aeb5f56d5..cd7c63f99 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -4,13 +4,13 @@ #include #include "stat.hpp" +#include "drawstate.hpp" namespace MWMechanics { /// \brief Additional stats for NPCs /// /// For non-NPC-specific stats, see the CreatureStats struct. - struct NpcStats { // NPCs other than the player can only have one faction. But for the sake of consistency @@ -24,9 +24,10 @@ namespace MWMechanics bool mRun; bool mSneak; bool mCombat; + DrawState mDrawState; NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), - mCombat (false) {} + mCombat (false) , mDrawState(DrawState::DrawState_Nothing) {} }; } diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 5bfb82138..a3e8e46c0 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -12,7 +12,7 @@ namespace MWWorld { Player::Player (MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world) : mCellStore (0), mRenderer (renderer), mWorld (world), mClass (0), - mAutoMove (false), mForwardBackward (0) + mAutoMove (false), mForwardBackward (0) , mDrawState(DrawState_Nothing) { mPlayer.base = player; mPlayer.ref.refID = "player"; @@ -47,7 +47,10 @@ namespace MWWorld delete mClass; mClass = new_class; } - + void Player::setDrawState(const DrawState& value) + { + mDrawState = value; + } void Player::setAutoMove (bool enable) { MWWorld::Ptr ptr = getPlayer(); diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index 01c71da43..f235140f8 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -8,6 +8,8 @@ #include "../mwworld/refdata.hpp" #include "../mwworld/ptr.hpp" +#include "../mwmechanics/drawstate.hpp" + namespace MWRender { class Player; @@ -31,7 +33,7 @@ namespace MWWorld ESM::Class *mClass; bool mAutoMove; int mForwardBackward; - + DrawState mDrawState; public: Player(MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world); @@ -76,6 +78,8 @@ namespace MWWorld void setClass (const ESM::Class& class_); + void setDrawState(const DrawState& state); + std::string getName() const { return mName; @@ -106,6 +110,8 @@ namespace MWWorld return mAutoMove; } + DrawState getDrawState() { return mDrawState; } + void setAutoMove (bool enable); void setLeftRight (int value);