Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 25, 2009, 10:23:58 PM (14 years ago)
Author:
rgrieder
Message:

Merged presentation2 branch back to trunk.
Major new features:

  • Actual GUI with settings, etc.
  • Improved space ship steering (human interaction)
  • Rocket fire and more particle effects
  • Advanced sound framework
Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

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

    r5781 r6417  
    1414
    1515loadedGUIs = {}
     16cursorVisibility = {}
     17activeSheets = {}
     18nrOfActiveSheets = 0
     19root = nil
     20bShowsCursor = false
     21bHidePrevious = {}
     22
     23-- Require all tools
     24require("GUITools")
    1625
    1726-- loads the GUI with the specified filename
     
    2231    if loadedGui == nil then
    2332        loadedGuiNS = require(filename)
     33        if loadedGuiNS == nil then
     34            return
     35        end
    2436        loadedGui = loadedGuiNS:load()
    2537        loadedGUIs[filename] = loadedGui
     
    2739        if table.getn(loadedGUIs) == 1 then
    2840            current = loadedGUIs[1]
    29             showing = false
    3041        end
    3142        -- hide new GUI as we do not want to show it accidentially
     
    3546end
    3647
    37 function showGUI(filename, ptr)
    38     gui = showGUI(filename)
     48function showGUI(filename, hidePrevious, bCursorVisible, ptr)
     49    gui = showGUI(filename, hidePrevious, bCursorVisible)
    3950    gui.overlay = ptr
    4051end
     
    4253-- shows the specified and loads it if not loaded already
    4354-- be sure to set the global variable "filename" before calling this function
    44 function showGUI(filename)
    45     if current == nil or current.filename ~= filename then
    46         current = loadedGUIs[filename]
    47         if current == nil then
    48             current = loadGUI(filename)
    49         end
    50         system:setGUISheet(current.window)
    51     end
    52     current:show()
    53     showing = true
    54     return current
    55 end
    56 
    57 function toggleGUI()
    58     if showing == true then
    59         current:hide()
     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
    60111        cursor:hide()
    61         showing = false
    62     else
    63         current:show()
     112    end
     113end
     114
     115function showCursor()
     116    if bShowsCursor==false then
     117        bShowsCursor=true
    64118        cursor:show()
    65         showing = true
    66     end
    67     return showing
    68 end
    69 
    70 function hideCursor()
    71     cursor:hide()
    72 end
    73 
    74 function showCursor()
    75     cursor:show()
     119    end
    76120end
    77121
    78122function hideGUI(filename)
    79     current = loadedGUIs[filename]
    80     if current ~= nil then
    81         current:hide()
    82         showing = false
    83     end
    84 end
     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
     225function test(e)
     226    debug(0, "Blubb")
     227end
Note: See TracChangeset for help on using the changeset viewer.