replaced explicit text with GMST entries, thanks to zinnschlag

pull/16/head
Tom Mason 12 years ago
parent ba2301a156
commit ad9b86058b

@ -370,7 +370,7 @@ void DialogueWindow::addText(std::string text)
mHistory->addDialogText("#B29154"+parseText(text)+"#B29154");
}
void DialogueWindow::addMessageBox(std::string text)
void DialogueWindow::addMessageBox(const std::string& text)
{
mHistory->addDialogText("\n#FFFFFF"+text+"#B29154");
}

@ -65,7 +65,7 @@ namespace MWGui
void setKeywords(std::list<std::string> keyWord);
void removeKeyword(std::string keyWord);
void addText(std::string text);
void addMessageBox(std::string text);
void addMessageBox(const std::string& text);
void addTitle(std::string text);
void askQuestion(std::string question);
void goodbye();

@ -3,6 +3,10 @@
#include <stdexcept>
#include <boost/format.hpp>
#include <MyGUI_LanguageManager.h>
#include <components/compiler/extensions.hpp>
#include <components/interpreter/interpreter.hpp>
@ -102,13 +106,14 @@ namespace MWScript
Interpreter::Type_Integer count = runtime[0].mInteger;
runtime.pop();
if (count<0)
throw std::runtime_error ("second argument for RemoveItem must be non-negative");
MWWorld::ContainerStore& store = MWWorld::Class::get (ptr).getContainerStore (ptr);
std::string itemName = "";
Interpreter::Type_Integer originalCount = count;
for (MWWorld::ContainerStoreIterator iter (store.begin()); iter!=store.end() && count;
++iter)
@ -129,8 +134,26 @@ namespace MWScript
}
}
}
/* The two GMST entries below expand to strings informing the player of what, and how many of it has been removed from their inventory */
std::string msgBox;
if(originalCount - count > 1)
{
msgBox = MyGUI::LanguageManager::getInstance().replaceTags("#{sNotifyMessage63}");
std::stringstream temp;
temp << boost::format(msgBox) % (originalCount - count) % itemName;
msgBox = temp.str();
}
else
{
msgBox = MyGUI::LanguageManager::getInstance().replaceTags("#{sNotifyMessage62}");
std::stringstream temp;
temp << boost::format(msgBox) % itemName;
msgBox = temp.str();
}
MWBase::Environment::get().getWindowManager()->messageBox(itemName + " has been removed from your inventory.", std::vector<std::string>());
if(originalCount - count > 0)
MWBase::Environment::get().getWindowManager()->messageBox(msgBox, std::vector<std::string>());
// To be fully compatible with original Morrowind, we would need to check if
// count is >= 0 here and throw an exception. But let's be tollerant instead.

Loading…
Cancel
Save