Changeset 11642
- Timestamp:
- Dec 7, 2017, 9:25:39 AM (7 years ago)
- Location:
- code/branches/Dialog_HS17
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/Dialog_HS17/data/gui/layouts/Dialog.layout
r11579 r11642 2 2 3 3 <GUILayout > 4 <Window Type="DefaultWindow" Name="orxonox/Dialog ue/Background" >4 <Window Type="DefaultWindow" Name="orxonox/Dialog/Background" > 5 5 <Property Name="InheritsAlpha" Value="False" /> 6 6 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 7 7 <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" /> 8 <Window Type="MenuWidgets/StaticText" Name="orxonox/Dialog ue/Inventory" >8 <Window Type="MenuWidgets/StaticText" Name="orxonox/Dialog/Options" > 9 9 <Property Name="Alpha" Value="0.8" /> 10 10 <Property Name="InheritsAlpha" Value="False" /> … … 13 13 <Property Name="VertFormatting" Value="TopAligned" /> 14 14 <Property Name="UnifiedAreaRect" Value="{{0.15,0},{0.15,0},{0.85,0},{0.8,0}}" /> 15 <Window Type="MenuWidgets/StaticText" Name="orxonox/Dialogue/Wrapper" > 16 <Property Name="TextColours" Value="FF4444FF" /> 15 16 <Window Type="MenuWidgets/StaticText" Name="orxonox/Dialog/Person" > 17 <Property Name="Alpha" Value="0.8" /> 17 18 <Property Name="InheritsAlpha" Value="False" /> 19 <Property Name="HorzFormatting" Value="LeftAligned" /> 18 20 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 21 <Property Name="VertFormatting" Value="CentreAligned" /> 22 <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.05,0},{0.25,0},{0.15,0}}" /> 23 </Window> 24 <Window Type="MenuWidgets/StaticText" Name="orxonox/Dialog/Question" > 25 <Property Name="Alpha" Value="0.8" /> 26 <Property Name="InheritsAlpha" Value="False" /> 27 <Property Name="HorzFormatting" Value="LeftAligned" /> 28 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 29 <Property Name="VertFormatting" Value="CentreAligned" /> 30 <Property Name="UnifiedAreaRect" Value="{{0.3,0},{0.05,0},{0.95,0},{0.15,0}}" /> 31 </Window> 32 33 <Window Type="MenuWidgets/StaticText" Name="orxonox/DialogAns" > 34 <Property Name="InheritsAlpha" Value="False" /> 19 35 <Property Name="HorzFormatting" Value="HorzCentred" /> 36 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 20 37 <Property Name="VertFormatting" Value="TopAligned" /> 21 <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.15,0},{0.95,0},{0.92,0}}" /> 22 <Window Type="MenuWidgets/TabControl" Name="orxonox/SingleplayerTabControl" > 23 <Property Name="TabHeight" Value="{0,26.4388}" /> 38 <Property Name="UnifiedAreaRect" Value="{{0.604166,0},{0.15,0},{0.958333,0},{0.636,0}}" /> 39 <Window Type="MenuWidgets/Listbox" Name="orxonox/AnsListbox" > 24 40 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 25 <Property Name=" TabPanePosition" Value="Top" />26 < Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.1,0},{0,95,0},{0.925,0}}" />41 <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.225,0},{0.95,0},{0.92,0}}" /> 42 <Event Name="ItemSelectionChanged" Function="Dialog.answer_changed" /> 27 43 </Window> 44 </Window> 45 <Window Type="MenuWidgets/Button" Name="orxonox/SayButton" > 46 <Property Name="Text" Value="Say" /> 47 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" /> 48 <Property Name="UnifiedAreaRect" Value="{{0.425,0},{0.9,0},{0.575,0},{0.975,0}}" /> 49 <Event Name="Clicked" Function="Dialog.Button_clicked"/> 28 50 </Window> 29 51 </Window> -
code/branches/Dialog_HS17/data/gui/scripts/Dialog.lua
r11612 r11642 5 5 P.wrapper = nil 6 6 P.detailsWindows = {} 7 8 7 P.showing = false 9 8 … … 32 31 end 33 32 34 function P.update()35 P.updateDialog()36 end37 38 33 function P.createDialog() 39 34 40 35 local manager = orxonox.DialogManager:getInstance() 41 36 42 ---[[43 root = winMgr:getWindow("orxonox/Dialogue/Inventory")44 local question = orxonox.DialogueManager:getInstance():getquestion()45 root:setText(question)46 P.wrapper = winMgr:createWindow("MenuWidgets/ScrollablePane", "orxonox/Dialogue/Inventory/Wrapper")47 P.wrapper:setSize(CEGUI.UVector2(CEGUI.UDim(1,0),CEGUI.UDim(1,0)))48 root:addChildWindow(P.wrapper)49 37 38 local personfield = winMgr:getWindow("orxonox/Dialog/Person") 39 local person = manager:getPerson() 40 personfield:setText(person) 41 42 local questionfiled = winMgr:getWindow("orxonox/Dialog/Question") 43 local question = manager:getQuestion() 44 questionfiled:setText(question) 45 46 listboxwindow = winMgr:getWindow("orxonox/AnsListbox") 47 48 local themeList = {} 49 --[[ 50 table.insert(themeList, "Default") 51 table.insert(themeList, "Drum n' Bass") 52 table.insert(themeList, "8-Bit Style") 53 table.insert(themeList, "Corny Jazz") 54 table.insert(themeList, "Metal") 50 55 --]] 51 detailsButton = winMgr:createWindow("MenuWidgets/Button", "/DetailsButton") 52 detailsButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.1, 0),CEGUI.UDim(0.5, (P.imageHeight-P.textHeight)/2))) 53 detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0.25, 0), CEGUI.UDim(0, P.textHeight))) 54 detailsButton:setText("say") 55 orxonox.GUIManager:subscribeEventHelper(detailsButton, "Clicked", P.name ..".Button_clicked") 56 P.wrapper:addChildWindow(detailsButton) 57 --]] 56 local anssize = manager:getSize() 58 57 58 for index = 0, anssize -1, 1 do 59 table.insert(themeList, manager:getAnswer(index)) 60 end 61 62 for k,v in pairs(themeList) do 63 item = CEGUI.createListboxTextItem(v) 64 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 65 CEGUI.toListbox(listboxwindow):addItem(item) 66 end 59 67 end 60 68 61 69 function P.updateDialog() 62 --local questionn = orxonox.DialogueManager:getInstance():getquestion() 63 --root:setText("test") 70 local manager = orxonox.DialogManager:getInstance() 71 --manager:update() 72 73 local questionfiled = winMgr:getWindow("orxonox/Dialog/Question") 74 local question = manager:getQuestion() 75 questionfiled:setText(question) 76 end 77 78 function P.answer_changed(e) 79 -- body 64 80 end 65 81 … … 86 102 87 103 function P.Button_clicked(e) 88 --local ending = orxonox.DialogManager:getInstance():theEnd() 104 local ending = orxonox.DialogManager:getInstance():endtest() 105 orxonox.CommandExecutor:execute("OrxonoxOverlay toggleVisibility Dialog") 89 106 90 --if ending then107 if ending then 91 108 orxonox.CommandExecutor:execute("OrxonoxOverlay toggleVisibility Dialog") 92 109 93 110 94 -- else 95 -- orxonox.DialogueManager:getInstance():a1clicked() 96 -- P.update() 97 -- end 111 else 112 P.updateDialog(index) 113 end 98 114 end 99 115 -
code/branches/Dialog_HS17/data/levels/DialogueShowcase2.oxw
r11579 r11642 33 33 34 34 <Dialog name="Kurt" currentQuestionId="loop"> 35 <Question question="Soll ich dich loopen?" Id="loop"> 36 <AnswerId Id="ja"/> 37 <AnswerId Id="nein"/> 38 </Question> 39 <Question question="Dann eben nicht" Id="ok"/> 40 <Answer Id="ja" answer="ja loop mich" nextQuestionId="loop"/> 41 <Answer Id="nein" answer="lieber nicht" nextQuestionId="ok"/> 35 <questions> 36 <Question question="Soll ich dich loopen?" Id="loop"> 37 <answerIds> 38 <AnswerId Id="ja"/> 39 <AnswerId Id="nein"/> 40 </answerIds> 41 </Question> 42 <Question question="Dann eben nicht" Id="ok"/> 43 </questions> 44 <answers> 45 <Answer Id="ja" answer="ja loop mich" nextQuestionId="loop"/> 46 <Answer Id="nein" answer="lieber nicht" nextQuestionId="ok"/> 47 </answers> 42 48 <events> 43 49 <execute> -
code/branches/Dialog_HS17/src/modules/dialog/Dialog.cc
r11612 r11642 24 24 XMLPortParam(Dialog, "name", setName, getName, xmlelement, mode); 25 25 XMLPortParam(Dialog, "currentQuestionId", setCurrentQuestionId, getCurrentQuestionId, xmlelement, mode); 26 XMLPortObject(Dialog, Question, " Questions", addQuestion, getQuestion, xmlelement, mode);27 XMLPortObject(Dialog, Answer, " Answers", addAnswer, getAnswer, xmlelement, mode);26 XMLPortObject(Dialog, Question, "questions", addQuestion, getQuestion, xmlelement, mode); 27 XMLPortObject(Dialog, Answer, "answers", addAnswer, getAnswer, xmlelement, mode); 28 28 } 29 29 … … 79 79 } 80 80 81 std::vector<std::string> Dialog::getAnswers() // returned vector mit allen momentanen AntwortenIds81 std::vector<std::string>* Dialog::getAnswerIds() // returned vector mit allen momentanen AntwortenIds 82 82 { 83 83 84 84 Question* question = (this->questions_.find(this->currentQuestionId_))->second; 85 std::vector<std::string> answers = question->getAnswerIds();85 std::vector<std::string>* answers = question->getAnswerIds(); 86 86 return answers; 87 87 88 } 88 89 … … 90 91 { 91 92 DialogManager& m = DialogManager::getInstance(); 92 m.setDialog(this); 93 orxout() << "dialog executed \n"; 94 OrxonoxOverlay::showOverlay("Dialog"); 95 93 94 if(questions_.count(this->currentQuestionId_)){ 95 m.setDialog(this); 96 OrxonoxOverlay::showOverlay("Dialog"); 97 } 98 else { 99 orxout() << "no start defined " << endl; 100 } 101 96 102 return false; 97 103 } … … 106 112 { 107 113 bool end = false; 108 if (this->currentQuestionId_ == "end"){ 109 end = true; 110 } else if ((this->questions_.find(this->currentQuestionId_)->second)->getAnswerIds().empty()){ 114 if ((this->questions_.find(this->currentQuestionId_)->second)->getAnswerIds()->empty()){ 111 115 end = true; 112 116 } … … 118 122 return this->questions_.find(this->currentQuestionId_)->second->getQuestion(); 119 123 } 124 125 std::string Dialog::getAnswerString(std::string answerId) 126 { 127 return this->answers_.find(answerId)->second->getAnswer(); 128 } 120 129 } -
code/branches/Dialog_HS17/src/modules/dialog/Dialog.h
r11612 r11642 35 35 Question* getQuestion(unsigned int index) const; // // benoetigt fuer xmlPort 36 36 Answer* getAnswer(unsigned int index) const; // benoetigt fuer xmlPort 37 std::vector<std::string> getAnswers(); // returned vector mit allen momentanen AntwortenIds37 std::vector<std::string>* getAnswerIds(); // returned vector mit allen momentanen AntwortenIds 38 38 39 39 bool execute(bool bTriggered, BaseObject* trigger); … … 44 44 45 45 std::string getQuestionString(); //gibt string der momentanen Frage 46 std::string getAnswerString(std::string answerId); //gibt string der zur Id passenden Frage 46 47 47 48 private: -
code/branches/Dialog_HS17/src/modules/dialog/DialogManager.cc
r11612 r11642 16 16 void DialogManager::setDialog(Dialog* dialog) 17 17 { 18 this->currentTalk_ = dialog; 18 this->currentTalk_ = dialog; 19 answerIds_ = currentTalk_->getAnswerIds(); 19 20 } 20 21 … … 26 27 } 27 28 28 /* 29 std::vector<std::string> DialogManager::getAnswers() 29 int DialogManager::getSize() 30 { 31 return 2; //return this->answerIds_->size(); 32 } 33 34 std::string DialogManager::getAnswer(int index) 30 35 { 31 // lua hat komisch arrays (eigentlich tables), wie implementiert man answers so das man nacher den key der gegeben antwort a 32 // hat um ihn fuer update zu benutzen? 36 return this->currentTalk_->getAnswerString(this->answerIds_->at(index)); 33 37 } 34 */ 38 39 std::string DialogManager::getPerson() 40 { 41 return this->currentTalk_->getName(); 42 } 43 44 bool DialogManager::endtest() 45 { 46 return this->currentTalk_->ending(); 47 } 48 49 void DialogManager::update(int index) 50 { 51 this->currentTalk_->update(answerIds_->at(index)); 52 answerIds_ = this->currentTalk_->getAnswerIds(); 53 } 35 54 } -
code/branches/Dialog_HS17/src/modules/dialog/DialogManager.h
r11612 r11642 30 30 31 31 std::string getQuestion(); //tolua_export 32 //std::vector<std::string> getAnswers(); 32 int getSize(); //tolua_export 33 std::string getAnswer(int index); //tolua_export 34 std::string getPerson(); //tolua_export 35 bool endtest(); //tolua_export 36 void update(int index); //tolua_export 33 37 34 38 private: … … 36 40 37 41 Dialog* currentTalk_; 42 std::vector<std::string>* answerIds_; 38 43 39 44 };//tolua_export -
code/branches/Dialog_HS17/src/modules/dialog/Question.cc
r11611 r11642 19 19 XMLPortParam(Question, "Id", setQuestionId, getQuestionId, xmlement, mode); 20 20 21 XMLPortObject(Question, AnswerId, "answer s", addAnswerId, getAnswerId, xmlement, mode);21 XMLPortObject(Question, AnswerId, "answerIds", addAnswerId, getAnswerId, xmlement, mode); 22 22 } 23 23 … … 52 52 } 53 53 54 std::vector<std::string> Question::getAnswerIds()54 std::vector<std::string>* Question::getAnswerIds() 55 55 { 56 return this->answerIds_;56 return &(this->answerIds_); 57 57 } 58 58 -
code/branches/Dialog_HS17/src/modules/dialog/Question.h
r11611 r11642 33 33 // die sowieso gebraucht wird? 34 34 35 std::vector<std::string> getAnswerIds(); //returnt vektor mit allen Ids35 std::vector<std::string>* getAnswerIds(); //returnt vektor mit allen Ids 36 36 37 37
Note: See TracChangeset
for help on using the changeset viewer.