Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/Dialog_HS17/data/gui/scripts/Dialog.lua @ 11644

Last change on this file since 11644 was 11644, checked in by kuchlert, 7 years ago

eigentlich fertig nur noch altes system entfernen

File size: 3.5 KB
Line 
1-- Dialogue.lua
2
3local P = createMenuSheet("Dialog")
4
5P.wrapper = nil
6P.detailsWindows = {}
7P.showing = false
8P.choice = 0
9
10function P.onLoad() --wird ausgefuert wenn Fenster geladen
11    P.wrapper = nil
12end
13
14function P.onShow() --wird ausgefuert wenn Dialogfenster gezeigt
15
16    orxonox.CommandExecutor:execute("setTimeFactor 0")
17    P.createDialog()
18    P.showing = true
19
20end
21
22function P.onHide() --aufgefuert wenn Fenster geschlossen wird
23    orxonox.CommandExecutor:execute("setTimeFactor 1")
24    P.showing = false
25    P.cleanup(true)
26end
27
28function P.createDialog() -- initiallisiert das Dialog Fenster, setzt Namen sowie die erste Frage mit enstprechenden Antworten
29
30    local manager = orxonox.DialogManager:getInstance()
31   
32   
33    local personfield = winMgr:getWindow("orxonox/Dialog/Person")
34    local person = manager:getPerson()
35    personfield:setText(person)
36
37    local questionfiled = winMgr:getWindow("orxonox/Dialog/Question")
38    local question = manager:getQuestion()
39    questionfiled:setText(question)
40
41    local listboxwindow = winMgr:getWindow("orxonox/AnsListbox")
42    CEGUI.toListbox(listboxwindow):resetList()
43
44    local ansList = {}
45    local anssize = manager:getSize()
46
47    for index = 0, anssize -1, 1 do
48        table.insert(ansList, manager:getAnswer(index))
49    end 
50
51    for k,v in pairs(ansList) do
52        item = CEGUI.createListboxTextItem(v)
53        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
54        CEGUI.toListbox(listboxwindow):addItem(item)
55    end
56end
57
58function P.updateDialog()   --updated den Dialog entsprechend der Ausgeaehlten option der letzten Frage, setzt Frage und Antwortmoeglichkeiten neu
59    local manager = orxonox.DialogManager:getInstance()
60    manager:update(P.choice)
61
62    local questionfiled = winMgr:getWindow("orxonox/Dialog/Question")
63    local question = manager:getQuestion()
64    questionfiled:setText(question)
65
66    local listboxwindow = winMgr:getWindow("orxonox/AnsListbox")
67    listboxwindow:resetList()
68
69    local ansList = {}
70    local anssize = manager:getSize()
71
72    for index = 0, anssize -1, 1 do
73        table.insert(ansList, manager:getAnswer(index))
74    end 
75
76    for k,v in pairs(ansList) do
77        item = CEGUI.createListboxTextItem(v)
78        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
79        CEGUI.toListbox(listboxwindow):addItem(item)
80    end
81
82    P.choice = 0
83end
84
85function P.answer_changed(e)    --wird aufgerufen falls Auswahl geaendert wird und setzt enstprechenden Indexparameter 
86    listboxwindow = winMgr:getWindow("orxonox/AnsListbox")
87    selection = listboxwindow:getFirstSelectedItem()
88    if selection ~= nil then
89    P.choice = listboxwindow:getItemIndex(selection)
90    else 
91        P.choice = 0
92    end
93end
94
95
96function P.cleanup(destroyDetails)  --loest Fenster wieder auf (!nicht selbst geschrieben, nur uebernommen, eventuell nicht noetiger code)
97
98    if P.wrapper ~= nil then
99        winMgr:destroyWindow(P.wrapper)
100    end
101   
102    --Destroy details windows.
103    if destroyDetails == false then
104        return
105    end
106    for k,v in pairs(P.detailsWindows) do
107        if v ~= nil then
108            P.destroyDetailWindow(k)
109        end
110    end
111   
112end
113
114
115
116function P.Button_clicked(e)    --wird bei click auf say knopf ausgeloest, entscheidet ob Dialog schliesst oder updated und fuert entsprechen aus
117    local ending = orxonox.DialogManager:getInstance():endtest(P.choice)
118   
119    if ending then
120        orxonox.CommandExecutor:execute("OrxonoxOverlay toggleVisibility Dialog")
121    else 
122        P.updateDialog(index)
123    end
124end
125
126return P
Note: See TracBrowser for help on using the repository browser.