OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
race.hpp
Go to the documentation of this file.
1 #ifndef MWGUI_RACE_H
2 #define MWGUI_RACE_H
3 
4 #include "windowbase.hpp"
5 #include <MyGUI_RenderManager.h>
6 
7 
8 namespace MWGui
9 {
10  class WindowManager;
11 }
12 
13 namespace MWRender
14 {
15  class RaceSelectionPreview;
16 }
17 
18 namespace ESM
19 {
20  struct NPC;
21 }
22 
23 namespace osg
24 {
25  class Group;
26 }
27 
28 namespace Resource
29 {
30  class ResourceSystem;
31 }
32 
33 namespace MWGui
34 {
35  class RaceDialog : public WindowModal
36  {
37  public:
38  RaceDialog(osg::Group* parent, Resource::ResourceSystem* resourceSystem);
39 
40  enum Gender
41  {
44  };
45 
46  const ESM::NPC &getResult() const;
47  const std::string &getRaceId() const { return mCurrentRaceId; }
48  Gender getGender() const { return mGenderIndex == 0 ? GM_Male : GM_Female; }
49 
50  void setRaceId(const std::string &raceId);
51  void setGender(Gender gender) { mGenderIndex = gender == GM_Male ? 0 : 1; }
52 
53  void setNextButtonShow(bool shown);
54  virtual void onOpen();
55  virtual void onClose();
56 
57  bool exit() { return false; }
58 
59  // Events
60  typedef MyGUI::delegates::CMultiDelegate0 EventHandle_Void;
61 
66 
71 
72  protected:
73  void onHeadRotate(MyGUI::ScrollBar* _sender, size_t _position);
74 
75  void onSelectPreviousGender(MyGUI::Widget* _sender);
76  void onSelectNextGender(MyGUI::Widget* _sender);
77 
78  void onSelectPreviousFace(MyGUI::Widget* _sender);
79  void onSelectNextFace(MyGUI::Widget* _sender);
80 
81  void onSelectPreviousHair(MyGUI::Widget* _sender);
82  void onSelectNextHair(MyGUI::Widget* _sender);
83 
84  void onSelectRace(MyGUI::ListBox* _sender, size_t _index);
85  void onAccept(MyGUI::ListBox* _sender, size_t _index);
86 
87  void onOkClicked(MyGUI::Widget* _sender);
88  void onBackClicked(MyGUI::Widget* _sender);
89 
90  private:
91  void updateRaces();
92  void updateSkills();
93  void updateSpellPowers();
94  void updatePreview();
95  void recountParts();
96 
97  void getBodyParts (int part, std::vector<std::string>& out);
98 
99  osg::Group* mParent;
101 
102  std::vector<std::string> mAvailableHeads;
103  std::vector<std::string> mAvailableHairs;
104 
105  MyGUI::ImageBox* mPreviewImage;
106  MyGUI::ListBox* mRaceList;
107  MyGUI::ScrollBar* mHeadRotate;
108 
109  MyGUI::Widget* mSkillList;
110  std::vector<MyGUI::Widget*> mSkillItems;
111 
112  MyGUI::Widget* mSpellPowerList;
113  std::vector<MyGUI::Widget*> mSpellPowerItems;
114 
116 
117  std::string mCurrentRaceId;
118 
120 
121  std::unique_ptr<MWRender::RaceSelectionPreview> mPreview;
122  std::unique_ptr<MyGUI::ITexture> mPreviewTexture;
123 
125  };
126 }
127 #endif
std::vector< MyGUI::Widget * > mSkillItems
Definition: race.hpp:110
void updateSpellPowers()
Definition: race.cpp:414
EventHandle_Void eventBack
Definition: race.hpp:65
bool mPreviewDirty
Definition: race.hpp:124
Wrapper class that constructs and provides access to the most commonly used resource subsystems...
Definition: resourcesystem.hpp:30
MyGUI::Widget * mSkillList
Definition: race.hpp:109
virtual void onClose()
Notify that window has been hidden.
Definition: race.cpp:189
int mGenderIndex
Definition: race.hpp:115
Definition: race.hpp:43
void onSelectNextHair(MyGUI::Widget *_sender)
Definition: race.cpp:255
void updateSkills()
Definition: race.cpp:377
void onSelectNextGender(MyGUI::Widget *_sender)
Definition: race.cpp:229
void setNextButtonShow(bool shown)
Definition: race.cpp:113
EventHandle_WindowBase eventDone
Definition: race.hpp:70
Gender getGender() const
Definition: race.hpp:48
void onSelectPreviousGender(MyGUI::Widget *_sender)
Definition: race.cpp:221
MyGUI::Widget * mSpellPowerList
Definition: race.hpp:112
Definition: race.hpp:42
int mHairIndex
Definition: race.hpp:115
std::string mCurrentRaceId
Definition: race.hpp:117
void onSelectRace(MyGUI::ListBox *_sender, size_t _index)
Definition: race.cpp:261
void recountParts()
Definition: race.cpp:315
Resource::ResourceSystem * mResourceSystem
Definition: race.hpp:100
virtual void onOpen()
Notify that window has been made visible.
Definition: race.cpp:124
void onSelectPreviousFace(MyGUI::Widget *_sender)
Definition: race.cpp:237
MyGUI::ImageBox * mPreviewImage
Definition: race.hpp:105
void onSelectPreviousHair(MyGUI::Widget *_sender)
Definition: race.cpp:249
MyGUI::ListBox * mRaceList
Definition: race.hpp:106
Definition: loadnpc.hpp:23
void onOkClicked(MyGUI::Widget *_sender)
Definition: race.cpp:201
std::vector< std::string > mAvailableHeads
Definition: race.hpp:102
Gender
Definition: race.hpp:40
void updatePreview()
Definition: race.cpp:326
RaceDialog(osg::Group *parent, Resource::ResourceSystem *resourceSystem)
Definition: race.cpp:42
std::vector< MyGUI::Widget * > mSpellPowerItems
Definition: race.hpp:113
const std::string & getRaceId() const
Definition: race.hpp:47
Definition: race.hpp:35
int mFaceIndex
Definition: race.hpp:115
void onBackClicked(MyGUI::Widget *_sender)
Definition: race.cpp:208
osg::Group * mParent
Definition: race.hpp:99
void getBodyParts(int part, std::vector< std::string > &out)
Definition: race.cpp:287
bool exit()
Gracefully exits the window.
Definition: race.hpp:57
MyGUI::delegates::CMultiDelegate1< WindowBase * > EventHandle_WindowBase
Definition: windowbase.hpp:29
void updateRaces()
Definition: race.cpp:348
void onSelectNextFace(MyGUI::Widget *_sender)
Definition: race.cpp:243
void onAccept(MyGUI::ListBox *_sender, size_t _index)
Definition: race.cpp:279
std::vector< std::string > mAvailableHairs
Definition: race.hpp:103
void setGender(Gender gender)
Definition: race.hpp:51
float mCurrentAngle
Definition: race.hpp:119
std::unique_ptr< MyGUI::ITexture > mPreviewTexture
Definition: race.hpp:122
const ESM::NPC & getResult() const
Definition: race.cpp:448
MyGUI::ScrollBar * mHeadRotate
Definition: race.hpp:107
std::unique_ptr< MWRender::RaceSelectionPreview > mPreview
Definition: race.hpp:121
MyGUI::delegates::CMultiDelegate0 EventHandle_Void
Definition: race.hpp:60
void onHeadRotate(MyGUI::ScrollBar *_sender, size_t _position)
Definition: race.cpp:213
void setRaceId(const std::string &raceId)
Definition: race.cpp:171
Definition: windowbase.hpp:61