|
|
|
@ -223,50 +223,60 @@ void DialogueWindow::onByeClicked(MyGUI::Widget* _sender)
|
|
|
|
|
MWBase::Environment::get().getDialogueManager()->goodbyeSelected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DialogueWindow::onSelectTopic(std::string topic)
|
|
|
|
|
void DialogueWindow::onSelectTopic(const std::string& topic, int id)
|
|
|
|
|
{
|
|
|
|
|
if (!mEnabled) return;
|
|
|
|
|
|
|
|
|
|
const MWWorld::Store<ESM::GameSetting> &gmst =
|
|
|
|
|
MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>();
|
|
|
|
|
|
|
|
|
|
if (topic == gmst.find("sBarter")->getString())
|
|
|
|
|
{
|
|
|
|
|
/// \todo check if the player is allowed to trade with this actor (e.g. faction rank high enough)?
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Barter);
|
|
|
|
|
mWindowManager.getTradeWindow()->startTrade(mPtr);
|
|
|
|
|
}
|
|
|
|
|
if (topic == gmst.find("sPersuasion")->getString())
|
|
|
|
|
{
|
|
|
|
|
mPersuasionDialog.setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sSpells")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_SpellBuying);
|
|
|
|
|
mWindowManager.getSpellBuyingWindow()->startSpellBuying(mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sTravel")->getString())
|
|
|
|
|
int separatorPos = mTopicsList->getItemCount();
|
|
|
|
|
for (unsigned int i=0; i<mTopicsList->getItemCount(); ++i)
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Travel);
|
|
|
|
|
mWindowManager.getTravelWindow()->startTravel(mPtr);
|
|
|
|
|
if (mTopicsList->getItemNameAt(i) == "")
|
|
|
|
|
separatorPos = i;
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sSpellMakingMenuTitle")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_SpellCreation);
|
|
|
|
|
mWindowManager.startSpellMaking (mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sEnchanting")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Enchanting);
|
|
|
|
|
mWindowManager.startEnchanting (mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sServiceTrainingTitle")->getString())
|
|
|
|
|
|
|
|
|
|
if (id > separatorPos)
|
|
|
|
|
MWBase::Environment::get().getDialogueManager()->keywordSelected(lower_string(topic));
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Training);
|
|
|
|
|
mWindowManager.startTraining (mPtr);
|
|
|
|
|
const MWWorld::Store<ESM::GameSetting> &gmst =
|
|
|
|
|
MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>();
|
|
|
|
|
|
|
|
|
|
if (topic == gmst.find("sBarter")->getString())
|
|
|
|
|
{
|
|
|
|
|
/// \todo check if the player is allowed to trade with this actor (e.g. faction rank high enough)?
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Barter);
|
|
|
|
|
mWindowManager.getTradeWindow()->startTrade(mPtr);
|
|
|
|
|
}
|
|
|
|
|
if (topic == gmst.find("sPersuasion")->getString())
|
|
|
|
|
{
|
|
|
|
|
mPersuasionDialog.setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sSpells")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_SpellBuying);
|
|
|
|
|
mWindowManager.getSpellBuyingWindow()->startSpellBuying(mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sTravel")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Travel);
|
|
|
|
|
mWindowManager.getTravelWindow()->startTravel(mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sSpellMakingMenuTitle")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_SpellCreation);
|
|
|
|
|
mWindowManager.startSpellMaking (mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sEnchanting")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Enchanting);
|
|
|
|
|
mWindowManager.startEnchanting (mPtr);
|
|
|
|
|
}
|
|
|
|
|
else if (topic == gmst.find("sServiceTrainingTitle")->getString())
|
|
|
|
|
{
|
|
|
|
|
mWindowManager.pushGuiMode(GM_Training);
|
|
|
|
|
mWindowManager.startTraining (mPtr);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
MWBase::Environment::get().getDialogueManager()->keywordSelected(lower_string(topic));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DialogueWindow::startDialogue(MWWorld::Ptr actor, std::string npcName)
|
|
|
|
|