1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-16 05:49:56 +00:00
openmw-tes3mp/apps/openmw/mwgui/widgets.hpp
2010-09-21 12:34:47 +02:00

176 lines
5.4 KiB
C++

#ifndef MWGUI_WIDGETS_H
#define MWGUI_WIDGETS_H
#include <components/esm_store/store.hpp>
#include <MyGUI.h>
#include "../mwmechanics/stat.hpp"
namespace MWWorld
{
class Environment;
}
/*
This file contains various custom widgets used in OpenMW.
*/
namespace MWGui
{
using namespace MyGUI;
class WindowManager;
namespace Widgets
{
void fixTexturePath(std::string &path);
class MYGUI_EXPORT MWSkill : public Widget
{
MYGUI_RTTI_DERIVED( MWSkill );
public:
MWSkill();
typedef MWMechanics::Stat<float> SkillValue;
void setWindowManager(WindowManager *m) { manager = m; }
void setSkillId(ESM::Skill::SkillEnum skillId);
void setSkillNumber(int skillId);
void setSkillValue(const SkillValue& value);
WindowManager *getWindowManager() const { return manager; }
ESM::Skill::SkillEnum getSkillId() const { return skillId; }
const SkillValue& getSkillValue() const { return value; }
/*internal:*/
virtual void _initialise(WidgetStyle _style, const IntCoord& _coord, Align _align, ResourceSkin* _info, Widget* _parent, ICroppedRectangle * _croppedParent, IWidgetCreator * _creator, const std::string& _name);
protected:
virtual ~MWSkill();
void baseChangeWidgetSkin(ResourceSkin* _info);
private:
void initialiseWidgetSkin(ResourceSkin* _info);
void shutdownWidgetSkin();
void updateWidgets();
WindowManager *manager;
ESM::Skill::SkillEnum skillId;
SkillValue value;
MyGUI::StaticTextPtr skillNameWidget, skillValueWidget;
};
typedef MWSkill* MWSkillPtr;
class MYGUI_EXPORT MWAttribute : public Widget
{
MYGUI_RTTI_DERIVED( MWAttribute );
public:
MWAttribute();
typedef MWMechanics::Stat<int> AttributeValue;
void setWindowManager(WindowManager *m) { manager = m; }
void setAttributeId(int attributeId);
void setAttributeValue(const AttributeValue& value);
WindowManager *getWindowManager() const { return manager; }
int getAttributeId() const { return id; }
const AttributeValue& getAttributeValue() const { return value; }
/*internal:*/
virtual void _initialise(WidgetStyle _style, const IntCoord& _coord, Align _align, ResourceSkin* _info, Widget* _parent, ICroppedRectangle * _croppedParent, IWidgetCreator * _creator, const std::string& _name);
protected:
virtual ~MWAttribute();
void baseChangeWidgetSkin(ResourceSkin* _info);
private:
void initialiseWidgetSkin(ResourceSkin* _info);
void shutdownWidgetSkin();
void updateWidgets();
WindowManager *manager;
int id;
AttributeValue value;
MyGUI::StaticTextPtr attributeNameWidget, attributeValueWidget;
};
typedef MWAttribute* MWAttributePtr;
class MWSpellEffect;
class MYGUI_EXPORT MWSpell : public Widget
{
MYGUI_RTTI_DERIVED( MWSpell );
public:
MWSpell();
typedef MWMechanics::Stat<int> SpellValue;
void setEnvironment(MWWorld::Environment *env_) { env = env_; }
void setSpellId(const std::string &id);
void createEffectWidgets(std::vector<MyGUI::WidgetPtr> &effects, MyGUI::WidgetPtr creator, MyGUI::IntCoord &coord);
MWWorld::Environment *getEnvironment() const { return env; }
const std::string &getSpellId() const { return id; }
/*internal:*/
virtual void _initialise(WidgetStyle _style, const IntCoord& _coord, Align _align, ResourceSkin* _info, Widget* _parent, ICroppedRectangle * _croppedParent, IWidgetCreator * _creator, const std::string& _name);
protected:
virtual ~MWSpell();
void baseChangeWidgetSkin(ResourceSkin* _info);
private:
void initialiseWidgetSkin(ResourceSkin* _info);
void shutdownWidgetSkin();
void updateWidgets();
MWWorld::Environment *env;
std::string id;
MyGUI::StaticTextPtr spellNameWidget;
};
typedef MWSpell* MWSpellPtr;
class MYGUI_EXPORT MWSpellEffect : public Widget
{
MYGUI_RTTI_DERIVED( MWSpellEffect );
public:
MWSpellEffect();
typedef ESM::ENAMstruct SpellEffectValue;
void setEnvironment(MWWorld::Environment *env_) { env = env_; }
void setSpellEffect(SpellEffectValue value);
MWWorld::Environment *getEnvironment() const { return env; }
const SpellEffectValue &getSpellEffect() const { return effect; }
/*internal:*/
virtual void _initialise(WidgetStyle _style, const IntCoord& _coord, Align _align, ResourceSkin* _info, Widget* _parent, ICroppedRectangle * _croppedParent, IWidgetCreator * _creator, const std::string& _name);
protected:
virtual ~MWSpellEffect();
void baseChangeWidgetSkin(ResourceSkin* _info);
private:
void initialiseWidgetSkin(ResourceSkin* _info);
void shutdownWidgetSkin();
void updateWidgets();
MWWorld::Environment *env;
SpellEffectValue effect;
MyGUI::StaticImagePtr imageWidget;
MyGUI::StaticTextPtr textWidget;
};
typedef MWSpellEffect* MWSpellEffectPtr;
}
}
#endif