From 2d8f0949a475d7dcf7b7854d9f4c601c46f8a954 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 14 Mar 2013 20:27:16 +0100 Subject: [PATCH] Always run key (Y) --- apps/openmw/mwclass/npc.cpp | 18 ++++++++++++++++++ apps/openmw/mwclass/npc.hpp | 3 +++ apps/openmw/mwinput/inputmanagerimp.cpp | 5 ++++- apps/openmw/mwinput/inputmanagerimp.hpp | 2 +- apps/openmw/mwworld/class.cpp | 5 +++++ apps/openmw/mwworld/class.hpp | 3 +++ apps/openmw/mwworld/player.cpp | 4 ++-- 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index d4e5e5cd6..77b53ff1d 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -322,6 +322,24 @@ namespace MWClass return false; } + bool Npc::getForceStance(const MWWorld::Ptr& ptr, Stance stance) const + { + MWMechanics::NpcStats& stats = getNpcStats (ptr); + + switch (stance) + { + case Run: + return stats.getMovementFlag (MWMechanics::NpcStats::Flag_ForceRun); + case Sneak: + return stats.getMovementFlag (MWMechanics::NpcStats::Flag_ForceSneak); + + case Combat: + return false; + } + + return false; + } + float Npc::getSpeed(const MWWorld::Ptr& ptr) const { const MWBase::World *world = MWBase::Environment::get().getWorld(); diff --git a/apps/openmw/mwclass/npc.hpp b/apps/openmw/mwclass/npc.hpp index f41edb0df..4698a1b9f 100644 --- a/apps/openmw/mwclass/npc.hpp +++ b/apps/openmw/mwclass/npc.hpp @@ -76,6 +76,9 @@ namespace MWClass virtual void setForceStance (const MWWorld::Ptr& ptr, Stance stance, bool force) const; ///< Force or unforce a stance. + virtual bool getForceStance (const MWWorld::Ptr& ptr, Stance stance) const; + ///< Check if a stance forced. + virtual void setStance (const MWWorld::Ptr& ptr, Stance stance, bool set) const; ///< Set or unset a stance. diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index f18c02a0e..72e990283 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -193,7 +193,7 @@ namespace MWInput case A_AutoMove: toggleAutoMove (); break; - case A_ToggleWalk: + case A_AlwaysRun: toggleWalking (); break; case A_ToggleWeapon: @@ -768,6 +768,7 @@ namespace MWInput defaultKeyBindings[A_QuickKey10] = OIS::KC_0; defaultKeyBindings[A_Screenshot] = OIS::KC_SYSRQ; defaultKeyBindings[A_ToggleHUD] = OIS::KC_F12; + defaultKeyBindings[A_AlwaysRun] = OIS::KC_Y; std::map defaultMouseButtonBindings; defaultMouseButtonBindings[A_Inventory] = OIS::MB_Right; @@ -834,6 +835,7 @@ namespace MWInput descriptions[A_QuickKey8] = "sQuick8Cmd"; descriptions[A_QuickKey9] = "sQuick9Cmd"; descriptions[A_QuickKey10] = "sQuick10Cmd"; + descriptions[A_AlwaysRun] = "sAlways_Run"; if (descriptions[action] == "") return ""; // not configurable @@ -865,6 +867,7 @@ namespace MWInput ret.push_back(A_MoveRight); ret.push_back(A_TogglePOV); ret.push_back(A_Run); + ret.push_back(A_AlwaysRun); ret.push_back(A_Sneak); ret.push_back(A_Activate); ret.push_back(A_ToggleWeapon); diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp index 8bb20b7be..34c832756 100644 --- a/apps/openmw/mwinput/inputmanagerimp.hpp +++ b/apps/openmw/mwinput/inputmanagerimp.hpp @@ -217,7 +217,7 @@ namespace MWInput A_CycleWeaponLeft,//Cycling through weapons A_CycleWeaponRight, A_ToggleSneak, //Toggles Sneak - A_ToggleWalk, //Toggle Walking/Running + A_AlwaysRun, //Toggle Walking/Running A_Sneak, A_QuickSave, diff --git a/apps/openmw/mwworld/class.cpp b/apps/openmw/mwworld/class.cpp index 71b24b65d..2bc4941a2 100644 --- a/apps/openmw/mwworld/class.cpp +++ b/apps/openmw/mwworld/class.cpp @@ -117,6 +117,11 @@ namespace MWWorld return false; } + bool Class::getForceStance (const Ptr& ptr, Stance stance) const + { + return false; + } + float Class::getSpeed (const Ptr& ptr) const { return 0; diff --git a/apps/openmw/mwworld/class.hpp b/apps/openmw/mwworld/class.hpp index 1a6a16ca0..d36e3bc58 100644 --- a/apps/openmw/mwworld/class.hpp +++ b/apps/openmw/mwworld/class.hpp @@ -131,6 +131,9 @@ namespace MWWorld virtual void setForceStance (const Ptr& ptr, Stance stance, bool force) const; ///< Force or unforce a stance. + virtual bool getForceStance (const Ptr& ptr, Stance stance) const; + ///< Check if a stance forced. + virtual void setStance (const Ptr& ptr, Stance stance, bool set) const; ///< Set or unset a stance. diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 03dd1abc7..5407e3a68 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -81,9 +81,9 @@ namespace MWWorld { MWWorld::Ptr ptr = getPlayer(); - bool running = MWWorld::Class::get (ptr).getStance (ptr, MWWorld::Class::Run, true); + bool running = MWWorld::Class::get (ptr).getForceStance(ptr, MWWorld::Class::Run); - MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Run, !running); + MWWorld::Class::get (ptr).setForceStance(ptr, MWWorld::Class::Run, !running); } void Player::setSneak(bool sneak)