From 8c607870c066d5b13cd98f6a6ccd196f48acb465 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 11:26:54 +0200 Subject: [PATCH 01/10] test commit --- apps/openmw/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index df52faab1..f3b5c77bb 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -342,7 +342,7 @@ private: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { std::streambuf* old_rdbuf = std::cout.rdbuf (); - + std::cout << "Testing stuff in the new branch!"; int ret = 0; #if defined(_DEBUG) // Redirect cout to VS debug output when running in debug mode From d5b8d4ef49d72c8a9663129ac4dc11b7e7b82d90 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 11:30:17 +0200 Subject: [PATCH 02/10] Revert "test commit" This reverts commit 8c607870c066d5b13cd98f6a6ccd196f48acb465. reverting the test commit in the test branch --- apps/openmw/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index f3b5c77bb..df52faab1 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -342,7 +342,7 @@ private: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { std::streambuf* old_rdbuf = std::cout.rdbuf (); - std::cout << "Testing stuff in the new branch!"; + int ret = 0; #if defined(_DEBUG) // Redirect cout to VS debug output when running in debug mode From b1259ca15c71d9dcb95b6204ec4dbb106732b795 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:25:33 +0200 Subject: [PATCH 03/10] 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); From b4ee01e69113c2f2262099f15cab84aebb1e247e Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:26:59 +0200 Subject: [PATCH 04/10] missing file --- apps/openmw/mwinput/inputmanager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 3721d1043..7b0481f18 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -65,6 +65,8 @@ namespace MWInput A_QuickLoad, A_QuickMenu, A_GameMenu, + A_ToggleWeapon, + A_ToggleSpell, A_LAST // Marker for the last item }; From c1afd534fc292ee441cab56fbb4d1627f1166f78 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 12:37:59 +0200 Subject: [PATCH 05/10] all stuff added --- apps/openmw/mwinput/inputmanager.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 7b0481f18..4030eb902 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -88,6 +88,24 @@ namespace MWInput /* InputImpl Methods */ + void toggleSpell() + { + DrawState state = player.getDrawState(); + if(state == DrawState_Weapon || state == DrawState_Nothing) + player.setDrawState(DrawState_Spell); + else + player.setDrawState(DrawState_Nothing); + } + + void toggleWeapon() + { + DrawState state = player.getDrawState(); + if(state == DrawState_Spell || state == DrawState_Nothing) + player.setDrawState(DrawState_Weapon); + else + player.setDrawState(DrawState_Nothing); + } + void screenshot() { mEngine.screenshot(); @@ -199,7 +217,10 @@ namespace MWInput "Auto Move"); disp->funcs.bind(A_ToggleWalk, boost::bind(&InputImpl::toggleWalking, this), "Toggle Walk/Run"); - + disp->funcs.bind(A_ToggleWeapon,boost::bind(&InputImpl::toggleWeapon,this), + "Draw Weapon"); + disp->funcs.bind(A_ToggleSpell,boost::bind(&InputImpl::toggleSpell,this), + "Ready hands"); // Add the exit listener ogre.getRoot()->addFrameListener(&exit); @@ -244,6 +265,8 @@ namespace MWInput disp->bind(A_AutoMove, KC_Z); disp->bind(A_ToggleSneak, KC_X); disp->bind(A_ToggleWalk, KC_C); + disp->bind(A_ToggleWeapon,KC_F); + disp->bind(A_ToggleSpell,KC_R); // Key bindings for polled keys // NOTE: These keys are constantly being polled. Only add keys that must be checked each frame. From 15526d6110327a32d105c3212569e0033aed94b4 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 13:17:16 +0200 Subject: [PATCH 06/10] only fists support lacks --- apps/openmw/mwinput/inputmanager.cpp | 14 ++++++++++++++ apps/openmw/mwworld/player.cpp | 2 ++ 2 files changed, 16 insertions(+) diff --git a/apps/openmw/mwinput/inputmanager.cpp b/apps/openmw/mwinput/inputmanager.cpp index 4030eb902..bd27de029 100644 --- a/apps/openmw/mwinput/inputmanager.cpp +++ b/apps/openmw/mwinput/inputmanager.cpp @@ -92,18 +92,32 @@ namespace MWInput { DrawState state = player.getDrawState(); if(state == DrawState_Weapon || state == DrawState_Nothing) + { player.setDrawState(DrawState_Spell); + std::cout << "Player has now readied his hands for spellcasting!\n"; + } else + { player.setDrawState(DrawState_Nothing); + std::cout << "Player does not have any kind of attack ready now.\n"; + } + } void toggleWeapon() { DrawState state = player.getDrawState(); if(state == DrawState_Spell || state == DrawState_Nothing) + { player.setDrawState(DrawState_Weapon); + std::cout << "Player is now drawing his weapon.\n"; + } else + { player.setDrawState(DrawState_Nothing); + std::cout << "Player does not have any kind of attack ready now.\n"; + } + } void screenshot() diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index a3e8e46c0..b333d106a 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -47,10 +47,12 @@ namespace MWWorld delete mClass; mClass = new_class; } + void Player::setDrawState(const DrawState& value) { mDrawState = value; } + void Player::setAutoMove (bool enable) { MWWorld::Ptr ptr = getPlayer(); From c589cbd4ff12fcf98660e50ee9e318b742757e82 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 13:25:28 +0200 Subject: [PATCH 07/10] enum bug fix --- apps/openmw/mwmechanics/npcstats.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/npcstats.hpp b/apps/openmw/mwmechanics/npcstats.hpp index cd7c63f99..7c5d37972 100644 --- a/apps/openmw/mwmechanics/npcstats.hpp +++ b/apps/openmw/mwmechanics/npcstats.hpp @@ -27,7 +27,7 @@ namespace MWMechanics DrawState mDrawState; NpcStats() : mForceRun (false), mForceSneak (false), mRun (false), mSneak (false), - mCombat (false) , mDrawState(DrawState::DrawState_Nothing) {} + mCombat (false) , mDrawState(DrawState_Nothing) {} }; } From 23cc1d17ca56950d8aeca6c9ea5d30dc49b01713 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 13:28:34 +0200 Subject: [PATCH 08/10] missing ; added --- apps/openmw/mwmechanics/drawstate.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwmechanics/drawstate.hpp b/apps/openmw/mwmechanics/drawstate.hpp index 3ea115d42..ded25f8d5 100644 --- a/apps/openmw/mwmechanics/drawstate.hpp +++ b/apps/openmw/mwmechanics/drawstate.hpp @@ -3,9 +3,9 @@ enum DrawState { - DrawState_Weapon, - DrawState_Spell, - DrawState_Nothing -} + DrawState_Weapon = 0, + DrawState_Spell = 1, + DrawState_Nothing = 2, +}; #endif From 9893e4b38484cb9806af407a9f52d8a536542687 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 19:43:04 +0200 Subject: [PATCH 09/10] made player respect NpcStats for mDrawState --- apps/openmw/mwworld/player.cpp | 12 ++++++++++-- apps/openmw/mwworld/player.hpp | 5 ++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index b333d106a..d24780ec1 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -4,6 +4,7 @@ #include "../mwrender/player.hpp" #include "../mwmechanics/movement.hpp" +#include "../mwmechanics/npcstats.hpp" #include "world.hpp" #include "class.hpp" @@ -12,7 +13,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) , mDrawState(DrawState_Nothing) + mAutoMove (false), mForwardBackward (0) { mPlayer.base = player; mPlayer.ref.refID = "player"; @@ -50,7 +51,8 @@ namespace MWWorld void Player::setDrawState(const DrawState& value) { - mDrawState = value; + MWWorld::Ptr ptr = getPlayer(); + MWWorld::Class::get(ptr).getNpcStats(ptr).mDrawState = value; } void Player::setAutoMove (bool enable) @@ -94,4 +96,10 @@ namespace MWWorld MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Run, !running); } + + DrawState Player::getDrawState() + { + MWWorld::Ptr ptr = getPlayer(); + return MWWorld::Class::get(ptr).getNpcStats(ptr).mDrawState; + } } diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index f235140f8..8dcd9fcc6 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -20,7 +20,7 @@ namespace MWWorld class World; /// \brief NPC object representing the player and additional player data - class Player + class Player { ESMS::LiveCellRef mPlayer; MWWorld::Ptr::CellStore *mCellStore; @@ -33,7 +33,6 @@ namespace MWWorld ESM::Class *mClass; bool mAutoMove; int mForwardBackward; - DrawState mDrawState; public: Player(MWRender::Player *renderer, const ESM::NPC *player, MWWorld::World& world); @@ -110,7 +109,7 @@ namespace MWWorld return mAutoMove; } - DrawState getDrawState() { return mDrawState; } + DrawState getDrawState(); void setAutoMove (bool enable); From db928dcb2ffae1a12240d9dc0567c677d3d5df57 Mon Sep 17 00:00:00 2001 From: Aleksandar Jovanov Date: Sun, 8 Apr 2012 19:44:11 +0200 Subject: [PATCH 10/10] put an opening bracket on a new line --- apps/openmw/mwworld/class.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/class.cpp b/apps/openmw/mwworld/class.cpp index 9d766909f..ae12a2ab9 100644 --- a/apps/openmw/mwworld/class.cpp +++ b/apps/openmw/mwworld/class.cpp @@ -26,7 +26,9 @@ namespace MWWorld { } - void Class::insertObject(const Ptr& ptr, MWWorld::PhysicsSystem& physics, MWWorld::Environment& environment) const{ + + void Class::insertObject(const Ptr& ptr, MWWorld::PhysicsSystem& physics, MWWorld::Environment& environment) const + { }