Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/pickup4/data/gui/scripts/InitialiseGUI.lua @ 6675

Last change on this file since 6675 was 6675, checked in by dafrick, 14 years ago

Lua bugs fixed.
Renamed name and description in PickupRepresentation to pickupName and pickupDescription to avoid problems.
More work on PickupInventory.

  • Property svn:eol-style set to native
File size: 6.1 KB
Line 
1local schemeMgr = CEGUI.SchemeManager:getSingleton()
2winMgr = CEGUI.WindowManager:getSingleton()
3local logger = CEGUI.Logger:getSingleton()
4local system = CEGUI.System:getSingleton()
5local cursor = CEGUI.MouseCursor:getSingleton()
6
7schemeMgr:loadScheme("TaharezLookSkin.scheme")
8-- load scheme with our own images
9schemeMgr:loadScheme("OrxonoxGUIScheme.scheme")
10
11system:setDefaultMouseCursor("TaharezLook", "MouseArrow")
12system:setDefaultFont("BlueHighway-12")
13system:setDefaultTooltip("TaharezLook/Tooltip")
14
15loadedGUIs = {}
16cursorVisibility = {}
17activeSheets = {}
18nrOfActiveSheets = 0
19root = nil
20bShowsCursor = false
21bHidePrevious = {}
22
23-- Require all tools
24require("GUITools")
25
26-- loads the GUI with the specified filename
27-- be sure to set the global variable "filename" before calling this function
28function loadGUI(filename)
29    -- check if it already exists
30    loadedGui = loadedGUIs[filename]
31    if loadedGui == nil then
32        loadedGuiNS = require(filename)
33        if loadedGuiNS == nil then
34            return
35        end
36        loadedGui = loadedGuiNS:load()
37        loadedGUIs[filename] = loadedGui
38        -- if there has no GUI been loaded yet, set new GUI as current
39        if table.getn(loadedGUIs) == 1 then
40            current = loadedGUIs[1]
41        end
42        -- hide new GUI as we do not want to show it accidentially
43        loadedGui:hide()
44    end
45    return loadedGui
46end
47
48function showGUI(filename, hidePrevious, bCursorVisible, ptr)
49    gui = showGUI(filename, hidePrevious, bCursorVisible)
50    gui.overlay = ptr
51end
52
53-- shows the specified and loads it if not loaded already
54-- be sure to set the global variable "filename" before calling this function
55function showGUI(filename, hidePrevious, bCursorVisible)
56    if bCursorVisible == nil then
57        if nrOfActiveSheets > 0 then
58            bCursorVisible = cursorVisibility[activeSheets[nrOfActiveSheets]]
59        else
60            bCursorVisible = true
61        end
62    end
63
64    if root == nil then
65        setBackground("")
66    end
67
68    local currentGUI = loadedGUIs[filename]
69    if(currentGUI == nil) then
70        currentGUI = loadGUI(filename)
71    end
72
73    if(root:isChild(currentGUI.window)) then
74        root:removeChildWindow(currentGUI.window)
75    end
76    root:addChildWindow(currentGUI.window)
77
78    if bCursorVisible then
79        showCursor()
80    else
81        hideCursor()
82    end
83
84    if find( activeSheets, filename ) ~= nil then
85        table.remove( activeSheets, find( activeSheets, filename ) )
86        nrOfActiveSheets = nrOfActiveSheets - 1
87    else
88        if nrOfActiveSheets == 0 then
89            orxonox.InputManager:getInstance():enterState("guiMouseOnly")
90            orxonox.HumanController:pauseControl()
91        end
92    end
93    nrOfActiveSheets = nrOfActiveSheets + 1
94    table.insert(activeSheets, filename)
95    activeSheets[nrOfActiveSheets] = filename
96    bHidePrevious[filename]=hidePrevious
97    cursorVisibility[filename] = bCursorVisible
98
99    if hidePrevious == true then
100        for i=1,nrOfActiveSheets-1 do
101            loadedGUIs[ activeSheets[i] ]:hide()
102        end
103    end
104    currentGUI:show()
105    return currentGUI
106end
107
108function hideCursor()
109    if bShowsCursor==true then
110        bShowsCursor=false
111        cursor:hide()
112    end
113end
114
115function showCursor()
116    if bShowsCursor==false then
117        bShowsCursor=true
118        cursor:show()
119    end
120end
121
122function hideGUI(filename)
123    local currentGUI = loadedGUIs[filename]
124    if currentGUI == nil then
125        return
126    end
127    currentGUI:hide()
128    if bHidePrevious[filename] == true then
129        local i = nrOfActiveSheets-1
130        while i>0 do
131            loadedGUIs[ activeSheets[i] ]:show()
132            if bHidePrevious[filename]==true then
133                break
134            else
135                i=i-1
136            end
137        end
138    end
139    root:removeChildWindow(currentGUI.window)
140    local i=1
141    while activeSheets[i] do
142        if activeSheets[i+1] == nil then
143            if activeSheets[i-1] ~= nil then
144                if cursorVisibility[ activeSheets[i-1] ] == true then
145                    showCursor()
146                else
147                    hideCursor()
148                end
149            else
150                hideCursor()
151            end
152        end
153        if activeSheets[i] == filename then
154            table.remove( activeSheets, i )
155            nrOfActiveSheets = nrOfActiveSheets-1
156        else
157            i = i+1
158        end
159    end
160    cursorVisibility[filename] = nil -- remove the cursor visibility of the current gui from the table
161    bHidePrevious[filename] = nil
162    if nrOfActiveSheets == 0 then
163        orxonox.InputManager:getInstance():leaveState("guiMouseOnly")
164        orxonox.HumanController:resumeControl()
165        hideCursor()
166    end
167end
168
169function hideAllGUIs()
170    while nrOfActiveSheets ~= 0 do
171        hideGUI(activeSheets[nrOfActiveSheets])
172    end
173end
174
175function keyESC()
176    if nrOfActiveSheets == 1 and activeSheets[1] == "MainMenu" then
177        orxonox.execute("exit")
178    elseif nrOfActiveSheets > 0 then
179        orxonox.execute("hideGUI "..activeSheets[nrOfActiveSheets])
180    else
181        showGUI("InGameMenu")
182    end
183end
184
185function setBackground(filename)
186    local newroot
187    if root ~= nil then
188        root:rename("oldRootWindow")
189    end
190    if filename ~= "" then
191        newroot = winMgr:loadWindowLayout(filename .. ".layout")
192        newroot:rename("AbsoluteRootWindow")
193        system:setGUISheet(newroot)
194    else
195        newroot = winMgr:createWindow("DefaultWindow", "AbsoluteRootWindow")
196        newroot:setProperty("Alpha", "0.0")
197        newroot:setSize(CEGUI.UVector2(CEGUI.UDim(1.0,0),CEGUI.UDim(1.0,0)))
198        system:setGUISheet(newroot)
199    end
200    if root ~= nil then
201        local child
202        while root:getChildCount()~=0 do
203            child = root:getChildAtIdx(0)
204            root:removeChildWindow(child)
205            newroot:addChildWindow(child)
206        end
207        winMgr:destroyWindow(root)
208    end
209    newroot:show()
210    root = newroot
211end
212
213function find(table, value)
214    local i=0
215    while table[i] ~= nil do
216        if table[i]==value then
217            return i
218        else
219            i=i+1
220        end
221    end
222    return nil
223end
224
225--TODO: Needed?
226function test(e)
227    debug(0, "Blubb")
228end
Note: See TracBrowser for help on using the repository browser.