|
|
|
@ -81,6 +81,15 @@ namespace MWGui
|
|
|
|
|
mDeleteButton->setVisible (false);
|
|
|
|
|
|
|
|
|
|
mEffect.mRange = ESM::RT_Self;
|
|
|
|
|
if (!(mMagicEffect->mData.mFlags & ESM::MagicEffect::CastSelf))
|
|
|
|
|
mEffect.mRange = ESM::RT_Touch;
|
|
|
|
|
if (!(mMagicEffect->mData.mFlags & ESM::MagicEffect::CastTouch))
|
|
|
|
|
mEffect.mRange = ESM::RT_Target;
|
|
|
|
|
mEffect.mMagnMin = 1;
|
|
|
|
|
mEffect.mMagnMax = 1;
|
|
|
|
|
mEffect.mDuration = 1;
|
|
|
|
|
mEffect.mArea = 0;
|
|
|
|
|
eventEffectAdded(mEffect);
|
|
|
|
|
|
|
|
|
|
onRangeButtonClicked(mRangeButton);
|
|
|
|
|
|
|
|
|
@ -93,11 +102,6 @@ namespace MWGui
|
|
|
|
|
mMagnitudeMinValue->setCaption("1");
|
|
|
|
|
mMagnitudeMaxValue->setCaption("- 1");
|
|
|
|
|
mAreaValue->setCaption("0");
|
|
|
|
|
|
|
|
|
|
mEffect.mMagnMin = 1;
|
|
|
|
|
mEffect.mMagnMax = 1;
|
|
|
|
|
mEffect.mDuration = 1;
|
|
|
|
|
mEffect.mArea = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::editEffect (ESM::ENAMstruct effect)
|
|
|
|
@ -106,7 +110,7 @@ namespace MWGui
|
|
|
|
|
MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(effect.mEffectID);
|
|
|
|
|
|
|
|
|
|
setMagicEffect(magicEffect);
|
|
|
|
|
|
|
|
|
|
mOldEffect = effect;
|
|
|
|
|
mEffect = effect;
|
|
|
|
|
mEditing = true;
|
|
|
|
|
|
|
|
|
@ -121,6 +125,7 @@ namespace MWGui
|
|
|
|
|
onMagnitudeMaxChanged (mMagnitudeMinSlider, effect.mMagnMax-1);
|
|
|
|
|
onAreaChanged (mAreaSlider, effect.mArea);
|
|
|
|
|
onDurationChanged (mDurationSlider, effect.mDuration-1);
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::setMagicEffect (const ESM::MagicEffect *effect)
|
|
|
|
@ -163,7 +168,7 @@ namespace MWGui
|
|
|
|
|
mDurationBox->setVisible (true);
|
|
|
|
|
curY += mDurationBox->getSize().height;
|
|
|
|
|
}
|
|
|
|
|
if (mEffect.mRange == ESM::RT_Target)
|
|
|
|
|
if (mEffect.mRange != ESM::RT_Self)
|
|
|
|
|
{
|
|
|
|
|
mAreaBox->setPosition(mAreaBox->getPosition().left, curY);
|
|
|
|
|
mAreaBox->setVisible (true);
|
|
|
|
@ -182,9 +187,6 @@ namespace MWGui
|
|
|
|
|
else if (mEffect.mRange == ESM::RT_Touch)
|
|
|
|
|
mRangeButton->setCaptionWithReplacing ("#{sRangeTouch}");
|
|
|
|
|
|
|
|
|
|
mAreaSlider->setVisible (mEffect.mRange != ESM::RT_Self);
|
|
|
|
|
mAreaText->setVisible (mEffect.mRange != ESM::RT_Self);
|
|
|
|
|
|
|
|
|
|
// cycle through range types until we find something that's allowed
|
|
|
|
|
if (mEffect.mRange == ESM::RT_Target && !(mMagicEffect->mData.mFlags & ESM::MagicEffect::CastTarget))
|
|
|
|
|
onRangeButtonClicked(sender);
|
|
|
|
@ -193,7 +195,13 @@ namespace MWGui
|
|
|
|
|
if (mEffect.mRange == ESM::RT_Touch && !(mMagicEffect->mData.mFlags & ESM::MagicEffect::CastTouch))
|
|
|
|
|
onRangeButtonClicked(sender);
|
|
|
|
|
|
|
|
|
|
if(mEffect.mRange == ESM::RT_Self)
|
|
|
|
|
{
|
|
|
|
|
mAreaSlider->setScrollPosition(0);
|
|
|
|
|
onAreaChanged(mAreaSlider,0);
|
|
|
|
|
}
|
|
|
|
|
updateBoxes();
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::onDeleteButtonClicked (MyGUI::Widget* sender)
|
|
|
|
@ -206,26 +214,27 @@ namespace MWGui
|
|
|
|
|
void EditEffectDialog::onOkButtonClicked (MyGUI::Widget* sender)
|
|
|
|
|
{
|
|
|
|
|
setVisible(false);
|
|
|
|
|
|
|
|
|
|
if (mEditing)
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
else
|
|
|
|
|
eventEffectAdded(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::onCancelButtonClicked (MyGUI::Widget* sender)
|
|
|
|
|
{
|
|
|
|
|
setVisible(false);
|
|
|
|
|
if(mEditing)
|
|
|
|
|
eventEffectModified(mOldEffect);
|
|
|
|
|
else
|
|
|
|
|
eventEffectRemoved(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::setSkill (int skill)
|
|
|
|
|
{
|
|
|
|
|
mEffect.mSkill = skill;
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::setAttribute (int attribute)
|
|
|
|
|
{
|
|
|
|
|
mEffect.mAttribute = attribute;
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::onMagnitudeMinChanged (MyGUI::ScrollBar* sender, size_t pos)
|
|
|
|
@ -235,6 +244,7 @@ namespace MWGui
|
|
|
|
|
|
|
|
|
|
// trigger the check again (see below)
|
|
|
|
|
onMagnitudeMaxChanged(mMagnitudeMaxSlider, mMagnitudeMaxSlider->getScrollPosition ());
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::onMagnitudeMaxChanged (MyGUI::ScrollBar* sender, size_t pos)
|
|
|
|
@ -250,18 +260,22 @@ namespace MWGui
|
|
|
|
|
mEffect.mMagnMax = pos+1;
|
|
|
|
|
|
|
|
|
|
mMagnitudeMaxValue->setCaption("- " + boost::lexical_cast<std::string>(pos+1));
|
|
|
|
|
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::onDurationChanged (MyGUI::ScrollBar* sender, size_t pos)
|
|
|
|
|
{
|
|
|
|
|
mDurationValue->setCaption(boost::lexical_cast<std::string>(pos+1));
|
|
|
|
|
mEffect.mDuration = pos+1;
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EditEffectDialog::onAreaChanged (MyGUI::ScrollBar* sender, size_t pos)
|
|
|
|
|
{
|
|
|
|
|
mAreaValue->setCaption(boost::lexical_cast<std::string>(pos));
|
|
|
|
|
mEffect.mArea = pos;
|
|
|
|
|
eventEffectModified(mEffect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
@ -615,6 +629,7 @@ namespace MWGui
|
|
|
|
|
void EffectEditorBase::onEffectAdded (ESM::ENAMstruct effect)
|
|
|
|
|
{
|
|
|
|
|
mEffects.push_back(effect);
|
|
|
|
|
mSelectedEffect=mEffects.size()-1;
|
|
|
|
|
|
|
|
|
|
updateEffectsView();
|
|
|
|
|
}
|
|
|
|
|