2010-09-20 13:17:02 +02:00
|
|
|
#ifndef MWGUI_WIDGETS_H
|
|
|
|
#define MWGUI_WIDGETS_H
|
|
|
|
|
2013-03-03 13:11:02 +01:00
|
|
|
#include "../mwmechanics/stat.hpp"
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2022-06-04 15:26:36 +02:00
|
|
|
#include <MyGUI_Delegate.h>
|
|
|
|
#include <MyGUI_TextBox.h>
|
|
|
|
#include <MyGUI_Widget.h>
|
|
|
|
|
2023-06-19 20:41:54 +02:00
|
|
|
#include <components/esm/attr.hpp>
|
2022-10-18 09:26:55 +02:00
|
|
|
#include <components/esm/refid.hpp>
|
2022-01-22 15:58:41 +01:00
|
|
|
#include <components/esm3/effectlist.hpp>
|
|
|
|
#include <components/esm3/loadskil.hpp>
|
2014-12-19 09:23:16 +01:00
|
|
|
|
2013-03-03 13:11:02 +01:00
|
|
|
namespace MyGUI
|
|
|
|
{
|
|
|
|
class ImageBox;
|
2015-01-10 02:50:43 +01:00
|
|
|
class ControllerItem;
|
2013-03-03 13:11:02 +01:00
|
|
|
}
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2012-08-12 18:11:09 +02:00
|
|
|
namespace MWBase
|
|
|
|
{
|
|
|
|
class WindowManager;
|
|
|
|
}
|
|
|
|
|
2010-09-20 13:17:02 +02:00
|
|
|
/*
|
|
|
|
This file contains various custom widgets used in OpenMW.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace MWGui
|
|
|
|
{
|
|
|
|
namespace Widgets
|
|
|
|
{
|
2012-05-24 14:47:57 +02:00
|
|
|
class MWEffectList;
|
|
|
|
|
2012-05-24 03:48:02 +02:00
|
|
|
struct SpellEffectParams
|
|
|
|
{
|
2012-05-24 14:47:57 +02:00
|
|
|
SpellEffectParams()
|
2015-04-25 13:37:42 -05:00
|
|
|
: mNoTarget(false)
|
|
|
|
, mIsConstant(false)
|
2019-05-06 23:48:13 +00:00
|
|
|
, mNoMagnitude(false)
|
2015-04-25 13:37:42 -05:00
|
|
|
, mKnown(true)
|
|
|
|
, mEffectID(-1)
|
|
|
|
, mMagnMin(-1)
|
2012-05-24 14:47:57 +02:00
|
|
|
, mMagnMax(-1)
|
|
|
|
, mRange(-1)
|
|
|
|
, mDuration(-1)
|
2012-10-11 18:26:29 +02:00
|
|
|
, mArea(0)
|
2012-05-24 14:47:57 +02:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
bool mNoTarget; // potion effects for example have no target (target is always the player)
|
2012-05-24 03:48:02 +02:00
|
|
|
bool mIsConstant; // constant effect means that duration will not be displayed
|
2019-05-06 23:48:13 +00:00
|
|
|
bool mNoMagnitude; // effect magnitude will not be displayed (e.g ingredients)
|
2012-05-24 03:48:02 +02:00
|
|
|
|
2013-01-11 01:23:24 +01:00
|
|
|
bool mKnown; // is this effect known to the player? (If not, will display as a question mark instead)
|
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
// value of -1 here means the effect is unknown to the player
|
|
|
|
short mEffectID;
|
|
|
|
|
2023-08-03 20:21:44 +02:00
|
|
|
ESM::RefId mSkill, mAttribute;
|
2012-05-24 14:47:57 +02:00
|
|
|
|
|
|
|
// value of -1 here means the value is unavailable
|
|
|
|
int mMagnMin, mMagnMax, mRange, mDuration;
|
2012-05-25 16:20:57 +02:00
|
|
|
|
2012-10-11 18:26:29 +02:00
|
|
|
// value of 0 -> no area effect
|
|
|
|
int mArea;
|
|
|
|
|
2012-05-25 16:20:57 +02:00
|
|
|
bool operator==(const SpellEffectParams& other) const
|
|
|
|
{
|
2012-06-04 20:56:13 +02:00
|
|
|
if (mEffectID != other.mEffectID)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
bool involvesAttribute = (mEffectID == 74 // restore attribute
|
|
|
|
|| mEffectID == 85 // absorb attribute
|
|
|
|
|| mEffectID == 17 // drain attribute
|
|
|
|
|| mEffectID == 79 // fortify attribute
|
|
|
|
|| mEffectID == 22); // damage attribute
|
|
|
|
bool involvesSkill = (mEffectID == 78 // restore skill
|
|
|
|
|| mEffectID == 89 // absorb skill
|
|
|
|
|| mEffectID == 21 // drain skill
|
|
|
|
|| mEffectID == 83 // fortify skill
|
|
|
|
|| mEffectID == 26); // damage skill
|
2012-10-11 18:26:29 +02:00
|
|
|
return ((other.mSkill == mSkill) || !involvesSkill)
|
|
|
|
&& ((other.mAttribute == mAttribute) && !involvesAttribute) && (other.mArea == mArea);
|
2012-05-25 16:20:57 +02:00
|
|
|
}
|
2012-05-24 03:48:02 +02:00
|
|
|
};
|
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
typedef std::vector<SpellEffectParams> SpellEffectList;
|
|
|
|
|
2020-02-13 21:36:56 +01:00
|
|
|
class MWSkill final : public MyGUI::Widget
|
2010-09-20 13:17:02 +02:00
|
|
|
{
|
2012-09-10 09:10:50 +02:00
|
|
|
MYGUI_RTTI_DERIVED(MWSkill)
|
2010-09-20 13:17:02 +02:00
|
|
|
public:
|
|
|
|
MWSkill();
|
|
|
|
|
|
|
|
typedef MWMechanics::Stat<float> SkillValue;
|
|
|
|
|
2023-06-06 17:24:22 +02:00
|
|
|
void setSkillId(ESM::RefId skillId);
|
2010-09-20 13:17:02 +02:00
|
|
|
void setSkillValue(const SkillValue& value);
|
|
|
|
|
2023-06-06 17:24:22 +02:00
|
|
|
ESM::RefId getSkillId() const { return mSkillId; }
|
2012-07-13 03:51:58 -07:00
|
|
|
const SkillValue& getSkillValue() const { return mValue; }
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2010-09-24 15:28:14 +02:00
|
|
|
// Events
|
2023-07-15 15:02:27 +02:00
|
|
|
typedef MyGUI::delegates::MultiDelegate<MWSkill*> EventHandle_SkillVoid;
|
2010-09-24 15:28:14 +02:00
|
|
|
|
|
|
|
/** Event : Skill clicked.\n
|
|
|
|
signature : void method(MWSkill* _sender)\n
|
|
|
|
*/
|
|
|
|
EventHandle_SkillVoid eventClicked;
|
|
|
|
|
2010-09-20 13:17:02 +02:00
|
|
|
protected:
|
2011-01-05 22:18:21 +01:00
|
|
|
virtual ~MWSkill();
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2020-10-22 23:57:53 +02:00
|
|
|
void initialiseOverride() override;
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2010-09-24 15:28:14 +02:00
|
|
|
void onClicked(MyGUI::Widget* _sender);
|
|
|
|
|
2011-01-05 22:18:21 +01:00
|
|
|
private:
|
2010-09-20 13:17:02 +02:00
|
|
|
void updateWidgets();
|
|
|
|
|
2023-06-06 17:24:22 +02:00
|
|
|
ESM::RefId mSkillId;
|
2012-07-13 03:51:58 -07:00
|
|
|
SkillValue mValue;
|
2014-09-13 04:07:40 +02:00
|
|
|
MyGUI::TextBox* mSkillNameWidget;
|
|
|
|
MyGUI::TextBox* mSkillValueWidget;
|
2010-09-20 13:17:02 +02:00
|
|
|
};
|
|
|
|
typedef MWSkill* MWSkillPtr;
|
|
|
|
|
2020-02-13 21:36:56 +01:00
|
|
|
class MWAttribute final : public MyGUI::Widget
|
2010-09-20 13:17:02 +02:00
|
|
|
{
|
2012-09-10 09:10:50 +02:00
|
|
|
MYGUI_RTTI_DERIVED(MWAttribute)
|
2010-09-20 13:17:02 +02:00
|
|
|
public:
|
|
|
|
MWAttribute();
|
|
|
|
|
2014-01-03 01:59:15 +01:00
|
|
|
typedef MWMechanics::AttributeValue AttributeValue;
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2023-08-03 20:21:44 +02:00
|
|
|
void setAttributeId(ESM::RefId attributeId);
|
2010-09-20 13:17:02 +02:00
|
|
|
void setAttributeValue(const AttributeValue& value);
|
|
|
|
|
2023-08-03 20:21:44 +02:00
|
|
|
ESM::RefId getAttributeId() const { return mId; }
|
2012-07-13 03:51:58 -07:00
|
|
|
const AttributeValue& getAttributeValue() const { return mValue; }
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2010-09-24 15:28:14 +02:00
|
|
|
// Events
|
2023-07-15 15:02:27 +02:00
|
|
|
typedef MyGUI::delegates::MultiDelegate<MWAttribute*> EventHandle_AttributeVoid;
|
2010-09-24 15:28:14 +02:00
|
|
|
|
|
|
|
/** Event : Attribute clicked.\n
|
|
|
|
signature : void method(MWAttribute* _sender)\n
|
|
|
|
*/
|
|
|
|
EventHandle_AttributeVoid eventClicked;
|
|
|
|
|
2010-09-20 13:17:02 +02:00
|
|
|
protected:
|
2023-06-19 20:41:54 +02:00
|
|
|
~MWAttribute() override = default;
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2020-10-22 23:57:53 +02:00
|
|
|
void initialiseOverride() override;
|
2010-09-20 13:17:02 +02:00
|
|
|
|
2010-09-24 15:28:14 +02:00
|
|
|
void onClicked(MyGUI::Widget* _sender);
|
|
|
|
|
2011-01-05 22:18:21 +01:00
|
|
|
private:
|
2010-09-20 13:17:02 +02:00
|
|
|
void updateWidgets();
|
|
|
|
|
2023-08-03 20:21:44 +02:00
|
|
|
ESM::RefId mId;
|
2012-07-13 03:51:58 -07:00
|
|
|
AttributeValue mValue;
|
2014-09-13 04:07:40 +02:00
|
|
|
MyGUI::TextBox* mAttributeNameWidget;
|
|
|
|
MyGUI::TextBox* mAttributeValueWidget;
|
2010-09-20 13:17:02 +02:00
|
|
|
};
|
|
|
|
typedef MWAttribute* MWAttributePtr;
|
2010-09-20 13:36:55 +02:00
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
/**
|
|
|
|
* @todo remove this class and use MWEffectList instead
|
|
|
|
*/
|
2010-09-21 12:34:47 +02:00
|
|
|
class MWSpellEffect;
|
2020-02-13 21:36:56 +01:00
|
|
|
class MWSpell final : public MyGUI::Widget
|
2010-09-20 13:36:55 +02:00
|
|
|
{
|
2012-09-10 09:10:50 +02:00
|
|
|
MYGUI_RTTI_DERIVED(MWSpell)
|
2010-09-20 13:36:55 +02:00
|
|
|
public:
|
|
|
|
MWSpell();
|
|
|
|
|
Initial commit: In ESM structures, replace the string members that are RefIds to other records, to a new strong type
The strong type is actually just a string underneath, but this will help in the future to have a distinction so it's easier to search and replace when we use an integer ID
Slowly going through all the changes to make, still hundreds of errors
a lot of functions/structures use std::string or stringview to designate an ID. So it takes time
Continues slowly replacing ids. There are technically more and more compilation errors
I have good hope that there is a point where the amount of errors will dramatically go down as all the main functions use the ESM::RefId type
Continue moving forward, changes to the stores
slowly moving along
Starting to see the fruit of those changes.
still many many error, but more and more Irun into a situation where a function is sandwiched between two functions that use the RefId type.
More replacements. Things are starting to get easier
I can see more and more often the issue is that the function is awaiting a RefId, but is given a string
there is less need to go down functions and to fix a long list of them.
Still moving forward, and for the first time error count is going down!
Good pace, not sure about topics though, mId and mName are actually the same thing and are used interchangeably
Cells are back to using string for the name, haven't fixed everything yet. Many other changes
Under the bar of 400 compilation errors.
more good progress <100 compile errors!
More progress
Game settings store can use string for find, it was a bit absurd how every use of it required to create refId from string
some more progress on other fronts
Mostly game settings clean
one error opened a lot of other errors. Down to 18, but more will prbably appear
only link errors left??
Fixed link errors
OpenMW compiles, and launches, with some issues, but still!
2022-09-25 13:17:09 +02:00
|
|
|
void setSpellId(const ESM::RefId& id);
|
2012-04-30 00:57:41 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param vector to store the created effect widgets
|
|
|
|
* @param parent widget
|
|
|
|
* @param coordinates to use, will be expanded if more space is needed
|
|
|
|
* @param spell category, if this is 0, this means the spell effects are permanent and won't display e.g.
|
|
|
|
* duration
|
2012-04-30 02:10:55 +02:00
|
|
|
* @param various flags, see MWEffectList::EffectFlags
|
2012-04-30 00:57:41 +02:00
|
|
|
*/
|
2013-03-03 13:11:02 +01:00
|
|
|
void createEffectWidgets(
|
|
|
|
std::vector<MyGUI::Widget*>& effects, MyGUI::Widget* creator, MyGUI::IntCoord& coord, int flags);
|
2010-09-20 13:36:55 +02:00
|
|
|
|
Initial commit: In ESM structures, replace the string members that are RefIds to other records, to a new strong type
The strong type is actually just a string underneath, but this will help in the future to have a distinction so it's easier to search and replace when we use an integer ID
Slowly going through all the changes to make, still hundreds of errors
a lot of functions/structures use std::string or stringview to designate an ID. So it takes time
Continues slowly replacing ids. There are technically more and more compilation errors
I have good hope that there is a point where the amount of errors will dramatically go down as all the main functions use the ESM::RefId type
Continue moving forward, changes to the stores
slowly moving along
Starting to see the fruit of those changes.
still many many error, but more and more Irun into a situation where a function is sandwiched between two functions that use the RefId type.
More replacements. Things are starting to get easier
I can see more and more often the issue is that the function is awaiting a RefId, but is given a string
there is less need to go down functions and to fix a long list of them.
Still moving forward, and for the first time error count is going down!
Good pace, not sure about topics though, mId and mName are actually the same thing and are used interchangeably
Cells are back to using string for the name, haven't fixed everything yet. Many other changes
Under the bar of 400 compilation errors.
more good progress <100 compile errors!
More progress
Game settings store can use string for find, it was a bit absurd how every use of it required to create refId from string
some more progress on other fronts
Mostly game settings clean
one error opened a lot of other errors. Down to 18, but more will prbably appear
only link errors left??
Fixed link errors
OpenMW compiles, and launches, with some issues, but still!
2022-09-25 13:17:09 +02:00
|
|
|
const ESM::RefId& getSpellId() const { return mId; }
|
2010-09-20 13:36:55 +02:00
|
|
|
|
|
|
|
protected:
|
2011-01-05 22:18:21 +01:00
|
|
|
virtual ~MWSpell();
|
2010-09-20 13:36:55 +02:00
|
|
|
|
2020-10-22 23:57:53 +02:00
|
|
|
void initialiseOverride() override;
|
2010-09-20 13:36:55 +02:00
|
|
|
|
2011-01-05 22:18:21 +01:00
|
|
|
private:
|
2010-09-20 13:36:55 +02:00
|
|
|
void updateWidgets();
|
|
|
|
|
Initial commit: In ESM structures, replace the string members that are RefIds to other records, to a new strong type
The strong type is actually just a string underneath, but this will help in the future to have a distinction so it's easier to search and replace when we use an integer ID
Slowly going through all the changes to make, still hundreds of errors
a lot of functions/structures use std::string or stringview to designate an ID. So it takes time
Continues slowly replacing ids. There are technically more and more compilation errors
I have good hope that there is a point where the amount of errors will dramatically go down as all the main functions use the ESM::RefId type
Continue moving forward, changes to the stores
slowly moving along
Starting to see the fruit of those changes.
still many many error, but more and more Irun into a situation where a function is sandwiched between two functions that use the RefId type.
More replacements. Things are starting to get easier
I can see more and more often the issue is that the function is awaiting a RefId, but is given a string
there is less need to go down functions and to fix a long list of them.
Still moving forward, and for the first time error count is going down!
Good pace, not sure about topics though, mId and mName are actually the same thing and are used interchangeably
Cells are back to using string for the name, haven't fixed everything yet. Many other changes
Under the bar of 400 compilation errors.
more good progress <100 compile errors!
More progress
Game settings store can use string for find, it was a bit absurd how every use of it required to create refId from string
some more progress on other fronts
Mostly game settings clean
one error opened a lot of other errors. Down to 18, but more will prbably appear
only link errors left??
Fixed link errors
OpenMW compiles, and launches, with some issues, but still!
2022-09-25 13:17:09 +02:00
|
|
|
ESM::RefId mId;
|
2012-07-13 03:51:58 -07:00
|
|
|
MyGUI::TextBox* mSpellNameWidget;
|
2010-09-20 13:36:55 +02:00
|
|
|
};
|
|
|
|
typedef MWSpell* MWSpellPtr;
|
2010-09-21 12:34:47 +02:00
|
|
|
|
2020-02-13 21:36:56 +01:00
|
|
|
class MWEffectList final : public MyGUI::Widget
|
2012-04-18 18:09:30 +02:00
|
|
|
{
|
2012-09-10 09:10:50 +02:00
|
|
|
MYGUI_RTTI_DERIVED(MWEffectList)
|
2012-04-18 18:09:30 +02:00
|
|
|
public:
|
2012-04-30 01:08:10 +02:00
|
|
|
MWEffectList();
|
2012-04-18 18:09:30 +02:00
|
|
|
|
2012-04-30 01:53:22 +02:00
|
|
|
enum EffectFlags
|
|
|
|
{
|
2012-05-24 14:47:57 +02:00
|
|
|
EF_NoTarget = 0x01, // potions have no target (target is always the player)
|
2019-05-06 23:48:13 +00:00
|
|
|
EF_Constant = 0x02, // constant effect means that duration will not be displayed
|
|
|
|
EF_NoMagnitude = 0x04 // ingredients have no magnitude
|
|
|
|
|
2012-04-30 01:53:22 +02:00
|
|
|
};
|
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
void setEffectList(const SpellEffectList& list);
|
|
|
|
|
|
|
|
static SpellEffectList effectListFromESM(const ESM::EffectList* effects);
|
2012-04-30 00:57:41 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param vector to store the created effect widgets
|
|
|
|
* @param parent widget
|
|
|
|
* @param coordinates to use, will be expanded if more space is needed
|
|
|
|
* @param center the effect widgets horizontally
|
2012-04-30 01:53:22 +02:00
|
|
|
* @param various flags, see MWEffectList::EffectFlags
|
2012-04-30 00:57:41 +02:00
|
|
|
*/
|
2013-03-03 13:11:02 +01:00
|
|
|
void createEffectWidgets(std::vector<MyGUI::Widget*>& effects, MyGUI::Widget* creator,
|
|
|
|
MyGUI::IntCoord& coord, bool center, int flags);
|
2012-04-18 18:09:30 +02:00
|
|
|
|
|
|
|
protected:
|
2012-04-30 01:08:10 +02:00
|
|
|
virtual ~MWEffectList();
|
2012-04-18 18:09:30 +02:00
|
|
|
|
2020-10-22 23:57:53 +02:00
|
|
|
void initialiseOverride() override;
|
2012-04-18 18:09:30 +02:00
|
|
|
|
|
|
|
private:
|
|
|
|
void updateWidgets();
|
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
SpellEffectList mEffectList;
|
2012-04-18 18:09:30 +02:00
|
|
|
};
|
2012-04-30 01:08:10 +02:00
|
|
|
typedef MWEffectList* MWEffectListPtr;
|
2012-04-18 18:09:30 +02:00
|
|
|
|
2020-02-13 21:36:56 +01:00
|
|
|
class MWSpellEffect final : public MyGUI::Widget
|
2010-09-21 12:34:47 +02:00
|
|
|
{
|
2012-09-10 09:10:50 +02:00
|
|
|
MYGUI_RTTI_DERIVED(MWSpellEffect)
|
2010-09-21 12:34:47 +02:00
|
|
|
public:
|
|
|
|
MWSpellEffect();
|
|
|
|
|
|
|
|
typedef ESM::ENAMstruct SpellEffectValue;
|
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
void setSpellEffect(const SpellEffectParams& params);
|
2012-04-18 21:18:53 +02:00
|
|
|
|
2012-04-30 00:57:41 +02:00
|
|
|
int getRequestedWidth() const { return mRequestedWidth; }
|
|
|
|
|
2010-09-21 12:34:47 +02:00
|
|
|
protected:
|
2011-01-05 22:18:21 +01:00
|
|
|
virtual ~MWSpellEffect();
|
2010-09-21 12:34:47 +02:00
|
|
|
|
2020-10-22 23:57:53 +02:00
|
|
|
void initialiseOverride() override;
|
2012-08-12 18:11:09 +02:00
|
|
|
|
2011-01-05 22:18:21 +01:00
|
|
|
private:
|
2021-03-21 13:56:56 +01:00
|
|
|
static constexpr int sIconOffset = 24;
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2010-09-21 12:34:47 +02:00
|
|
|
void updateWidgets();
|
|
|
|
|
2012-05-24 14:47:57 +02:00
|
|
|
SpellEffectParams mEffectParams;
|
2012-07-13 03:51:58 -07:00
|
|
|
MyGUI::ImageBox* mImageWidget;
|
|
|
|
MyGUI::TextBox* mTextWidget;
|
2012-04-30 00:57:41 +02:00
|
|
|
int mRequestedWidth;
|
2010-09-21 12:34:47 +02:00
|
|
|
};
|
|
|
|
typedef MWSpellEffect* MWSpellEffectPtr;
|
2010-10-20 21:39:18 +02:00
|
|
|
|
2020-02-13 21:36:56 +01:00
|
|
|
class MWDynamicStat final : public MyGUI::Widget
|
2010-10-20 21:39:18 +02:00
|
|
|
{
|
2012-09-10 09:10:50 +02:00
|
|
|
MYGUI_RTTI_DERIVED(MWDynamicStat)
|
2010-10-20 21:39:18 +02:00
|
|
|
public:
|
|
|
|
MWDynamicStat();
|
|
|
|
|
|
|
|
void setValue(int value, int max);
|
2022-08-24 22:16:03 +02:00
|
|
|
void setTitle(std::string_view text);
|
2010-10-20 21:39:18 +02:00
|
|
|
|
2012-07-13 03:51:58 -07:00
|
|
|
int getValue() const { return mValue; }
|
|
|
|
int getMax() const { return mMax; }
|
2010-10-20 21:39:18 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual ~MWDynamicStat();
|
|
|
|
|
2020-10-22 23:57:53 +02:00
|
|
|
void initialiseOverride() override;
|
2010-10-20 21:39:18 +02:00
|
|
|
|
|
|
|
private:
|
2012-07-13 03:51:58 -07:00
|
|
|
int mValue, mMax;
|
|
|
|
MyGUI::TextBox* mTextWidget;
|
2014-09-13 04:07:40 +02:00
|
|
|
MyGUI::ProgressBar* mBarWidget;
|
2012-07-13 03:51:58 -07:00
|
|
|
MyGUI::TextBox* mBarTextWidget;
|
2010-10-20 21:39:18 +02:00
|
|
|
};
|
|
|
|
typedef MWDynamicStat* MWDynamicStatPtr;
|
2010-09-20 13:17:02 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|