forked from mirror/openmw-tes3mp
Fix spell icons displayed when effect ended
This commit is contained in:
parent
a47c76001c
commit
ad3646cb15
1 changed files with 52 additions and 43 deletions
|
@ -129,48 +129,17 @@ namespace MWGui
|
||||||
effectInfo.mMagnitude = static_cast<int> (0.05*it->second.second / (0.1 * magicEffect->mData.mBaseCost));
|
effectInfo.mMagnitude = static_cast<int> (0.05*it->second.second / (0.1 * magicEffect->mData.mBaseCost));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
effects[effectIt->mEffectID].push_back (effectInfo);
|
effects[effectIt->mEffectID].push_back (effectInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int w=2;
|
int w=2;
|
||||||
|
|
||||||
if (adjustSize)
|
|
||||||
{
|
|
||||||
int s = effects.size() * 16+4;
|
|
||||||
if (effects.empty())
|
|
||||||
s = 0;
|
|
||||||
int diff = parent->getWidth() - s;
|
|
||||||
parent->setSize(s, parent->getHeight());
|
|
||||||
parent->setPosition(parent->getLeft()+diff, parent->getTop());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for (std::map <int, std::vector<MagicEffectInfo> >::const_iterator it = effects.begin(); it != effects.end(); ++it)
|
for (std::map <int, std::vector<MagicEffectInfo> >::const_iterator it = effects.begin(); it != effects.end(); ++it)
|
||||||
{
|
{
|
||||||
MyGUI::ImageBox* image;
|
|
||||||
if (mWidgetMap.find(it->first) == mWidgetMap.end())
|
|
||||||
image = parent->createWidget<MyGUI::ImageBox>
|
|
||||||
("ImageBox", MyGUI::IntCoord(w,2,16,16), MyGUI::Align::Default);
|
|
||||||
else
|
|
||||||
image = mWidgetMap[it->first];
|
|
||||||
mWidgetMap[it->first] = image;
|
|
||||||
image->setPosition(w,2);
|
|
||||||
image->setVisible(true);
|
|
||||||
|
|
||||||
const ESM::MagicEffect* effect =
|
const ESM::MagicEffect* effect =
|
||||||
MWBase::Environment::get().getWorld ()->getStore ().get<ESM::MagicEffect>().find(it->first);
|
MWBase::Environment::get().getWorld ()->getStore ().get<ESM::MagicEffect>().find(it->first);
|
||||||
|
|
||||||
std::string icon = effect->mIcon;
|
|
||||||
icon[icon.size()-3] = 'd';
|
|
||||||
icon[icon.size()-2] = 'd';
|
|
||||||
icon[icon.size()-1] = 's';
|
|
||||||
icon = "icons\\" + icon;
|
|
||||||
|
|
||||||
image->setImageTexture(icon);
|
|
||||||
w += 16;
|
|
||||||
|
|
||||||
float remainingDuration = 0;
|
float remainingDuration = 0;
|
||||||
|
|
||||||
std::string sourcesDescription;
|
std::string sourcesDescription;
|
||||||
|
@ -210,21 +179,62 @@ namespace MWGui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remainingDuration > 0.f)
|
||||||
|
{
|
||||||
|
MyGUI::ImageBox* image;
|
||||||
|
if (mWidgetMap.find(it->first) == mWidgetMap.end())
|
||||||
|
{
|
||||||
|
image = parent->createWidget<MyGUI::ImageBox>
|
||||||
|
("ImageBox", MyGUI::IntCoord(w,2,16,16), MyGUI::Align::Default);
|
||||||
|
mWidgetMap[it->first] = image;
|
||||||
|
|
||||||
|
std::string icon = effect->mIcon;
|
||||||
|
icon[icon.size()-3] = 'd';
|
||||||
|
icon[icon.size()-2] = 'd';
|
||||||
|
icon[icon.size()-1] = 's';
|
||||||
|
icon = "icons\\" + icon;
|
||||||
|
|
||||||
|
image->setImageTexture(icon);
|
||||||
|
|
||||||
std::string name = ESM::MagicEffect::effectIdToString (it->first);
|
std::string name = ESM::MagicEffect::effectIdToString (it->first);
|
||||||
|
|
||||||
ToolTipInfo tooltipInfo;
|
ToolTipInfo tooltipInfo;
|
||||||
tooltipInfo.caption = "#{" + name + "}";
|
tooltipInfo.caption = "#{" + name + "}";
|
||||||
tooltipInfo.icon = effect->mIcon;
|
tooltipInfo.icon = effect->mIcon;
|
||||||
tooltipInfo.text = sourcesDescription;
|
|
||||||
tooltipInfo.imageSize = 16;
|
tooltipInfo.imageSize = 16;
|
||||||
tooltipInfo.wordWrap = false;
|
tooltipInfo.wordWrap = false;
|
||||||
|
|
||||||
image->setUserData(tooltipInfo);
|
image->setUserData(tooltipInfo);
|
||||||
image->setUserString("ToolTipType", "ToolTipInfo");
|
image->setUserString("ToolTipType", "ToolTipInfo");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
image = mWidgetMap[it->first];
|
||||||
|
|
||||||
|
image->setPosition(w,2);
|
||||||
|
image->setVisible(true);
|
||||||
|
w += 16;
|
||||||
|
|
||||||
|
ToolTipInfo* tooltipInfo = image->getUserData<ToolTipInfo>();
|
||||||
|
tooltipInfo->text = sourcesDescription;
|
||||||
|
|
||||||
// Fade out during the last 5 seconds
|
// Fade out during the last 5 seconds
|
||||||
image->setAlpha(std::min(remainingDuration/fadeTime, 1.f));
|
image->setAlpha(std::min(remainingDuration/fadeTime, 1.f));
|
||||||
}
|
}
|
||||||
|
else if (mWidgetMap.find(it->first) != mWidgetMap.end())
|
||||||
|
{
|
||||||
|
mWidgetMap[it->first]->setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (adjustSize)
|
||||||
|
{
|
||||||
|
int s = w + 2;
|
||||||
|
if (effects.empty())
|
||||||
|
s = 0;
|
||||||
|
int diff = parent->getWidth() - s;
|
||||||
|
parent->setSize(s, parent->getHeight());
|
||||||
|
parent->setPosition(parent->getLeft()+diff, parent->getTop());
|
||||||
|
}
|
||||||
|
|
||||||
// hide inactive effects
|
// hide inactive effects
|
||||||
for (std::map<int, MyGUI::ImageBox*>::iterator it = mWidgetMap.begin(); it != mWidgetMap.end(); ++it)
|
for (std::map<int, MyGUI::ImageBox*>::iterator it = mWidgetMap.begin(); it != mWidgetMap.end(); ++it)
|
||||||
|
@ -232,7 +242,6 @@ namespace MWGui
|
||||||
if (effects.find(it->first) == effects.end())
|
if (effects.find(it->first) == effects.end())
|
||||||
it->second->setVisible(false);
|
it->second->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue