1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-21 14:09:39 +00:00

Spell creation: do not add skill/attribute effects before selecting the skill or attribute

This commit is contained in:
MiroslavR 2014-08-15 00:30:24 +02:00
parent 93ed019ca3
commit 1385a86bd4
2 changed files with 15 additions and 8 deletions

View file

@ -524,16 +524,24 @@ namespace MWGui
void EffectEditorBase::onSelectAttribute () void EffectEditorBase::onSelectAttribute ()
{ {
mAddEffectDialog.setVisible(true); const ESM::MagicEffect* effect =
MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(mSelectedKnownEffectId);
mAddEffectDialog.newEffect(effect);
mAddEffectDialog.setAttribute (mSelectAttributeDialog->getAttributeId()); mAddEffectDialog.setAttribute (mSelectAttributeDialog->getAttributeId());
mAddEffectDialog.setVisible(true);
MWBase::Environment::get().getWindowManager ()->removeDialog (mSelectAttributeDialog); MWBase::Environment::get().getWindowManager ()->removeDialog (mSelectAttributeDialog);
mSelectAttributeDialog = 0; mSelectAttributeDialog = 0;
} }
void EffectEditorBase::onSelectSkill () void EffectEditorBase::onSelectSkill ()
{ {
const ESM::MagicEffect* effect =
MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(mSelectedKnownEffectId);
mAddEffectDialog.newEffect(effect);
mAddEffectDialog.setSkill (mSelectSkillDialog->getSkillId());
mAddEffectDialog.setVisible(true); mAddEffectDialog.setVisible(true);
mAddEffectDialog.setSkill (mSelectSkillDialog->getSkillId ());
MWBase::Environment::get().getWindowManager ()->removeDialog (mSelectSkillDialog); MWBase::Environment::get().getWindowManager ()->removeDialog (mSelectSkillDialog);
mSelectSkillDialog = 0; mSelectSkillDialog = 0;
} }
@ -558,11 +566,10 @@ namespace MWGui
} }
int buttonId = *sender->getUserData<int>(); int buttonId = *sender->getUserData<int>();
short effectId = mButtonMapping[buttonId]; mSelectedKnownEffectId = mButtonMapping[buttonId];
for (std::vector<ESM::ENAMstruct>::const_iterator it = mEffects.begin(); it != mEffects.end(); ++it) for (std::vector<ESM::ENAMstruct>::const_iterator it = mEffects.begin(); it != mEffects.end(); ++it)
{ {
if (it->mEffectID == effectId) if (it->mEffectID == mSelectedKnownEffectId)
{ {
MWBase::Environment::get().getWindowManager()->messageBox ("#{sOnetypeEffectMessage}"); MWBase::Environment::get().getWindowManager()->messageBox ("#{sOnetypeEffectMessage}");
return; return;
@ -570,9 +577,7 @@ namespace MWGui
} }
const ESM::MagicEffect* effect = const ESM::MagicEffect* effect =
MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(effectId); MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(mSelectedKnownEffectId);
mAddEffectDialog.newEffect (effect);
if (effect->mData.mFlags & ESM::MagicEffect::TargetSkill) if (effect->mData.mFlags & ESM::MagicEffect::TargetSkill)
{ {
@ -592,6 +597,7 @@ namespace MWGui
} }
else else
{ {
mAddEffectDialog.newEffect(effect);
mAddEffectDialog.setVisible(true); mAddEffectDialog.setVisible(true);
} }
} }

View file

@ -99,6 +99,7 @@ namespace MWGui
SelectSkillDialog* mSelectSkillDialog; SelectSkillDialog* mSelectSkillDialog;
int mSelectedEffect; int mSelectedEffect;
short mSelectedKnownEffectId;
std::vector<ESM::ENAMstruct> mEffects; std::vector<ESM::ENAMstruct> mEffects;