-- Dialog.lua local P = createMenuSheet("Dialog") P.wrapper = nil P.detailsWindows = {} P.showing = false P.choice = 0 P.scrollbarWidth = 12 function P.onLoad() --wird ausgefuert wenn Fenster geladen P.wrapper = nil end function P.onShow() --wird ausgefuert wenn Dialogfenster gezeigt orxonox.CommandExecutor:execute("setTimeFactor 0") P.createDialog() P.showing = true end function P.onHide() --aufgefuert wenn Fenster geschlossen wird orxonox.CommandExecutor:execute("setTimeFactor 1") P.showing = false P.cleanup(true) end function P.createDialog() -- initiallisiert das Dialog Fenster, setzt Namen sowie die erste Frage mit enstprechenden Antworten local manager = orxonox.DialogManager:getInstance() local personfield = P.window:getChild("Options/Person") local person = manager:getPerson() personfield:setText(person) local questionfield = P.window:getChild("Options/QuestionWrapper/QuestionPane/Question") local question = manager:getQuestion() questionfield:setText(question) local listboxwindow = P.window:getChild("Options/AnsListbox") CEGUI.toListbox(listboxwindow):resetList() local ansList = {} local anssize = manager:getSize() for index = 0, anssize -1, 1 do table.insert(ansList, manager:getAnswer(index)) end for k,v in pairs(ansList) do item = CEGUI.createListboxTextItem(v) item:setSelectionBrushImage(menuImageSet .. "/MultiListSelectionBrush") CEGUI.toListbox(listboxwindow):addItem(item) end end function P.updateDialog() --updated den Dialog entsprechend der Ausgeaehlten option der letzten Frage, setzt Frage und Antwortmoeglichkeiten neu local manager = orxonox.DialogManager:getInstance() manager:update(P.choice) local questionfield = P.window:getChild("Options/QuestionWrapper/QuestionPane/Question") local question = manager:getQuestion() questionfield:setText(question) local listboxwindow = P.window:getChild("Options/AnsListbox") listboxwindow:resetList() local ansList = {} local anssize = manager:getSize() for index = 0, anssize -1, 1 do table.insert(ansList, manager:getAnswer(index)) end for k,v in pairs(ansList) do item = CEGUI.createListboxTextItem(v) item:setSelectionBrushImage(menuImageSet .. "/MultiListSelectionBrush") CEGUI.toListbox(listboxwindow):addItem(item) end P.choice = 0 end function P.answer_changed(e) --wird aufgerufen falls Auswahl geaendert wird und setzt enstprechenden Indexparameter listboxwindow = P.window:getChild("Options/AnsListbox") selection = listboxwindow:getFirstSelectedItem() if selection ~= nil then P.choice = listboxwindow:getItemIndex(selection) else P.choice = 0 end end function P.cleanup(destroyDetails) --loest Fenster wieder auf (!nicht selbst geschrieben, nur uebernommen, eventuell nicht noetiger code) if P.wrapper ~= nil then winMgr:destroyWindow(P.wrapper) end --Destroy details windows. if destroyDetails == false then return end for k,v in pairs(P.detailsWindows) do if v ~= nil then P.destroyDetailWindow(k) end end end function P.Button_clicked(e) --wird bei click auf say knopf ausgeloest, entscheidet ob Dialog schliesst oder updated und fuert entsprechen aus local ending = orxonox.DialogManager:getInstance():endtest(P.choice) if ending then orxonox.CommandExecutor:execute("OrxonoxOverlay toggleVisibility Dialog") else P.updateDialog(index) end end return P