diff --git a/apps/openmw/mwgui/layouts.cpp b/apps/openmw/mwgui/layouts.cpp index ae829f77a..ba4b6236a 100644 --- a/apps/openmw/mwgui/layouts.cpp +++ b/apps/openmw/mwgui/layouts.cpp @@ -10,3 +10,115 @@ using namespace MWGui; + +HUD::HUD(int width, int height, bool fpsSwitch) + : Layout("openmw_hud_layout.xml") +{ + setCoord(0,0, width, height); + + // Energy bars + getWidget(health, "Health"); + getWidget(magicka, "Magicka"); + getWidget(stamina, "Stamina"); + + // Item and spell images and status bars + getWidget(weapImage, "WeapImage"); + getWidget(weapStatus, "WeapStatus"); + getWidget(spellImage, "SpellImage"); + getWidget(spellStatus, "SpellStatus"); + + getWidget(effectBox, "EffectBox"); + getWidget(effect1, "Effect1"); + + getWidget(minimap, "MiniMap"); + getWidget(compass, "Compass"); + + getWidget(crosshair, "Crosshair"); + + getWidget(fpsbox, "FPSBox"); + getWidget(fpscounter, "FPSCounter"); + + fpsbox->setVisible(fpsSwitch); + + compass->setImageTexture("textures\\compass.dds"); + crosshair->setImageTexture("textures\\target.dds"); + + // These are just demo values, you should replace these with + // real calls from outside the class later. + setWeapIcon("icons\\w\\tx_knife_iron.dds"); + setWeapStatus(90, 100); + setSpellIcon("icons\\s\\b_tx_s_rstor_health.dds"); + setSpellStatus(65, 100); + setEffect("icons\\s\\tx_s_chameleon.dds"); +} + +void HUD::setFPS(float fps) +{ + fpscounter->setCaption(boost::lexical_cast((int)fps)); +} + + +void HUD::setStats(int h, int hmax, int m, int mmax, int s, int smax) +{ + health->setProgressRange(hmax); + health->setProgressPosition(h); + magicka->setProgressRange(mmax); + magicka->setProgressPosition(m); + stamina->setProgressRange(smax); + stamina->setProgressPosition(s); +} + +void HUD::setWeapIcon(const char *str) +{ + weapImage->setImageTexture(str); +} + +void HUD::setSpellIcon(const char *str) +{ + spellImage->setImageTexture(str); +} + +void HUD::setWeapStatus(int s, int smax) +{ + weapStatus->setProgressRange(smax); + weapStatus->setProgressPosition(s); +} + +void HUD::setSpellStatus(int s, int smax) +{ + spellStatus->setProgressRange(smax); + spellStatus->setProgressPosition(s); +} + +void HUD::setEffect(const char *img) +{ + effect1->setImageTexture(img); +} + +void HUD::setValue(const std::string& id, const MWMechanics::DynamicStat& value) +{ + static const char *ids[] = + { + "HBar", "MBar", "FBar", 0 + }; + + for (int i=0; ids[i]; ++i) + if (ids[i]==id) + { + switch (i) + { + case 0: + health->setProgressRange (value.getModified()); + health->setProgressPosition (value.getCurrent()); + break; + case 1: + magicka->setProgressRange (value.getModified()); + magicka->setProgressPosition (value.getCurrent()); + break; + case 2: + stamina->setProgressRange (value.getModified()); + stamina->setProgressPosition (value.getCurrent()); + break; + } + } +} diff --git a/apps/openmw/mwgui/layouts.hpp b/apps/openmw/mwgui/layouts.hpp index 57aa8a06e..518eb5aa6 100644 --- a/apps/openmw/mwgui/layouts.hpp +++ b/apps/openmw/mwgui/layouts.hpp @@ -36,126 +36,23 @@ namespace MWGui class HUD : public OEngine::GUI::Layout { public: - HUD(int width, int height, bool fpsSwitch) - : Layout("openmw_hud_layout.xml") - { - setCoord(0,0, width, height); - - // Energy bars - getWidget(health, "Health"); - getWidget(magicka, "Magicka"); - getWidget(stamina, "Stamina"); - - // Item and spell images and status bars - getWidget(weapImage, "WeapImage"); - getWidget(weapStatus, "WeapStatus"); - getWidget(spellImage, "SpellImage"); - getWidget(spellStatus, "SpellStatus"); - - getWidget(effectBox, "EffectBox"); - getWidget(effect1, "Effect1"); - - getWidget(minimap, "MiniMap"); - getWidget(compass, "Compass"); - - getWidget(crosshair, "Crosshair"); - - getWidget(fpsbox, "FPSBox"); - getWidget(fpscounter, "FPSCounter"); - - fpsbox->setVisible(fpsSwitch); - - compass->setImageTexture("textures\\compass.dds"); - crosshair->setImageTexture("textures\\target.dds"); - - // These are just demo values, you should replace these with - // real calls from outside the class later. - setWeapIcon("icons\\w\\tx_knife_iron.dds"); - setWeapStatus(90, 100); - setSpellIcon("icons\\s\\b_tx_s_rstor_health.dds"); - setSpellStatus(65, 100); - setEffect("icons\\s\\tx_s_chameleon.dds"); - } - - void setFPS(float fps) - { - fpscounter->setCaption(boost::lexical_cast((int)fps)); - } - - void setStats(int h, int hmax, int m, int mmax, int s, int smax) - { - health->setProgressRange(hmax); - health->setProgressPosition(h); - magicka->setProgressRange(mmax); - magicka->setProgressPosition(m); - stamina->setProgressRange(smax); - stamina->setProgressPosition(s); - } - - void setWeapIcon(const char *str) - { weapImage->setImageTexture(str); } - void setSpellIcon(const char *str) - { spellImage->setImageTexture(str); } - - void setWeapStatus(int s, int smax) - { - weapStatus->setProgressRange(smax); - weapStatus->setProgressPosition(s); - } - void setSpellStatus(int s, int smax) - { - spellStatus->setProgressRange(smax); - spellStatus->setProgressPosition(s); - } - - void setEffect(const char *img) - { effect1->setImageTexture(img); } - - void setValue (const std::string& id, const MWMechanics::DynamicStat& value) - { - static const char *ids[] = - { - "HBar", "MBar", "FBar", - 0 - }; - - for (int i=0; ids[i]; ++i) - if (ids[i]==id) - { - switch (i) - { - case 0: - - health->setProgressRange (value.getModified()); - health->setProgressPosition (value.getCurrent()); - break; - - case 1: - - magicka->setProgressRange (value.getModified()); - magicka->setProgressPosition (value.getCurrent()); - break; - - case 2: - - stamina->setProgressRange (value.getModified()); - stamina->setProgressPosition (value.getCurrent()); - break; - } - } - } + HUD(int width, int height, bool fpsSwitch); + void setStats(int h, int hmax, int m, int mmax, int s, int smax); + void setWeapIcon(const char *str); + void setSpellIcon(const char *str); + void setWeapStatus(int s, int smax); + void setSpellStatus(int s, int smax); + void setEffect(const char *img); + void setValue (const std::string& id, const MWMechanics::DynamicStat& value); + void setFPS(float fps); MyGUI::ProgressPtr health, magicka, stamina; - MyGUI::StaticImagePtr weapImage, spellImage; MyGUI::ProgressPtr weapStatus, spellStatus; - MyGUI::WidgetPtr effectBox; MyGUI::StaticImagePtr effect1; - MyGUI::StaticImagePtr minimap; MyGUI::StaticImagePtr compass; - MyGUI::StaticImagePtr crosshair; MyGUI::WidgetPtr fpsbox;