-- Dialogue.lua local P = createMenuSheet("Dialogue") P.wrapper = nil P.detailsWindows = {} P.detailPickups = {} P.pickupsList = {} P.showing = false -- Design parameters P.imageHeight = 50 P.detailImageSize = 100 P.textHeight = 30 P.buttonWidth = 85 function P.onLoad() P.wrapper = nil P.detailsWindows = {} P.detailPickups = {} P.pickupsList = {} end function P.onShow() orxonox.CommandExecutor:execute("setTimeFactor 0") P.createInventory() P.showing = true end function P.onHide() orxonox.CommandExecutor:execute("setTimeFactor 1") P.showing = false P.cleanup(true) end function P.update() P.updateInventory() if P.showing == false then return end -- Update opened detail windows. -- Update main inventory. P.cleanup(false) P.createInventory() -- TODO: Recover scrolling position end function P.createInventory() local pickupManager = orxonox.DialogueManager:getInstance() root = winMgr:getWindow("orxonox/Dialogue/Inventory") local question = orxonox.DialogueManager:getInstance():getquestion() root:setText(question) P.wrapper = winMgr:createWindow("MenuWidgets/ScrollablePane", "orxonox/Dialogue/Inventory/Wrapper") P.wrapper:setSize(CEGUI.UVector2(CEGUI.UDim(1,0),CEGUI.UDim(1,0))) root:addChildWindow(P.wrapper) detailsButton = winMgr:createWindow("MenuWidgets/Button", "/DetailsButton") local a1 = orxonox.DialogueManager:getInstance():getanswers1() detailsButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.1, 0),CEGUI.UDim(0.25, (P.imageHeight-P.textHeight)/2))) detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0.8, 0), CEGUI.UDim(0, P.textHeight))) detailsButton:setText(a1) orxonox.GUIManager:subscribeEventHelper(detailsButton, "Clicked", P.name ..".a1Button_clicked") P.wrapper:addChildWindow(detailsButton) a2Button = winMgr:createWindow("MenuWidgets/Button", "/a2Button") local a2 = orxonox.DialogueManager:getInstance():getanswers2() a2Button:setPosition(CEGUI.UVector2(CEGUI.UDim(0.1, 0),CEGUI.UDim(0.4, (P.imageHeight-P.textHeight)/2))) a2Button:setSize(CEGUI.UVector2(CEGUI.UDim(0.8, 0), CEGUI.UDim(0, P.textHeight))) a2Button:setText(a2) orxonox.GUIManager:subscribeEventHelper(a2Button, "Clicked", P.name ..".a2Button_clicked") P.wrapper:addChildWindow(a2Button) end function P.updateInventory() local questionn = orxonox.DialogueManager:getInstance():getquestion() root:setText(questionn) local a1n = orxonox.DialogueManager:getInstance():getanswers1() detailsButton:setText(a1n) local a2n = orxonox.DialogueManager:getInstance():getanswers2() a2Button:setText(a2n) end function P.cleanup(destroyDetails) 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.a1Button_clicked(e) local ending = orxonox.DialogueManager:getInstance():theEnd() if ending then orxonox.CommandExecutor:execute("OrxonoxOverlay toggleVisibility Dialogue") else orxonox.DialogueManager:getInstance():a1clicked() P.update() end end function P.a2Button_clicked(e) local ending = orxonox.DialogueManager:getInstance():theEnd() if ending then orxonox.CommandExecutor:execute("OrxonoxOverlay toggleVisibility Dialogue") else orxonox.DialogueManager:getInstance():a2clicked() P.update() end end return P