Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 16, 2010, 2:50:16 PM (15 years ago)
Author:
rgrieder
Message:

Merged gamestates2 branch back to trunk.
This brings in some heavy changes in the GUI framework.
It should also fix problems with triggered asserts in the InputManager.

Note: PickupInventory does not seem to work —> Segfault when showing because before, the owner in GUIOverlay::setGUIName is already NULL.
I haven't tested it before, so I can't tell whether it's my changes.

Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/data/gui/scripts/InitialiseGUI.lua

    r6711 r6746  
    1 local schemeMgr = CEGUI.SchemeManager:getSingleton()
    2 winMgr = CEGUI.WindowManager:getSingleton()
    3 local logger = CEGUI.Logger:getSingleton()
    4 local system = CEGUI.System:getSingleton()
    5 local cursor = CEGUI.MouseCursor:getSingleton()
     1-- Define some global shortcuts for common Managers
     2guiMgr    = orxonox.GUIManager:getInstance()
     3inputMgr  = orxonox.InputManager:getInstance()
     4schemeMgr = CEGUI.SchemeManager:getSingleton()
     5winMgr    = CEGUI.WindowManager:getSingleton()
    66
    7 schemeMgr:loadScheme("TaharezLookSkin.scheme")
    8 -- load scheme with our own images
     7-- Load all required skins
     8schemeMgr:loadScheme("TaharezGreenLook.scheme")
     9--schemeMgr:loadScheme("TaharezLook.scheme")
     10--schemeMgr:loadScheme("WindowsLook.scheme")
     11--schemeMgr:loadScheme("VanillaLook.scheme")
     12--schemeMgr:loadScheme("SleekSpaceLook.scheme")
     13
     14-- Connect skin specific window types with our own window types
     15-- By loading a different file (if there is) you can change the skin
     16-- of the menus or the HUD independently
     17schemeMgr:loadScheme("TaharezGreenMenuWidgets.scheme")
     18menuImageSet = "TaharezGreenLook"
     19schemeMgr:loadScheme("TaharezGreenHUDWidgets.scheme")
     20hudImageSet = "TaharezGreenLook"
     21
     22-- Just a remaining test hack
    923schemeMgr:loadScheme("OrxonoxGUIScheme.scheme")
    1024
    11 system:setDefaultMouseCursor("TaharezLook", "MouseArrow")
     25local system = CEGUI.System:getSingleton()
     26system:setDefaultMouseCursor(menuImageSet, "MouseArrow")
    1227system:setDefaultFont("BlueHighway-12")
    13 system:setDefaultTooltip("TaharezLook/Tooltip")
     28system:setDefaultTooltip("MenuWidgets/Tooltip")
    1429
    15 loadedGUIs = {}
    16 cursorVisibility = {}
    17 activeSheets = {}
    18 nrOfActiveSheets = 0
    19 root = nil
    20 bShowsCursor = false
    21 bHidePrevious = {}
    22 
    23 -- Require all tools
     30-- Convenience function and additional tools
    2431require("GUITools")
    25 
    26 -- loads the GUI with the specified filename
    27 -- be sure to set the global variable "filename" before calling this function
    28 function 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
    46 end
    47 
    48 function showGUI(filename, hidePrevious, bCursorVisible, ptr)
    49     gui = showGUI(filename, hidePrevious, bCursorVisible)
    50     gui.overlay = ptr
    51 end
    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
    55 function 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
    106 end
    107 
    108 function hideCursor()
    109     if bShowsCursor==true then
    110         bShowsCursor=false
    111         cursor:hide()
    112     end
    113 end
    114 
    115 function showCursor()
    116     if bShowsCursor==false then
    117         bShowsCursor=true
    118         cursor:show()
    119     end
    120 end
    121 
    122 function 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
    167 end
    168 
    169 function hideAllGUIs()
    170     while nrOfActiveSheets ~= 0 do
    171         hideGUI(activeSheets[nrOfActiveSheets])
    172     end
    173 end
    174 
    175 function 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
    183 end
    184 
    185 function 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
    211 end
    212 
    213 function 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
    223 end
    224 
    225 --TODO: Needed?
    226 function test(e)
    227     debug(0, "Blubb")
    228 end
Note: See TracChangeset for help on using the changeset viewer.