From b5842156801bd222189cd44b323cd2efaf4c44f0 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 1 Aug 2010 10:25:50 +0200 Subject: [PATCH] moved stats label <-> GMST text mapping from mwmechanics to mwgui; added missing stats window labels --- apps/openmw/engine.cpp | 22 +++---- apps/openmw/mwgui/mw_layouts.hpp | 62 ++++++++------------ apps/openmw/mwgui/window_manager.cpp | 7 +-- apps/openmw/mwgui/window_manager.hpp | 3 - apps/openmw/mwmechanics/mechanicsmanager.cpp | 23 -------- 5 files changed, 35 insertions(+), 82 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 93dd4c8b62..43a01b271e 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -37,7 +37,7 @@ void OMW::Engine::executeLocalScripts() MWScript::InterpreterContext interpreterContext (mEnvironment, &iter->second.getRefData().getLocals(), MWWorld::Ptr (iter->second)); mScriptManager->run (iter->first, interpreterContext); - + if (mEnvironment.mWorld->hasCellChanged()) break; } @@ -56,7 +56,7 @@ bool OMW::Engine::frameStarted(const Ogre::FrameEvent& evt) executeLocalScripts(); // This does not handle the case where a global script causes a cell // change, followed by a cell change in a local script during the same // frame. - + // passing of time if (mEnvironment.mWindowManager->getMode()==MWGui::GM_Game) mEnvironment.mWorld->advanceTime ( @@ -64,7 +64,7 @@ bool OMW::Engine::frameStarted(const Ogre::FrameEvent& evt) if (changed) // keep change flag for another frame, if cell changed happend in local script mEnvironment.mWorld->markCellAsUnchanged(); - + // update actors mEnvironment.mMechanicsManager->update(); @@ -77,7 +77,7 @@ OMW::Engine::Engine() , mNewGame (false) , mScriptManager (0) , mScriptContext (0) -{ +{ } OMW::Engine::~Engine() @@ -151,7 +151,7 @@ void OMW::Engine::enableDebugMode() { mDebug = true; } - + void OMW::Engine::enableVerboseScripts() { mVerboseScripts = true; @@ -211,21 +211,19 @@ void OMW::Engine::go() mScriptContext->setExtensions (&mExtensions); mScriptManager = new MWScript::ScriptManager (mEnvironment.mWorld->getStore(), mVerboseScripts, - *mScriptContext); - + *mScriptContext); + mEnvironment.mGlobalScripts = new MWScript::GlobalScripts (mEnvironment.mWorld->getStore(), *mScriptManager); - + // Create game mechanics system mEnvironment.mMechanicsManager = new MWMechanics::MechanicsManager ( mEnvironment.mWorld->getStore(), *mEnvironment.mWindowManager); - - mEnvironment.mMechanicsManager->configureGUI(); // load cell ESM::Position pos; pos.pos[0] = pos.pos[1] = pos.pos[2] = 0; - pos.rot[0] = pos.rot[1] = pos.rot[2] = 0; + pos.rot[0] = pos.rot[1] = pos.rot[2] = 0; mEnvironment.mWorld->changeCell (mCellName, pos); // Sets up the input system @@ -241,5 +239,3 @@ void OMW::Engine::go() std::cout << "Quitting peacefully.\n"; } - - diff --git a/apps/openmw/mwgui/mw_layouts.hpp b/apps/openmw/mwgui/mw_layouts.hpp index ce4a1ae986..8f1d7affc2 100644 --- a/apps/openmw/mwgui/mw_layouts.hpp +++ b/apps/openmw/mwgui/mw_layouts.hpp @@ -1,6 +1,8 @@ #ifndef MWGUI_LAYOUTS_H #define MWGUI_LAYOUTS_H +#include + #include /* @@ -50,9 +52,6 @@ namespace MWGui // These are just demo values, you should replace these with // real calls from outside the class later. - setStats(60, 100, - 30, 100, - 80, 100); setWeapIcon("icons\\w\\tx_knife_iron.dds"); setWeapStatus(90, 100); setSpellIcon("icons\\s\\b_tx_s_rstor_health.dds"); @@ -182,18 +181,34 @@ namespace MWGui setText(tname, out.str().c_str()); } - StatsWindow() + StatsWindow (const ESMS::ESMStore& store) : Layout("openmw_stats_window_layout.xml") { setCoord(0,0,498, 342); - setText("Health_str", "Health"); - setText("Magicka_str", "Magicka"); - setText("Fatigue_str", "Fatigue"); + const char *names[][2] = + { + { "Attrib1", "sAttributeStrength" }, + { "Attrib2", "sAttributeIntelligence" }, + { "Attrib3", "sAttributeWillpower" }, + { "Attrib4", "sAttributeAgility" }, + { "Attrib5", "sAttributeSpeed" }, + { "Attrib6", "sAttributeEndurance" }, + { "Attrib7", "sAttributePersonality" }, + { "Attrib8", "sAttributeLuck" }, + { "Health_str", "sHealth" }, + { "Magicka_str", "sMagic" }, + { "Fatigue_str", "sFatigue" }, + { "Level_str", "sLevel" }, + { "Race_str", "sRace" }, + { "Class_str", "sClass" }, + { 0, 0 } + }; - setText("Level_str", "Level"); - setText("Race_str", "Race"); - setText("Class_str", "Class"); + for (int i=0; names[i][0]; ++i) + { + setText (names[i][0], store.gameSettings.find (names[i][1])->str); + } // These are just demo values, you should replace these with // real calls from outside the class later. @@ -202,15 +217,6 @@ namespace MWGui setText("LevelText", "5"); setText("RaceText", "Wood Elf"); setText("ClassText", "Pilgrim"); - - setText("AttribVal1", "30"); - setText("AttribVal2", "40"); - setText("AttribVal3", "30"); - setText("AttribVal4", "75"); - setText("AttribVal5", "50"); - setText("AttribVal6", "40"); - setText("AttribVal7", "50"); - setText("AttribVal8", "40"); } void setPlayerName(const std::string& playerName) @@ -218,24 +224,6 @@ namespace MWGui mMainWidget->setCaption(playerName); } - /// Set label text for the value with the given ID. - void setLabel (const std::string& id, const std::string& label) - { - static const char *ids[] = - { - "Attrib1", "Attrib2", "Attrib3", "Attrib4", "Attrib5", "Attrib6", - "Attrib7", "Attrib8", - 0 - }; - - for (int i=0; ids[i]; ++i) - if (ids[i]==id) - { - setText (id, label); - break; - } - } - /// Set value for the given ID. void setValue (const std::string& id, const MWMechanics::Stat& value) { diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index db4eb6f41d..726cd5bd8d 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -19,7 +19,7 @@ WindowManager::WindowManager(MyGUI::Gui *_gui, MWWorld::Environment& environment hud = new HUD(w,h); menu = new MainMenu(w,h); map = new MapWindow(); - stats = new StatsWindow(); + stats = new StatsWindow (environment.mWorld->getStore()); console = new Console(w,h, environment, extensions); // The HUD is always on @@ -85,11 +85,6 @@ void WindowManager::updateVisible() // All other modes are ignored } -void WindowManager::setLabel (const std::string& id, const std::string& label) -{ - stats->setLabel (id, label); -} - void WindowManager::setValue (const std::string& id, const MWMechanics::Stat& value) { stats->setValue (id, value); diff --git a/apps/openmw/mwgui/window_manager.hpp b/apps/openmw/mwgui/window_manager.hpp index aa1a8cbf96..a2e664d26d 100644 --- a/apps/openmw/mwgui/window_manager.hpp +++ b/apps/openmw/mwgui/window_manager.hpp @@ -139,9 +139,6 @@ namespace MWGui MyGUI::Gui* getGui() const { return gui; } - void setLabel (const std::string& id, const std::string& label); - ///< Set label text for the value with the given ID. - void setValue (const std::string& id, const MWMechanics::Stat& value); ///< Set value for the given ID. diff --git a/apps/openmw/mwmechanics/mechanicsmanager.cpp b/apps/openmw/mwmechanics/mechanicsmanager.cpp index 0c8cce8bd3..310695959c 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.cpp @@ -14,29 +14,6 @@ namespace MWMechanics } - void MechanicsManager::configureGUI() - { - const char *names[][2] = - { - { "Attrib1", "sAttributeStrength" }, - { "Attrib2", "sAttributeIntelligence" }, - { "Attrib3", "sAttributeWillpower" }, - { "Attrib4", "sAttributeAgility" }, - { "Attrib5", "sAttributeSpeed" }, - { "Attrib6", "sAttributeEndurance" }, - { "Attrib7", "sAttributePersonality" }, - { "Attrib8", "sAttributeLuck" }, - { 0, 0 } - }; - - for (int i=0; names[i][0]; ++i) - { - std::string label = mStore.gameSettings.find (names[i][1])->str; - - mWindowManager.setLabel (names[i][0], label); - } - } - void MechanicsManager::addActor (const MWWorld::Ptr& ptr) { mActors.insert (ptr);