From c7381d44917629cd804875c23ded7ab2d3cbd539 Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 18 Apr 2012 18:09:30 +0200 Subject: [PATCH] adding widget MWEnchantment --- apps/openmw/mwgui/widgets.cpp | 44 +++++++++++++++++++++++++++++++++++ apps/openmw/mwgui/widgets.hpp | 29 ++++++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwgui/widgets.cpp b/apps/openmw/mwgui/widgets.cpp index c833834681..568b31455c 100644 --- a/apps/openmw/mwgui/widgets.cpp +++ b/apps/openmw/mwgui/widgets.cpp @@ -264,6 +264,50 @@ MWSpell::~MWSpell() { } +/* MWEnchantment */ + +MWEnchantment::MWEnchantment() + : mWindowManager(nullptr) +{ +} + +void MWEnchantment::setEnchantmentId(const std::string &enchantId) +{ + id = enchantId; + updateWidgets(); +} + +void MWEnchantment::createEffectWidgets(std::vector &effects, MyGUI::WidgetPtr creator, MyGUI::IntCoord &coord) +{ + const ESMS::ESMStore &store = mWindowManager->getStore(); + const ESM::Enchantment *enchant = store.enchants.search(id); + MYGUI_ASSERT(enchant, "enchantment with id '" << id << "' not found"); + + MWSpellEffectPtr effect = nullptr; + std::vector::const_iterator end = enchant->effects.list.end(); + for (std::vector::const_iterator it = enchant->effects.list.begin(); it != end; ++it) + { + effect = creator->createWidget("MW_EffectImage", coord, MyGUI::Align::Default); + effect->setWindowManager(mWindowManager); + effect->setSpellEffect(*it); + effects.push_back(effect); + coord.top += effect->getHeight(); + } +} + +void MWEnchantment::updateWidgets() +{ +} + +void MWEnchantment::initialiseOverride() +{ + Base::initialiseOverride(); +} + +MWEnchantment::~MWEnchantment() +{ +} + /* MWSpellEffect */ MWSpellEffect::MWSpellEffect() diff --git a/apps/openmw/mwgui/widgets.hpp b/apps/openmw/mwgui/widgets.hpp index a7916285eb..595ee83b64 100644 --- a/apps/openmw/mwgui/widgets.hpp +++ b/apps/openmw/mwgui/widgets.hpp @@ -126,7 +126,7 @@ namespace MWGui protected: virtual ~MWSpell(); - virtual void initialiseOverride(); + virtual void initialiseOverride(); private: void updateWidgets(); @@ -137,6 +137,33 @@ namespace MWGui }; typedef MWSpell* MWSpellPtr; + class MYGUI_EXPORT MWEnchantment : public Widget + { + MYGUI_RTTI_DERIVED( MWEnchantment ); + public: + MWEnchantment(); + + typedef MWMechanics::Stat EnchantmentValue; + + void setWindowManager(WindowManager* parWindowManager) { mWindowManager = parWindowManager; } + void setEnchantmentId(const std::string &enchantId); + void createEffectWidgets(std::vector &effects, MyGUI::WidgetPtr creator, MyGUI::IntCoord &coord); + + const std::string &getSpellId() const { return id; } + + protected: + virtual ~MWEnchantment(); + + virtual void initialiseOverride(); + + private: + void updateWidgets(); + + WindowManager* mWindowManager; + std::string id; + }; + typedef MWEnchantment* MWEnchantmentPtr; + class MYGUI_EXPORT MWSpellEffect : public Widget { MYGUI_RTTI_DERIVED( MWSpellEffect );