From 076f98cbba263a572e10995192814ad3e7a37c80 Mon Sep 17 00:00:00 2001 From: gus Date: Mon, 15 Jul 2013 16:37:25 +0100 Subject: [PATCH] change way animations keys are handled (thanks KittyCat!) --- apps/openmw/mwmechanics/character.cpp | 15 +++++++++++++-- apps/openmw/mwmechanics/creaturestats.cpp | 11 ----------- apps/openmw/mwmechanics/creaturestats.hpp | 5 ----- apps/openmw/mwrender/animation.cpp | 7 ------- 4 files changed, 13 insertions(+), 25 deletions(-) diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 4b95999bfa..35f2ae207b 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -238,7 +238,7 @@ void CharacterController::update(float duration, Movement &movement) } else if(!cls.getCreatureStats(mPtr).isDead()) { - std::list> lastKeys = cls.getCreatureStats(mPtr).getLastAnimKey(); + /*std::list> lastKeys = cls.getCreatureStats(mPtr).getLastAnimKey(); for(std::list>::iterator it = cls.getCreatureStats(mPtr).getLastAnimKey().begin(); it!=cls.getCreatureStats(mPtr).getLastAnimKey().end();) { @@ -256,7 +256,7 @@ void CharacterController::update(float duration, Movement &movement) if(lastKey.first.compare(off, len, "chop large follow stop") == 0){ mUpperBodyState = UpperCharState_WeapEquiped;std::cout << "FINISHED";} } it = cls.getCreatureStats(mPtr).getLastAnimKey().erase(it); - } + }*/ MWBase::World *world = MWBase::Environment::get().getWorld(); @@ -478,6 +478,7 @@ void CharacterController::update(float duration, Movement &movement) if(mUpperBodyState == UpperCharState_WeapEquiped) { std::string weapgroup; + std::cout << "attaquing"; getWeaponGroup(mWeaponType, weapgroup); mAnimation->play(weapgroup, Priority_Weapon, MWRender::Animation::Group_UpperBody, true, @@ -490,6 +491,16 @@ void CharacterController::update(float duration, Movement &movement) mUpperBodyState = UpperCharState_ChopReadying; } + std::string weapgroup; + getWeaponGroup(mWeaponType, weapgroup); + std::string start; + std::string stop; + float complete; + bool animPlaying = mAnimation->getInfo(weapgroup,&complete,&start,&stop); + if(mUpperBodyState == UpperCharState_EquipingWeap && !animPlaying) mUpperBodyState = UpperCharState_WeapEquiped; + if(mUpperBodyState == UpperCharState_UnEquipingWeap && !animPlaying) mUpperBodyState = UpperCharState_Nothing; + if(mUpperBodyState == UpperCharState_ChopReadying && !animPlaying) mUpperBodyState = UpperCharState_WeapEquiped; + MWWorld::ContainerStoreIterator torch = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft); if(torch != inv.end() && torch->getTypeName() == typeid(ESM::Light).name()) { diff --git a/apps/openmw/mwmechanics/creaturestats.cpp b/apps/openmw/mwmechanics/creaturestats.cpp index f4f208bcfc..8b4da03d2a 100644 --- a/apps/openmw/mwmechanics/creaturestats.cpp +++ b/apps/openmw/mwmechanics/creaturestats.cpp @@ -96,11 +96,6 @@ namespace MWMechanics return mAttackingOrSpell; } - std::list> &CreatureStats::getLastAnimKey() - { - return mLastAnimKeys; - } - int CreatureStats::getLevel() const { return mLevel; @@ -207,12 +202,6 @@ namespace MWMechanics mAttackingOrSpell = attackingOrSpell; } - /*void CreatureStats::setLastAnimKey(std::string key,std::string animGroup) - { - mLastAnimKey = key; - mLastAnimGroup = animGroup; - }*/ - void CreatureStats::setAiSetting (int index, int value) { assert (index>=0 && index<4); diff --git a/apps/openmw/mwmechanics/creaturestats.hpp b/apps/openmw/mwmechanics/creaturestats.hpp index 7bb1dc4391..7423e76b2b 100644 --- a/apps/openmw/mwmechanics/creaturestats.hpp +++ b/apps/openmw/mwmechanics/creaturestats.hpp @@ -35,7 +35,6 @@ namespace MWMechanics bool mAttacked; bool mHostile; bool mAttackingOrSpell;//for the player, this is true if the left mouse button is pressed, false if not. - std::list> mLastAnimKeys; public: CreatureStats(); @@ -58,8 +57,6 @@ namespace MWMechanics const bool & getAttackingOrSpell() const; - std::list> & getLastAnimKey(); - int getLevel() const; int getAiSetting (int index) const; @@ -91,8 +88,6 @@ namespace MWMechanics void setAttackingOrSpell(const bool &attackingOrSpell); - //void addLastAnimKey(std::string key,std::string animGroup); - void setLevel(int level); void setAiSetting (int index, int value); diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index db9736eb90..853ffc3752 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -15,11 +15,6 @@ #include "../mwmechanics/character.hpp" - -//TODO: remove that and create a class interface -#include "../mwmechanics/creaturestats.hpp" -#include "../mwworld/class.hpp" - namespace MWRender { @@ -480,8 +475,6 @@ bool Animation::handleTextKey(AnimState &state, const std::string &groupname, co return true; } - MWWorld::Class::get(mPtr).getCreatureStats(mPtr).getLastAnimKey().push_back(std::pair(key->second,groupname)); - if(evt.compare(off, len, "equip attach") == 0) { showWeapons(true);