forked from teamnwah/openmw-tes3coop
Print exceptions in CharacterCreation::spawnDialog
This commit is contained in:
parent
f1b52c964a
commit
dca4704b4b
1 changed files with 124 additions and 117 deletions
|
@ -132,134 +132,141 @@ namespace MWGui
|
||||||
|
|
||||||
void CharacterCreation::spawnDialog(const char id)
|
void CharacterCreation::spawnDialog(const char id)
|
||||||
{
|
{
|
||||||
switch (id)
|
try
|
||||||
{
|
{
|
||||||
case GM_Name:
|
switch (id)
|
||||||
MWBase::Environment::get().getWindowManager()->removeDialog(mNameDialog);
|
{
|
||||||
mNameDialog = 0;
|
case GM_Name:
|
||||||
mNameDialog = new TextInputDialog();
|
MWBase::Environment::get().getWindowManager()->removeDialog(mNameDialog);
|
||||||
mNameDialog->setTextLabel(MWBase::Environment::get().getWindowManager()->getGameSettingString("sName", "Name"));
|
mNameDialog = 0;
|
||||||
mNameDialog->setTextInput(mPlayerName);
|
mNameDialog = new TextInputDialog();
|
||||||
mNameDialog->setNextButtonShow(mCreationStage >= CSE_NameChosen);
|
mNameDialog->setTextLabel(MWBase::Environment::get().getWindowManager()->getGameSettingString("sName", "Name"));
|
||||||
mNameDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onNameDialogDone);
|
mNameDialog->setTextInput(mPlayerName);
|
||||||
mNameDialog->setVisible(true);
|
mNameDialog->setNextButtonShow(mCreationStage >= CSE_NameChosen);
|
||||||
break;
|
mNameDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onNameDialogDone);
|
||||||
|
mNameDialog->setVisible(true);
|
||||||
|
break;
|
||||||
|
|
||||||
case GM_Race:
|
case GM_Race:
|
||||||
MWBase::Environment::get().getWindowManager()->removeDialog(mRaceDialog);
|
MWBase::Environment::get().getWindowManager()->removeDialog(mRaceDialog);
|
||||||
mRaceDialog = 0;
|
mRaceDialog = 0;
|
||||||
mRaceDialog = new RaceDialog(mViewer, mResourceSystem);
|
mRaceDialog = new RaceDialog(mViewer, mResourceSystem);
|
||||||
mRaceDialog->setNextButtonShow(mCreationStage >= CSE_RaceChosen);
|
mRaceDialog->setNextButtonShow(mCreationStage >= CSE_RaceChosen);
|
||||||
mRaceDialog->setRaceId(mPlayerRaceId);
|
mRaceDialog->setRaceId(mPlayerRaceId);
|
||||||
mRaceDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onRaceDialogDone);
|
mRaceDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onRaceDialogDone);
|
||||||
mRaceDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onRaceDialogBack);
|
mRaceDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onRaceDialogBack);
|
||||||
mRaceDialog->setVisible(true);
|
mRaceDialog->setVisible(true);
|
||||||
if (mCreationStage < CSE_NameChosen)
|
if (mCreationStage < CSE_NameChosen)
|
||||||
mCreationStage = CSE_NameChosen;
|
mCreationStage = CSE_NameChosen;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GM_Class:
|
case GM_Class:
|
||||||
MWBase::Environment::get().getWindowManager()->removeDialog(mClassChoiceDialog);
|
MWBase::Environment::get().getWindowManager()->removeDialog(mClassChoiceDialog);
|
||||||
mClassChoiceDialog = 0;
|
mClassChoiceDialog = 0;
|
||||||
mClassChoiceDialog = new ClassChoiceDialog();
|
mClassChoiceDialog = new ClassChoiceDialog();
|
||||||
mClassChoiceDialog->eventButtonSelected += MyGUI::newDelegate(this, &CharacterCreation::onClassChoice);
|
mClassChoiceDialog->eventButtonSelected += MyGUI::newDelegate(this, &CharacterCreation::onClassChoice);
|
||||||
mClassChoiceDialog->setVisible(true);
|
mClassChoiceDialog->setVisible(true);
|
||||||
if (mCreationStage < CSE_RaceChosen)
|
if (mCreationStage < CSE_RaceChosen)
|
||||||
mCreationStage = CSE_RaceChosen;
|
mCreationStage = CSE_RaceChosen;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GM_ClassPick:
|
case GM_ClassPick:
|
||||||
MWBase::Environment::get().getWindowManager()->removeDialog(mPickClassDialog);
|
MWBase::Environment::get().getWindowManager()->removeDialog(mPickClassDialog);
|
||||||
mPickClassDialog = 0;
|
mPickClassDialog = 0;
|
||||||
mPickClassDialog = new PickClassDialog();
|
mPickClassDialog = new PickClassDialog();
|
||||||
mPickClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen);
|
mPickClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen);
|
||||||
mPickClassDialog->setClassId(mPlayerClass.mName);
|
mPickClassDialog->setClassId(mPlayerClass.mName);
|
||||||
mPickClassDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onPickClassDialogDone);
|
mPickClassDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onPickClassDialogDone);
|
||||||
mPickClassDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onPickClassDialogBack);
|
mPickClassDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onPickClassDialogBack);
|
||||||
mPickClassDialog->setVisible(true);
|
mPickClassDialog->setVisible(true);
|
||||||
if (mCreationStage < CSE_RaceChosen)
|
if (mCreationStage < CSE_RaceChosen)
|
||||||
mCreationStage = CSE_RaceChosen;
|
mCreationStage = CSE_RaceChosen;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GM_Birth:
|
case GM_Birth:
|
||||||
MWBase::Environment::get().getWindowManager()->removeDialog(mBirthSignDialog);
|
MWBase::Environment::get().getWindowManager()->removeDialog(mBirthSignDialog);
|
||||||
mBirthSignDialog = 0;
|
mBirthSignDialog = 0;
|
||||||
mBirthSignDialog = new BirthDialog();
|
mBirthSignDialog = new BirthDialog();
|
||||||
mBirthSignDialog->setNextButtonShow(mCreationStage >= CSE_BirthSignChosen);
|
mBirthSignDialog->setNextButtonShow(mCreationStage >= CSE_BirthSignChosen);
|
||||||
mBirthSignDialog->setBirthId(mPlayerBirthSignId);
|
mBirthSignDialog->setBirthId(mPlayerBirthSignId);
|
||||||
mBirthSignDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onBirthSignDialogDone);
|
mBirthSignDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onBirthSignDialogDone);
|
||||||
mBirthSignDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onBirthSignDialogBack);
|
mBirthSignDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onBirthSignDialogBack);
|
||||||
mBirthSignDialog->setVisible(true);
|
mBirthSignDialog->setVisible(true);
|
||||||
if (mCreationStage < CSE_ClassChosen)
|
if (mCreationStage < CSE_ClassChosen)
|
||||||
mCreationStage = CSE_ClassChosen;
|
mCreationStage = CSE_ClassChosen;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GM_ClassCreate:
|
case GM_ClassCreate:
|
||||||
if (!mCreateClassDialog)
|
if (!mCreateClassDialog)
|
||||||
{
|
|
||||||
mCreateClassDialog = new CreateClassDialog();
|
|
||||||
mCreateClassDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onCreateClassDialogDone);
|
|
||||||
mCreateClassDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onCreateClassDialogBack);
|
|
||||||
}
|
|
||||||
mCreateClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen);
|
|
||||||
mCreateClassDialog->setVisible(true);
|
|
||||||
if (mCreationStage < CSE_RaceChosen)
|
|
||||||
mCreationStage = CSE_RaceChosen;
|
|
||||||
break;
|
|
||||||
case GM_ClassGenerate:
|
|
||||||
mGenerateClassStep = 0;
|
|
||||||
mGenerateClass = "";
|
|
||||||
mGenerateClassSpecializations[0] = 0;
|
|
||||||
mGenerateClassSpecializations[1] = 0;
|
|
||||||
mGenerateClassSpecializations[2] = 0;
|
|
||||||
showClassQuestionDialog();
|
|
||||||
if (mCreationStage < CSE_RaceChosen)
|
|
||||||
mCreationStage = CSE_RaceChosen;
|
|
||||||
break;
|
|
||||||
case GM_Review:
|
|
||||||
MWBase::Environment::get().getWindowManager()->removeDialog(mReviewDialog);
|
|
||||||
mReviewDialog = 0;
|
|
||||||
mReviewDialog = new ReviewDialog();
|
|
||||||
mReviewDialog->setPlayerName(mPlayerName);
|
|
||||||
mReviewDialog->setRace(mPlayerRaceId);
|
|
||||||
mReviewDialog->setClass(mPlayerClass);
|
|
||||||
mReviewDialog->setBirthSign(mPlayerBirthSignId);
|
|
||||||
|
|
||||||
{
|
|
||||||
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
|
||||||
const MWMechanics::CreatureStats& stats = player.getClass().getCreatureStats(player);
|
|
||||||
|
|
||||||
mReviewDialog->setHealth ( stats.getHealth() );
|
|
||||||
mReviewDialog->setMagicka( stats.getMagicka() );
|
|
||||||
mReviewDialog->setFatigue( stats.getFatigue() );
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::map<int, MWMechanics::AttributeValue > attributes = MWBase::Environment::get().getWindowManager()->getPlayerAttributeValues();
|
|
||||||
for (std::map<int, MWMechanics::AttributeValue >::iterator it = attributes.begin();
|
|
||||||
it != attributes.end(); ++it)
|
|
||||||
{
|
{
|
||||||
mReviewDialog->setAttribute(static_cast<ESM::Attribute::AttributeID> (it->first), it->second);
|
mCreateClassDialog = new CreateClassDialog();
|
||||||
|
mCreateClassDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onCreateClassDialogDone);
|
||||||
|
mCreateClassDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onCreateClassDialogBack);
|
||||||
}
|
}
|
||||||
}
|
mCreateClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen);
|
||||||
|
mCreateClassDialog->setVisible(true);
|
||||||
|
if (mCreationStage < CSE_RaceChosen)
|
||||||
|
mCreationStage = CSE_RaceChosen;
|
||||||
|
break;
|
||||||
|
case GM_ClassGenerate:
|
||||||
|
mGenerateClassStep = 0;
|
||||||
|
mGenerateClass = "";
|
||||||
|
mGenerateClassSpecializations[0] = 0;
|
||||||
|
mGenerateClassSpecializations[1] = 0;
|
||||||
|
mGenerateClassSpecializations[2] = 0;
|
||||||
|
showClassQuestionDialog();
|
||||||
|
if (mCreationStage < CSE_RaceChosen)
|
||||||
|
mCreationStage = CSE_RaceChosen;
|
||||||
|
break;
|
||||||
|
case GM_Review:
|
||||||
|
MWBase::Environment::get().getWindowManager()->removeDialog(mReviewDialog);
|
||||||
|
mReviewDialog = 0;
|
||||||
|
mReviewDialog = new ReviewDialog();
|
||||||
|
mReviewDialog->setPlayerName(mPlayerName);
|
||||||
|
mReviewDialog->setRace(mPlayerRaceId);
|
||||||
|
mReviewDialog->setClass(mPlayerClass);
|
||||||
|
mReviewDialog->setBirthSign(mPlayerBirthSignId);
|
||||||
|
|
||||||
{
|
|
||||||
std::map<int, MWMechanics::SkillValue > skills = MWBase::Environment::get().getWindowManager()->getPlayerSkillValues();
|
|
||||||
for (std::map<int, MWMechanics::SkillValue >::iterator it = skills.begin();
|
|
||||||
it != skills.end(); ++it)
|
|
||||||
{
|
{
|
||||||
mReviewDialog->setSkillValue(static_cast<ESM::Skill::SkillEnum> (it->first), it->second);
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
||||||
}
|
const MWMechanics::CreatureStats& stats = player.getClass().getCreatureStats(player);
|
||||||
mReviewDialog->configureSkills(MWBase::Environment::get().getWindowManager()->getPlayerMajorSkills(), MWBase::Environment::get().getWindowManager()->getPlayerMinorSkills());
|
|
||||||
}
|
|
||||||
|
|
||||||
mReviewDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onReviewDialogDone);
|
mReviewDialog->setHealth ( stats.getHealth() );
|
||||||
mReviewDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onReviewDialogBack);
|
mReviewDialog->setMagicka( stats.getMagicka() );
|
||||||
mReviewDialog->eventActivateDialog += MyGUI::newDelegate(this, &CharacterCreation::onReviewActivateDialog);
|
mReviewDialog->setFatigue( stats.getFatigue() );
|
||||||
mReviewDialog->setVisible(true);
|
}
|
||||||
if (mCreationStage < CSE_BirthSignChosen)
|
|
||||||
mCreationStage = CSE_BirthSignChosen;
|
{
|
||||||
break;
|
std::map<int, MWMechanics::AttributeValue > attributes = MWBase::Environment::get().getWindowManager()->getPlayerAttributeValues();
|
||||||
|
for (std::map<int, MWMechanics::AttributeValue >::iterator it = attributes.begin();
|
||||||
|
it != attributes.end(); ++it)
|
||||||
|
{
|
||||||
|
mReviewDialog->setAttribute(static_cast<ESM::Attribute::AttributeID> (it->first), it->second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
std::map<int, MWMechanics::SkillValue > skills = MWBase::Environment::get().getWindowManager()->getPlayerSkillValues();
|
||||||
|
for (std::map<int, MWMechanics::SkillValue >::iterator it = skills.begin();
|
||||||
|
it != skills.end(); ++it)
|
||||||
|
{
|
||||||
|
mReviewDialog->setSkillValue(static_cast<ESM::Skill::SkillEnum> (it->first), it->second);
|
||||||
|
}
|
||||||
|
mReviewDialog->configureSkills(MWBase::Environment::get().getWindowManager()->getPlayerMajorSkills(), MWBase::Environment::get().getWindowManager()->getPlayerMinorSkills());
|
||||||
|
}
|
||||||
|
|
||||||
|
mReviewDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onReviewDialogDone);
|
||||||
|
mReviewDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onReviewDialogBack);
|
||||||
|
mReviewDialog->eventActivateDialog += MyGUI::newDelegate(this, &CharacterCreation::onReviewActivateDialog);
|
||||||
|
mReviewDialog->setVisible(true);
|
||||||
|
if (mCreationStage < CSE_BirthSignChosen)
|
||||||
|
mCreationStage = CSE_BirthSignChosen;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
std::cerr << "Failed to create chargen window: " << e.what() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue