mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-11-03 02:56:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			136 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef CHARACTER_CREATION_HPP
 | 
						|
#define CHARACTER_CREATION_HPP
 | 
						|
 | 
						|
#include <components/esm/loadclas.hpp>
 | 
						|
 | 
						|
#include <map>
 | 
						|
#include <vector>
 | 
						|
 | 
						|
#include "statswatcher.hpp"
 | 
						|
 | 
						|
namespace osg
 | 
						|
{
 | 
						|
    class Group;
 | 
						|
}
 | 
						|
 | 
						|
namespace Resource
 | 
						|
{
 | 
						|
    class ResourceSystem;
 | 
						|
}
 | 
						|
 | 
						|
namespace MWGui
 | 
						|
{
 | 
						|
    class WindowBase;
 | 
						|
 | 
						|
    class TextInputDialog;
 | 
						|
    class InfoBoxDialog;
 | 
						|
    class RaceDialog;
 | 
						|
    class DialogueWindow;
 | 
						|
    class ClassChoiceDialog;
 | 
						|
    class GenerateClassResultDialog;
 | 
						|
    class PickClassDialog;
 | 
						|
    class CreateClassDialog;
 | 
						|
    class BirthDialog;
 | 
						|
    class ReviewDialog;
 | 
						|
    class MessageBoxManager;
 | 
						|
 | 
						|
    class CharacterCreation : public StatsListener
 | 
						|
    {
 | 
						|
    public:
 | 
						|
    typedef std::vector<int> SkillList;
 | 
						|
 | 
						|
    CharacterCreation(osg::Group* parent, Resource::ResourceSystem* resourceSystem);
 | 
						|
    virtual ~CharacterCreation();
 | 
						|
 | 
						|
    //Show a dialog
 | 
						|
    void spawnDialog(const char id);
 | 
						|
 | 
						|
    void setValue (const std::string& id, const MWMechanics::AttributeValue& value) override;
 | 
						|
    void setValue (const std::string& id, const MWMechanics::DynamicStat<float>& value) override;
 | 
						|
    void setValue(const ESM::Skill::SkillEnum parSkill, const MWMechanics::SkillValue& value) override;
 | 
						|
    void configureSkills(const SkillList& major, const SkillList& minor) override;
 | 
						|
 | 
						|
    void onFrame(float duration);
 | 
						|
 | 
						|
    private:
 | 
						|
    osg::Group* mParent;
 | 
						|
    Resource::ResourceSystem* mResourceSystem;
 | 
						|
 | 
						|
    SkillList mPlayerMajorSkills, mPlayerMinorSkills;
 | 
						|
    std::map<int, MWMechanics::AttributeValue> mPlayerAttributes;
 | 
						|
    std::map<int, MWMechanics::SkillValue> mPlayerSkillValues;
 | 
						|
 | 
						|
    //Dialogs
 | 
						|
    TextInputDialog* mNameDialog;
 | 
						|
    RaceDialog* mRaceDialog;
 | 
						|
    ClassChoiceDialog* mClassChoiceDialog;
 | 
						|
    InfoBoxDialog* mGenerateClassQuestionDialog;
 | 
						|
    GenerateClassResultDialog* mGenerateClassResultDialog;
 | 
						|
    PickClassDialog* mPickClassDialog;
 | 
						|
    CreateClassDialog* mCreateClassDialog;
 | 
						|
    BirthDialog* mBirthSignDialog;
 | 
						|
    ReviewDialog* mReviewDialog;
 | 
						|
 | 
						|
    //Player data
 | 
						|
    std::string mPlayerName;
 | 
						|
    std::string mPlayerRaceId;
 | 
						|
    std::string mPlayerBirthSignId;
 | 
						|
    ESM::Class mPlayerClass;
 | 
						|
 | 
						|
    //Class generation vars
 | 
						|
    unsigned mGenerateClassStep;                 // Keeps track of current step in Generate Class dialog
 | 
						|
    ESM::Class::Specialization mGenerateClassResponses[3];
 | 
						|
    unsigned mGenerateClassSpecializations[3];   // A counter for each specialization which is increased when an answer is chosen
 | 
						|
    std::string mGenerateClass;                  // In order: Combat, Magic, Stealth
 | 
						|
 | 
						|
    ////Dialog events
 | 
						|
    //Name dialog
 | 
						|
    void onNameDialogDone(WindowBase* parWindow);
 | 
						|
 | 
						|
    //Race dialog
 | 
						|
    void onRaceDialogDone(WindowBase* parWindow);
 | 
						|
    void onRaceDialogBack();
 | 
						|
    void selectRace();
 | 
						|
 | 
						|
    //Class dialogs
 | 
						|
    void onClassChoice(int _index);
 | 
						|
    void onPickClassDialogDone(WindowBase* parWindow);
 | 
						|
    void onPickClassDialogBack();
 | 
						|
    void onCreateClassDialogDone(WindowBase* parWindow);
 | 
						|
    void onCreateClassDialogBack();
 | 
						|
    void showClassQuestionDialog();
 | 
						|
    void onClassQuestionChosen(int _index);
 | 
						|
    void onGenerateClassBack();
 | 
						|
    void onGenerateClassDone(WindowBase* parWindow);
 | 
						|
    void selectGeneratedClass();
 | 
						|
    void selectCreatedClass();
 | 
						|
    void selectPickedClass();
 | 
						|
 | 
						|
    //Birthsign dialog
 | 
						|
    void onBirthSignDialogDone(WindowBase* parWindow);
 | 
						|
    void onBirthSignDialogBack();
 | 
						|
    void selectBirthSign();
 | 
						|
 | 
						|
    //Review dialog
 | 
						|
    void onReviewDialogDone(WindowBase* parWindow);
 | 
						|
    void onReviewDialogBack();
 | 
						|
    void onReviewActivateDialog(int parDialog);
 | 
						|
 | 
						|
    enum CSE    //Creation Stage Enum
 | 
						|
    {
 | 
						|
        CSE_NotStarted,
 | 
						|
        CSE_NameChosen,
 | 
						|
        CSE_RaceChosen,
 | 
						|
        CSE_ClassChosen,
 | 
						|
        CSE_BirthSignChosen,
 | 
						|
        CSE_ReviewBack,
 | 
						|
        CSE_ReviewNext
 | 
						|
    };
 | 
						|
 | 
						|
    CSE mCreationStage; // Which state the character creating is in, controls back/next/ok buttons
 | 
						|
 | 
						|
    void handleDialogDone(CSE currentStage, int nextMode);
 | 
						|
    };
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |