diff --git a/apps/openmw/mwdialogue/dialoguemanager.cpp b/apps/openmw/mwdialogue/dialoguemanager.cpp index 525e072c65..eb78e9e9de 100644 --- a/apps/openmw/mwdialogue/dialoguemanager.cpp +++ b/apps/openmw/mwdialogue/dialoguemanager.cpp @@ -181,10 +181,6 @@ namespace MWDialogue { return true; } - /*if(!choice && !isAChoice) - { - return false; - }*/ if(isFunction) { return false; @@ -202,7 +198,6 @@ namespace MWDialogue char comp = select.selectRule[4]; std::string name = select.selectRule.substr (5); std::string function = select.selectRule.substr(1,2); - //std::cout << function; // TODO types 4, 5, 6, 7, 8, 9, A, B, C //new TOTO: 5,6,9 @@ -373,7 +368,6 @@ namespace MWDialogue bool DialogueManager::isMatching (const MWWorld::Ptr& actor, const ESM::DialInfo& info) const { - //bool return true;//does the actor knows the topic? // actor id if (!info.actor.empty()) if (toLower (info.actor)!=MWWorld::Class::get (actor).getId (actor)) @@ -489,15 +483,13 @@ namespace MWDialogue { if(pos==0) { - //std::cout << "fouuuuuuuuuuund"; knownTopics[it->first] = true; - win->addKeyword(it->first,it->second.front().response); + win->addKeyword(it->first); } else if(text.substr(pos -1,1) == " ") { - //std::cout << "fouuuuuuuuuuund"; knownTopics[it->first] = true; - win->addKeyword(it->first,it->second.front().response); + win->addKeyword(it->first); } } } @@ -516,6 +508,7 @@ namespace MWDialogue MWGui::DialogueWindow* win = mEnvironment.mWindowManager->getDialogueWindow(); win->startDialogue(MWWorld::Class::get (actor).getName (actor)); + //setup the list of topics known by the actor. Topics who are also on the knownTopics list will be added to the GUI actorKnownTopics.clear(); ESMS::RecListT::MapType dialogueList = mEnvironment.mWorld->getStore().dialogs.list; for(ESMS::RecListT::MapType::iterator it = dialogueList.begin(); it!=dialogueList.end();it++) @@ -529,16 +522,16 @@ namespace MWDialogue if (isMatching (actor, *iter) && functionFilter(mActor,*iter,false)) { actorKnownTopics[it->first].push_back(*iter); + //does the player know the topic? if(knownTopics.find(toLower(it->first)) != knownTopics.end()) { MWGui::DialogueWindow* win = mEnvironment.mWindowManager->getDialogueWindow(); - win->addKeyword(it->first,iter->response); + win->addKeyword(it->first); } } } } } - //ESMS::RecListT::MapType dialogueList = mEnvironment.mWorld->getStore().dialogs.list; //greeting bool greetingFound = false; @@ -558,11 +551,6 @@ namespace MWDialogue // TODO play sound } - if (!iter->resultScript.empty()) - { - //std::cout << "script: " << iter->resultScript << std::endl; - // TODO execute script - } std::string text = iter->response; parseText(text); win->addText(iter->response); @@ -682,13 +670,11 @@ namespace MWDialogue mChoice = mChoiceMap[answere]; std::list dials = actorKnownTopics[mLastTopic]; - //bool passedLastDialogue = false; std::cout << actorKnownTopics[mLastTopic].size() << mLastTopic; std::list::iterator iter; for(iter = actorKnownTopics[mLastTopic].begin(); iter->id != mLastDialogue.id;iter++) { } - //iter--; for(std::list::iterator it = iter; it!=actorKnownTopics[mLastTopic].begin();) { it--; diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index a68596a39d..88b44c9c41 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -80,25 +80,14 @@ void DialogueWindow::onHistoryClicked(MyGUI::Widget* _sender) if(color != "#B29154") { UString key = history->getColorTextAt(cursorPosition); + if(color == "#686EBA") mEnvironment.mDialogueManager->keywordSelected(lower_string(key)); - //std::cout << "Clicked on key: " << key << std::endl; - if(color == "#686EBA") - { - //displayTopicText(lower_string(key)); - mEnvironment.mDialogueManager->keywordSelected(lower_string(key)); - } - if(color == "#572D21") - { - //TODO: send back the answere to the question! - mEnvironment.mDialogueManager->questionAnswered(key); - //std::cout << "and the ansere is..."<< key; - } + if(color == "#572D21") mEnvironment.mDialogueManager->questionAnswered(key); } } void DialogueWindow::open() { - //updateOptions(); topicsList->removeAllItems(); pTopicsText.clear(); history->eraseText(0,history->getTextLength()); @@ -108,7 +97,6 @@ void DialogueWindow::open() void DialogueWindow::onByeClicked(MyGUI::Widget* _sender) { - //eventBye(); mEnvironment.mDialogueManager->goodbyeSelected(); } @@ -117,12 +105,7 @@ void DialogueWindow::onSelectTopic(MyGUI::List* _sender, size_t _index) if (_index == MyGUI::ITEM_NONE) return; std::string topic = _sender->getItem(_index); - //displayTopicText(topic); mEnvironment.mDialogueManager->keywordSelected(lower_string(topic)); - - //const std::string* theTopic = topicsList->getItemDataAt(_index); - //std::cout << "Selected: "<< theTopic << std::endl; - //eventTopicSelected(key); } void DialogueWindow::startDialogue(std::string npcName) @@ -130,12 +113,12 @@ void DialogueWindow::startDialogue(std::string npcName) setText("NpcName", npcName); } -void DialogueWindow::addKeyword(std::string keyWord,std::string topicText) +void DialogueWindow::addKeyword(std::string keyWord) { if(topicsList->findItemIndexWith(keyWord) == MyGUI::ITEM_NONE) { topicsList->addItem(keyWord); - pTopicsText[keyWord] = topicText; + pTopicsText[keyWord] = " "; } } @@ -170,35 +153,19 @@ void addColorInString(std::string& str, const std::string& keyword,std::string c str.insert(pos,color2); pos+= color2.length(); } - //str.replace(pos, oldStr.length(), "#686EBA"+str.get); } } std::string DialogueWindow::parseText(std::string text) { - //topicsList->geti for(int i = 0;igetItemCount();i++) { std::string keyWord = topicsList->getItem(i); - //std::string newKeyWord = "#686EBA"+keyWord+"#B29154"; addColorInString(text,keyWord,"#686EBA","#B29154"); } return text; } -void DialogueWindow::displayTopicText(std::string topic) -{ - if(topicsList->findItemIndexWith(topic) != MyGUI::ITEM_NONE) - { - history->addDialogHeading(topic); - history->addDialogText(parseText(pTopicsText[topic])); - } - else - { - std::cout << "topic not found!"; - } -} - void DialogueWindow::addText(std::string text) { history->addDialogText("#B29154"+parseText(text)+"#B29154"); @@ -212,60 +179,18 @@ void DialogueWindow::addTitle(std::string text) void DialogueWindow::askQuestion(std::string question) { history->addDialogText("#572D21"+question+"#B29154"+" "); - /*for(std::list::iterator it = answers.begin();it!=answers.end();it++) - { - history->addDialogText("#572D21"+(*it)+"#B29154"+" "); - }*/ } void DialogueWindow::updateOptions() { - //FIXME Add this properly - /*history->addDialogText("Through the translucent surface of the orb, you see shifting images of distant locations..."); - for(int z = 0; z < 10; z++) - { - history->addDialogHeading("Fort Frostmoth"); - history->addDialogText("The image in the orb flickers, and you see.... The cold courtyard of #FF0000Fort Frostmoth#FFFFFF, battered bu werewolf attack, but still standing, still projecting Imperial might even to this distant and cold corner of the world."); - }*/ - //Clear the list of topics topicsList->removeAllItems(); pTopicsText.clear(); history->eraseText(0,history->getTextLength()); - /*addKeyword("gus","gus is working on the dialogue system"); - displayTopicText("gus");*/ - pDispositionBar->setProgressRange(100); pDispositionBar->setProgressPosition(40); pDispositionText->eraseText(0,pDispositionText->getTextLength()); pDispositionText->addText("#B29154"+std::string("40/100")+"#B29154"); - - /*std::list test; - test.push_back("option 1"); - test.push_back("option 2"); - askQuestion("is gus cooking?",test);*/ - /*topicsList->addItem("Ald'ruhn", i++); - topicsList->addItem("Balmora", i++); - topicsList->addItem("Sadrith Mora", i++); - topicsList->addItem("Vivec", i++); - topicsList->addItem("Ald Velothi", i++); - topicsList->addItem("Caldera", i++); - topicsList->addItem("Dagon Fel ", i++); - topicsList->addItem("Gnaar Mok", i++); - topicsList->addItem("Gnisis", i++); - topicsList->addItem("Hla Oad", i++); - topicsList->addItem("Khuul", i++); - topicsList->addItem("Maar Gan", i++); - topicsList->addItem("Molag Mar", i++); - topicsList->addItem("Pelagiad", i++); - topicsList->addItem("Seyda Neen", i++); - topicsList->addItem("Suran", i++); - topicsList->addItem("Tel Aruhn", i++); - topicsList->addItem("Tel Branora", i++); - topicsList->addItem("Tel Fyr", i++); - topicsList->addItem("Tel Mora", i++); - topicsList->addItem("Tel Vos", i++); - topicsList->addItem("Vos", i++);*/ } diff --git a/apps/openmw/mwgui/dialogue.hpp b/apps/openmw/mwgui/dialogue.hpp index a2d82b64b0..4520d4586e 100644 --- a/apps/openmw/mwgui/dialogue.hpp +++ b/apps/openmw/mwgui/dialogue.hpp @@ -42,7 +42,7 @@ namespace MWGui void startDialogue(std::string npcName); void stopDialogue(); - void addKeyword(std::string keyWord,std::string topicText); + void addKeyword(std::string keyWord); void removeKeyword(std::string keyWord); void addText(std::string text); void addTitle(std::string text); @@ -59,7 +59,6 @@ namespace MWGui *Helper function that add topic keyword in blue in a text. */ std::string parseText(std::string text); - void displayTopicText(std::string topic); DialogeHistory* history; MyGUI::ListPtr topicsList; diff --git a/apps/openmw/mwscript/dialogueextensions.cpp b/apps/openmw/mwscript/dialogueextensions.cpp index 331cb0a341..78a52a1850 100644 --- a/apps/openmw/mwscript/dialogueextensions.cpp +++ b/apps/openmw/mwscript/dialogueextensions.cpp @@ -95,12 +95,10 @@ namespace MWScript virtual void execute (Interpreter::Runtime& runtime, unsigned int arg0) { - std::cout << "CHOICE" << arg0; arg0 = 4; MWScript::InterpreterContext& context = static_cast (runtime.getContext()); MWDialogue::DialogueManager* dialogue = context.getEnvironment().mDialogueManager; - //int choice = 1; while(arg0>0) { std::string question = runtime.getStringLiteral (runtime[0].mInteger);