1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-15 07:06:44 +00:00

Issue #107: removed a template from the window manager

This commit is contained in:
Marc Zinnschlag 2012-08-12 16:07:04 +02:00
parent 484cce12a8
commit 35a64edf2a
3 changed files with 58 additions and 66 deletions

View file

@ -187,8 +187,8 @@ void CharacterCreation::spawnDialog(const char id)
switch (id) switch (id)
{ {
case GM_Name: case GM_Name:
if(mNameDialog) mWM->removeDialog(mNameDialog);
mWM->removeDialog(mNameDialog); mNameDialog = 0;
mNameDialog = new TextInputDialog(*mWM); mNameDialog = new TextInputDialog(*mWM);
mNameDialog->setTextLabel(mWM->getGameSettingString("sName", "Name")); mNameDialog->setTextLabel(mWM->getGameSettingString("sName", "Name"));
mNameDialog->setTextInput(mPlayerName); mNameDialog->setTextInput(mPlayerName);
@ -198,8 +198,8 @@ void CharacterCreation::spawnDialog(const char id)
break; break;
case GM_Race: case GM_Race:
if (mRaceDialog) mWM->removeDialog(mRaceDialog);
mWM->removeDialog(mRaceDialog); mRaceDialog = 0;
mRaceDialog = new RaceDialog(*mWM); mRaceDialog = new RaceDialog(*mWM);
mRaceDialog->setNextButtonShow(mCreationStage >= CSE_RaceChosen); mRaceDialog->setNextButtonShow(mCreationStage >= CSE_RaceChosen);
mRaceDialog->setRaceId(mPlayerRaceId); mRaceDialog->setRaceId(mPlayerRaceId);
@ -209,16 +209,16 @@ void CharacterCreation::spawnDialog(const char id)
break; break;
case GM_Class: case GM_Class:
if (mClassChoiceDialog) mWM->removeDialog(mClassChoiceDialog);
mWM->removeDialog(mClassChoiceDialog); mClassChoiceDialog = 0;
mClassChoiceDialog = new ClassChoiceDialog(*mWM); mClassChoiceDialog = new ClassChoiceDialog(*mWM);
mClassChoiceDialog->eventButtonSelected += MyGUI::newDelegate(this, &CharacterCreation::onClassChoice); mClassChoiceDialog->eventButtonSelected += MyGUI::newDelegate(this, &CharacterCreation::onClassChoice);
mClassChoiceDialog->open(); mClassChoiceDialog->open();
break; break;
case GM_ClassPick: case GM_ClassPick:
if (mPickClassDialog) mWM->removeDialog(mPickClassDialog);
mWM->removeDialog(mPickClassDialog); mPickClassDialog = 0;
mPickClassDialog = new PickClassDialog(*mWM); mPickClassDialog = new PickClassDialog(*mWM);
mPickClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen); mPickClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen);
mPickClassDialog->setClassId(mPlayerClass.name); mPickClassDialog->setClassId(mPlayerClass.name);
@ -228,8 +228,8 @@ void CharacterCreation::spawnDialog(const char id)
break; break;
case GM_Birth: case GM_Birth:
if (mBirthSignDialog) mWM->removeDialog(mBirthSignDialog);
mWM->removeDialog(mBirthSignDialog); mBirthSignDialog = 0;
mBirthSignDialog = new BirthDialog(*mWM); mBirthSignDialog = new BirthDialog(*mWM);
mBirthSignDialog->setNextButtonShow(mCreationStage >= CSE_BirthSignChosen); mBirthSignDialog->setNextButtonShow(mCreationStage >= CSE_BirthSignChosen);
mBirthSignDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onBirthSignDialogDone); mBirthSignDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onBirthSignDialogDone);
@ -238,8 +238,8 @@ void CharacterCreation::spawnDialog(const char id)
break; break;
case GM_ClassCreate: case GM_ClassCreate:
if (mCreateClassDialog) mWM->removeDialog(mCreateClassDialog);
mWM->removeDialog(mCreateClassDialog); mCreateClassDialog = 0;
mCreateClassDialog = new CreateClassDialog(*mWM); mCreateClassDialog = new CreateClassDialog(*mWM);
mCreateClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen); mCreateClassDialog->setNextButtonShow(mCreationStage >= CSE_ClassChosen);
mCreateClassDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onCreateClassDialogDone); mCreateClassDialog->eventDone += MyGUI::newDelegate(this, &CharacterCreation::onCreateClassDialogDone);
@ -255,8 +255,8 @@ void CharacterCreation::spawnDialog(const char id)
showClassQuestionDialog(); showClassQuestionDialog();
break; break;
case GM_Review: case GM_Review:
if (mReviewDialog) mWM->removeDialog(mReviewDialog);
mWM->removeDialog(mReviewDialog); mReviewDialog = 0;
mReviewDialog = new ReviewDialog(*mWM); mReviewDialog = new ReviewDialog(*mWM);
mReviewDialog->setPlayerName(mPlayerName); mReviewDialog->setPlayerName(mPlayerName);
mReviewDialog->setRace(mPlayerRaceId); mReviewDialog->setRace(mPlayerRaceId);
@ -311,24 +311,24 @@ void CharacterCreation::setPlayerFatigue (const MWMechanics::DynamicStat<int>& v
void CharacterCreation::onReviewDialogDone(WindowBase* parWindow) void CharacterCreation::onReviewDialogDone(WindowBase* parWindow)
{ {
if (mReviewDialog) mWM->removeDialog(mReviewDialog);
mWM->removeDialog(mReviewDialog); mReviewDialog = 0;
mWM->popGuiMode(); mWM->popGuiMode();
} }
void CharacterCreation::onReviewDialogBack() void CharacterCreation::onReviewDialogBack()
{ {
if (mReviewDialog) mWM->removeDialog(mReviewDialog);
mWM->removeDialog(mReviewDialog); mReviewDialog = 0;
mWM->pushGuiMode(GM_Birth); mWM->pushGuiMode(GM_Birth);
} }
void CharacterCreation::onReviewActivateDialog(int parDialog) void CharacterCreation::onReviewActivateDialog(int parDialog)
{ {
if (mReviewDialog) mWM->removeDialog(mReviewDialog);
mWM->removeDialog(mReviewDialog); mReviewDialog = 0;
mCreationStage = CSE_ReviewNext; mCreationStage = CSE_ReviewNext;
mWM->popGuiMode(); mWM->popGuiMode();
@ -363,6 +363,7 @@ void CharacterCreation::onPickClassDialogDone(WindowBase* parWindow)
mWM->setPlayerClass(mPlayerClass); mWM->setPlayerClass(mPlayerClass);
} }
mWM->removeDialog(mPickClassDialog); mWM->removeDialog(mPickClassDialog);
mPickClassDialog = 0;
} }
//TODO This bit gets repeated a few times; wrap it in a function //TODO This bit gets repeated a few times; wrap it in a function
@ -391,6 +392,7 @@ void CharacterCreation::onPickClassDialogBack()
if (!classId.empty()) if (!classId.empty())
MWBase::Environment::get().getMechanicsManager()->setPlayerClass(classId); MWBase::Environment::get().getMechanicsManager()->setPlayerClass(classId);
mWM->removeDialog(mPickClassDialog); mWM->removeDialog(mPickClassDialog);
mPickClassDialog = 0;
} }
mWM->popGuiMode(); mWM->popGuiMode();
@ -399,10 +401,8 @@ void CharacterCreation::onPickClassDialogBack()
void CharacterCreation::onClassChoice(int _index) void CharacterCreation::onClassChoice(int _index)
{ {
if (mClassChoiceDialog) mWM->removeDialog(mClassChoiceDialog);
{ mClassChoiceDialog = 0;
mWM->removeDialog(mClassChoiceDialog);
}
mWM->popGuiMode(); mWM->popGuiMode();
@ -432,6 +432,7 @@ void CharacterCreation::onNameDialogDone(WindowBase* parWindow)
mWM->setValue("name", mPlayerName); mWM->setValue("name", mPlayerName);
MWBase::Environment::get().getMechanicsManager()->setPlayerName(mPlayerName); MWBase::Environment::get().getMechanicsManager()->setPlayerName(mPlayerName);
mWM->removeDialog(mNameDialog); mWM->removeDialog(mNameDialog);
mNameDialog = 0;
} }
if (mCreationStage == CSE_ReviewNext) if (mCreationStage == CSE_ReviewNext)
@ -459,6 +460,7 @@ void CharacterCreation::onRaceDialogBack()
if (!mPlayerRaceId.empty()) if (!mPlayerRaceId.empty())
MWBase::Environment::get().getMechanicsManager()->setPlayerRace(mPlayerRaceId, mRaceDialog->getGender() == RaceDialog::GM_Male); MWBase::Environment::get().getMechanicsManager()->setPlayerRace(mPlayerRaceId, mRaceDialog->getGender() == RaceDialog::GM_Male);
mWM->removeDialog(mRaceDialog); mWM->removeDialog(mRaceDialog);
mRaceDialog = 0;
} }
mWM->popGuiMode(); mWM->popGuiMode();
@ -474,6 +476,7 @@ void CharacterCreation::onRaceDialogDone(WindowBase* parWindow)
if (!mPlayerRaceId.empty()) if (!mPlayerRaceId.empty())
MWBase::Environment::get().getMechanicsManager()->setPlayerRace(mPlayerRaceId, mRaceDialog->getGender() == RaceDialog::GM_Male); MWBase::Environment::get().getMechanicsManager()->setPlayerRace(mPlayerRaceId, mRaceDialog->getGender() == RaceDialog::GM_Male);
mWM->removeDialog(mRaceDialog); mWM->removeDialog(mRaceDialog);
mRaceDialog = 0;
} }
if (mCreationStage == CSE_ReviewNext) if (mCreationStage == CSE_ReviewNext)
@ -501,6 +504,7 @@ void CharacterCreation::onBirthSignDialogDone(WindowBase* parWindow)
if (!mPlayerBirthSignId.empty()) if (!mPlayerBirthSignId.empty())
MWBase::Environment::get().getMechanicsManager()->setPlayerBirthsign(mPlayerBirthSignId); MWBase::Environment::get().getMechanicsManager()->setPlayerBirthsign(mPlayerBirthSignId);
mWM->removeDialog(mBirthSignDialog); mWM->removeDialog(mBirthSignDialog);
mBirthSignDialog = 0;
} }
if (mCreationStage >= CSE_BirthSignChosen) if (mCreationStage >= CSE_BirthSignChosen)
@ -521,6 +525,7 @@ void CharacterCreation::onBirthSignDialogBack()
{ {
MWBase::Environment::get().getMechanicsManager()->setPlayerBirthsign(mBirthSignDialog->getBirthId()); MWBase::Environment::get().getMechanicsManager()->setPlayerBirthsign(mBirthSignDialog->getBirthId());
mWM->removeDialog(mBirthSignDialog); mWM->removeDialog(mBirthSignDialog);
mBirthSignDialog = 0;
} }
mWM->popGuiMode(); mWM->popGuiMode();
@ -556,6 +561,7 @@ void CharacterCreation::onCreateClassDialogDone(WindowBase* parWindow)
mWM->setPlayerClass(klass); mWM->setPlayerClass(klass);
mWM->removeDialog(mCreateClassDialog); mWM->removeDialog(mCreateClassDialog);
mCreateClassDialog = 0;
} }
if (mCreationStage == CSE_ReviewNext) if (mCreationStage == CSE_ReviewNext)
@ -577,8 +583,8 @@ void CharacterCreation::onCreateClassDialogDone(WindowBase* parWindow)
void CharacterCreation::onCreateClassDialogBack() void CharacterCreation::onCreateClassDialogBack()
{ {
if (mCreateClassDialog) mWM->removeDialog(mCreateClassDialog);
mWM->removeDialog(mCreateClassDialog); mCreateClassDialog = 0;
mWM->popGuiMode(); mWM->popGuiMode();
mWM->pushGuiMode(GM_Class); mWM->pushGuiMode(GM_Class);
@ -588,8 +594,9 @@ void CharacterCreation::onClassQuestionChosen(int _index)
{ {
MWBase::Environment::get().getSoundManager()->stopSay(); MWBase::Environment::get().getSoundManager()->stopSay();
if (mGenerateClassQuestionDialog) mWM->removeDialog(mGenerateClassQuestionDialog);
mWM->removeDialog(mGenerateClassQuestionDialog); mGenerateClassQuestionDialog = 0;
if (_index < 0 || _index >= 3) if (_index < 0 || _index >= 3)
{ {
mWM->popGuiMode(); mWM->popGuiMode();
@ -666,8 +673,9 @@ void CharacterCreation::showClassQuestionDialog()
} }
} }
if (mGenerateClassResultDialog) mWM->removeDialog(mGenerateClassResultDialog);
mWM->removeDialog(mGenerateClassResultDialog); mGenerateClassResultDialog = 0;
mGenerateClassResultDialog = new GenerateClassResultDialog(*mWM); mGenerateClassResultDialog = new GenerateClassResultDialog(*mWM);
mGenerateClassResultDialog->setClassId(mGenerateClass); mGenerateClassResultDialog->setClassId(mGenerateClass);
mGenerateClassResultDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onGenerateClassBack); mGenerateClassResultDialog->eventBack += MyGUI::newDelegate(this, &CharacterCreation::onGenerateClassBack);
@ -683,8 +691,9 @@ void CharacterCreation::showClassQuestionDialog()
return; return;
} }
if (mGenerateClassQuestionDialog) mWM->removeDialog(mGenerateClassQuestionDialog);
mWM->removeDialog(mGenerateClassQuestionDialog); mGenerateClassQuestionDialog = 0;
mGenerateClassQuestionDialog = new InfoBoxDialog(*mWM); mGenerateClassQuestionDialog = new InfoBoxDialog(*mWM);
InfoBoxDialog::ButtonList buttons; InfoBoxDialog::ButtonList buttons;
@ -704,8 +713,9 @@ void CharacterCreation::onGenerateClassBack()
if(mCreationStage < CSE_ClassChosen) if(mCreationStage < CSE_ClassChosen)
mCreationStage = CSE_ClassChosen; mCreationStage = CSE_ClassChosen;
if (mGenerateClassResultDialog) mWM->removeDialog(mGenerateClassResultDialog);
mWM->removeDialog(mGenerateClassResultDialog); mGenerateClassResultDialog = 0;
MWBase::Environment::get().getMechanicsManager()->setPlayerClass(mGenerateClass); MWBase::Environment::get().getMechanicsManager()->setPlayerClass(mGenerateClass);
mWM->popGuiMode(); mWM->popGuiMode();
@ -714,8 +724,9 @@ void CharacterCreation::onGenerateClassBack()
void CharacterCreation::onGenerateClassDone(WindowBase* parWindow) void CharacterCreation::onGenerateClassDone(WindowBase* parWindow)
{ {
if (mGenerateClassResultDialog) mWM->removeDialog(mGenerateClassResultDialog);
mWM->removeDialog(mGenerateClassResultDialog); mGenerateClassResultDialog = 0;
MWBase::Environment::get().getMechanicsManager()->setPlayerClass(mGenerateClass); MWBase::Environment::get().getMechanicsManager()->setPlayerClass(mGenerateClass);
const ESM::Class *klass = MWBase::Environment::get().getWorld()->getStore().classes.find(mGenerateClass); const ESM::Class *klass = MWBase::Environment::get().getWorld()->getStore().classes.find(mGenerateClass);
mPlayerClass = *klass; mPlayerClass = *klass;

View file

@ -558,26 +558,17 @@ void CreateClassDialog::open()
void CreateClassDialog::onDialogCancel() void CreateClassDialog::onDialogCancel()
{ {
if (mSpecDialog) mWindowManager.removeDialog(mSpecDialog);
{ mSpecDialog = 0;
mWindowManager.removeDialog(mSpecDialog);
mSpecDialog = 0; mWindowManager.removeDialog(mAttribDialog);
} mAttribDialog = 0;
if (mAttribDialog)
{ mWindowManager.removeDialog(mSkillDialog);
mWindowManager.removeDialog(mAttribDialog); mSkillDialog = 0;
mAttribDialog = 0;
} mWindowManager.removeDialog(mDescDialog);
if (mSkillDialog) mDescDialog = 0;
{
mWindowManager.removeDialog(mSkillDialog);
mSkillDialog = 0;
}
if (mDescDialog)
{
mWindowManager.removeDialog(mDescDialog);
mDescDialog = 0;
}
} }
void CreateClassDialog::onSpecializationClicked(MyGUI::WidgetPtr _sender) void CreateClassDialog::onSpecializationClicked(MyGUI::WidgetPtr _sender)

View file

@ -177,8 +177,6 @@ namespace MWGui
void unsetSelectedSpell(); void unsetSelectedSpell();
void unsetSelectedWeapon(); void unsetSelectedWeapon();
template<typename T>
void removeDialog(T*& dialog); ///< Casts to OEngine::GUI::Layout and calls removeDialog, then resets pointer to nullptr.
void removeDialog(OEngine::GUI::Layout* dialog); ///< Hides dialog and schedules dialog to be deleted. void removeDialog(OEngine::GUI::Layout* dialog); ///< Hides dialog and schedules dialog to be deleted.
void messageBox (const std::string& message, const std::vector<std::string>& buttons); void messageBox (const std::string& message, const std::vector<std::string>& buttons);
@ -271,14 +269,6 @@ namespace MWGui
*/ */
void onRetrieveTag(const MyGUI::UString& _tag, MyGUI::UString& _result); void onRetrieveTag(const MyGUI::UString& _tag, MyGUI::UString& _result);
}; };
template<typename T>
void WindowManager::removeDialog(T*& dialog)
{
OEngine::GUI::Layout *d = static_cast<OEngine::GUI::Layout*>(dialog);
removeDialog(d);
dialog = 0;
}
} }
#endif #endif