mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-06 00:55:50 +00:00
65cdd489fb
Fixed some types removed useless header applied clang format fixed compile tests fixed clang tidy, and closer to logic before this MR Removed hardcoded refids unless there is a returned value we don't use static RefIds can use == between RefId and hardcoded string Fix clang format Fixed a few instances where std::string was used, when only const std::string& was needed removed unused variable
124 lines
3.1 KiB
C++
124 lines
3.1 KiB
C++
#ifndef MWGUI_RACE_H
|
|
#define MWGUI_RACE_H
|
|
|
|
#include "windowbase.hpp"
|
|
#include <components/esm/refid.hpp>
|
|
#include <memory>
|
|
|
|
namespace MWRender
|
|
{
|
|
class RaceSelectionPreview;
|
|
}
|
|
|
|
namespace ESM
|
|
{
|
|
struct NPC;
|
|
}
|
|
|
|
namespace osg
|
|
{
|
|
class Group;
|
|
}
|
|
|
|
namespace Resource
|
|
{
|
|
class ResourceSystem;
|
|
}
|
|
|
|
namespace MWGui
|
|
{
|
|
class RaceDialog : public WindowModal
|
|
{
|
|
public:
|
|
RaceDialog(osg::Group* parent, Resource::ResourceSystem* resourceSystem);
|
|
|
|
enum Gender
|
|
{
|
|
GM_Male,
|
|
GM_Female
|
|
};
|
|
|
|
const ESM::NPC& getResult() const;
|
|
const ESM::RefId& getRaceId() const { return mCurrentRaceId; }
|
|
Gender getGender() const { return mGenderIndex == 0 ? GM_Male : GM_Female; }
|
|
|
|
void setRaceId(const ESM::RefId& raceId);
|
|
void setGender(Gender gender) { mGenderIndex = gender == GM_Male ? 0 : 1; }
|
|
|
|
void setNextButtonShow(bool shown);
|
|
void onOpen() override;
|
|
void onClose() override;
|
|
|
|
bool exit() override { return false; }
|
|
|
|
// Events
|
|
typedef MyGUI::delegates::CMultiDelegate0 EventHandle_Void;
|
|
|
|
/** Event : Back button clicked.\n
|
|
signature : void method()\n
|
|
*/
|
|
EventHandle_Void eventBack;
|
|
|
|
/** Event : Dialog finished, OK button clicked.\n
|
|
signature : void method()\n
|
|
*/
|
|
EventHandle_WindowBase eventDone;
|
|
|
|
protected:
|
|
void onPreviewScroll(MyGUI::Widget* _sender, int _delta);
|
|
void onHeadRotate(MyGUI::ScrollBar* _sender, size_t _position);
|
|
|
|
void onSelectPreviousGender(MyGUI::Widget* _sender);
|
|
void onSelectNextGender(MyGUI::Widget* _sender);
|
|
|
|
void onSelectPreviousFace(MyGUI::Widget* _sender);
|
|
void onSelectNextFace(MyGUI::Widget* _sender);
|
|
|
|
void onSelectPreviousHair(MyGUI::Widget* _sender);
|
|
void onSelectNextHair(MyGUI::Widget* _sender);
|
|
|
|
void onSelectRace(MyGUI::ListBox* _sender, size_t _index);
|
|
void onAccept(MyGUI::ListBox* _sender, size_t _index);
|
|
|
|
void onOkClicked(MyGUI::Widget* _sender);
|
|
void onBackClicked(MyGUI::Widget* _sender);
|
|
|
|
private:
|
|
void updateRaces();
|
|
void updateSkills();
|
|
void updateSpellPowers();
|
|
void updatePreview();
|
|
void recountParts();
|
|
|
|
void getBodyParts(int part, std::vector<ESM::RefId>& out);
|
|
|
|
osg::Group* mParent;
|
|
Resource::ResourceSystem* mResourceSystem;
|
|
|
|
std::vector<ESM::RefId> mAvailableHeads;
|
|
std::vector<ESM::RefId> mAvailableHairs;
|
|
|
|
MyGUI::ImageBox* mPreviewImage;
|
|
MyGUI::ListBox* mRaceList;
|
|
MyGUI::ScrollBar* mHeadRotate;
|
|
|
|
MyGUI::Widget* mSkillList;
|
|
std::vector<MyGUI::Widget*> mSkillItems;
|
|
|
|
MyGUI::Widget* mSpellPowerList;
|
|
std::vector<MyGUI::Widget*> mSpellPowerItems;
|
|
|
|
int mGenderIndex, mFaceIndex, mHairIndex;
|
|
|
|
ESM::RefId mCurrentRaceId;
|
|
|
|
float mCurrentAngle;
|
|
|
|
std::unique_ptr<MWRender::RaceSelectionPreview> mPreview;
|
|
std::unique_ptr<MyGUI::ITexture> mPreviewTexture;
|
|
|
|
bool mPreviewDirty;
|
|
};
|
|
}
|
|
#endif
|