mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-28 21:06:41 +00:00
fixed ID handling and some misc cleanup
This commit is contained in:
parent
3fad1c0786
commit
06677a0fc8
2 changed files with 22 additions and 23 deletions
|
@ -58,12 +58,11 @@ namespace MWGui
|
||||||
mSelect->getHeight());
|
mSelect->getHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellBuyingWindow::addSpell(std::string spellID)
|
void SpellBuyingWindow::addSpell(std::string spellId)
|
||||||
{
|
{
|
||||||
MyGUI::Button* toAdd;
|
const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().spells.find(spellId);
|
||||||
const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().spells.find(spellID);
|
|
||||||
int price = spell->data.cost*MWBase::Environment::get().getWorld()->getStore().gameSettings.search("fSpellValueMult")->f;
|
int price = spell->data.cost*MWBase::Environment::get().getWorld()->getStore().gameSettings.search("fSpellValueMult")->f;
|
||||||
toAdd = mSpellsClientWidget->createWidget<MyGUI::Button>((price>mWindowManager.getInventoryWindow()->getPlayerGold()) ? "SandTextGreyedOut" : "SpellText", 0, mCurrentY, 200, sLineHeight, MyGUI::Align::Default);
|
MyGUI::Button* toAdd = mSpellsClientWidget->createWidget<MyGUI::Button>((price>mWindowManager.getInventoryWindow()->getPlayerGold()) ? "SandTextGreyedOut" : "SpellText", 0, mCurrentY, 200, sLineHeight, MyGUI::Align::Default);
|
||||||
mCurrentY += sLineHeight;
|
mCurrentY += sLineHeight;
|
||||||
/// \todo price adjustment depending on merchantile skill
|
/// \todo price adjustment depending on merchantile skill
|
||||||
toAdd->setUserData(price);
|
toAdd->setUserData(price);
|
||||||
|
@ -71,9 +70,9 @@ namespace MWGui
|
||||||
toAdd->setSize(toAdd->getTextSize().width,sLineHeight);
|
toAdd->setSize(toAdd->getTextSize().width,sLineHeight);
|
||||||
toAdd->eventMouseWheel += MyGUI::newDelegate(this, &SpellBuyingWindow::onMouseWheel);
|
toAdd->eventMouseWheel += MyGUI::newDelegate(this, &SpellBuyingWindow::onMouseWheel);
|
||||||
toAdd->setUserString("ToolTipType", "Spell");
|
toAdd->setUserString("ToolTipType", "Spell");
|
||||||
toAdd->setUserString("Spell", spellID);
|
toAdd->setUserString("Spell", spellId);
|
||||||
toAdd->eventMouseButtonClick += MyGUI::newDelegate(this, &SpellBuyingWindow::onSpellButtonClick);
|
toAdd->eventMouseButtonClick += MyGUI::newDelegate(this, &SpellBuyingWindow::onSpellButtonClick);
|
||||||
mSpellsWidgetMap.insert(std::pair<MyGUI::Widget*, const ESM::Spell*>(toAdd,spell));
|
mSpellsWidgetMap.insert(std::make_pair (toAdd, spellId));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellBuyingWindow::clearSpells()
|
void SpellBuyingWindow::clearSpells()
|
||||||
|
@ -92,33 +91,33 @@ namespace MWGui
|
||||||
mActor = actor;
|
mActor = actor;
|
||||||
clearSpells();
|
clearSpells();
|
||||||
|
|
||||||
if (actor.getTypeName() == typeid(ESM::NPC).name())
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
||||||
|
MWMechanics::CreatureStats& stats = MWWorld::Class::get(player).getCreatureStats(player);
|
||||||
|
MWMechanics::Spells& playerSpells = stats.getSpells();
|
||||||
|
/// \todo get spell list via class interface
|
||||||
|
std::vector<std::string> spellList = actor.get<ESM::NPC>()->base->spells.list;
|
||||||
|
for (std::vector<std::string>::const_iterator it = spellList.begin(); it != spellList.end(); ++it)
|
||||||
{
|
{
|
||||||
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
bool alreadyHave = false;
|
||||||
MWMechanics::CreatureStats& stats = MWWorld::Class::get(player).getCreatureStats(player);
|
for (std::vector<std::string>::const_iterator it2 = playerSpells.begin(); it2 != playerSpells.end(); ++it2)
|
||||||
MWMechanics::Spells& playerSpells = stats.getSpells();
|
|
||||||
std::vector<std::string> spellList = actor.get<ESM::NPC>()->base->spells.list;
|
|
||||||
for (std::vector<std::string>::const_iterator it = spellList.begin(); it != spellList.end(); ++it)
|
|
||||||
{
|
{
|
||||||
bool alreadyHave = false;
|
if (*it==*it2)
|
||||||
for (std::vector<std::string>::const_iterator it2 = playerSpells.begin(); it2 != playerSpells.end(); ++it2)
|
|
||||||
{
|
{
|
||||||
std::string spellname1 = MWBase::Environment::get().getWorld()->getStore().spells.find(*it)->name;
|
alreadyHave = true;
|
||||||
std::string spellname2 = MWBase::Environment::get().getWorld()->getStore().spells.find(*it2)->name;
|
break;
|
||||||
if (spellname1.compare(spellname2)==0)
|
|
||||||
alreadyHave = true;
|
|
||||||
}
|
}
|
||||||
if (alreadyHave==false)
|
|
||||||
addSpell(*it);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (alreadyHave==false)
|
||||||
|
addSpell(*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLabels();
|
updateLabels();
|
||||||
updateScroller();
|
updateScroller();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellBuyingWindow::onSpellButtonClick(MyGUI::Widget* _sender)
|
void SpellBuyingWindow::onSpellButtonClick(MyGUI::Widget* _sender)
|
||||||
{
|
{
|
||||||
const ESM::Spell* spell = mSpellsWidgetMap.find(_sender)->second;
|
|
||||||
int price = *_sender->getUserData<int>();
|
int price = *_sender->getUserData<int>();
|
||||||
|
|
||||||
if (mWindowManager.getInventoryWindow()->getPlayerGold()>=price)
|
if (mWindowManager.getInventoryWindow()->getPlayerGold()>=price)
|
||||||
|
@ -126,7 +125,7 @@ namespace MWGui
|
||||||
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
||||||
MWMechanics::CreatureStats& stats = MWWorld::Class::get(player).getCreatureStats(player);
|
MWMechanics::CreatureStats& stats = MWWorld::Class::get(player).getCreatureStats(player);
|
||||||
MWMechanics::Spells& spells = stats.getSpells();
|
MWMechanics::Spells& spells = stats.getSpells();
|
||||||
spells.add(spell->name);
|
spells.add (mSpellsWidgetMap.find(_sender)->second);
|
||||||
mWindowManager.getTradeWindow()->addOrRemoveGold(-price);
|
mWindowManager.getTradeWindow()->addOrRemoveGold(-price);
|
||||||
mSpellsScrollerWidget->setScrollPosition(0);
|
mSpellsScrollerWidget->setScrollPosition(0);
|
||||||
onScrollChangePosition(mSpellsScrollerWidget, mSpellsScrollerWidget->getScrollPosition());
|
onScrollChangePosition(mSpellsScrollerWidget, mSpellsScrollerWidget->getScrollPosition());
|
||||||
|
|
|
@ -38,7 +38,7 @@ namespace MWGui
|
||||||
|
|
||||||
MWWorld::Ptr mActor;
|
MWWorld::Ptr mActor;
|
||||||
|
|
||||||
std::map<MyGUI::Widget*, const ESM::Spell*> mSpellsWidgetMap;
|
std::map<MyGUI::Widget*, std::string> mSpellsWidgetMap;
|
||||||
|
|
||||||
void onCancelButtonClicked(MyGUI::Widget* _sender);
|
void onCancelButtonClicked(MyGUI::Widget* _sender);
|
||||||
void onSpellButtonClick(MyGUI::Widget* _sender);
|
void onSpellButtonClick(MyGUI::Widget* _sender);
|
||||||
|
|
Loading…
Reference in a new issue