Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/environment2/data/gui/scripts/SingleplayerMenu.lua @ 8474

Last change on this file since 8474 was 8079, checked in by landauf, 14 years ago

merged usability branch back to trunk

incomplete summary of the changes in this branch:

  • enhanced keyboard navigation in GUIs
  • implemented new graphics menu and changeable window size at runtime
  • added developer mode
  • HUD shows if game is paused, game pauses if ingame menu is opened
  • removed a few obsolete commands and hid some that are more for internal use
  • numpad works in console and gui
  • faster loading of level info
  • enhanced usage of compositors (Shader class)
  • improved camera handling, configurable FOV and aspect ratio
  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1-- SingleplayerMenu.lua
2
3local P = createMenuSheet("SingleplayerMenu")
4
5P.levelList = {}
6P.itemList = {}
7P.showAll = false
8
9function P.onLoad()
10    local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
11    local button = tolua.cast(window,"CEGUI::Checkbox")
12    button:setSelected(false)
13    P.createLevelList()
14
15    --buttons are arranged in a 1x2 matrix
16    P:setButton(1, 1, {
17            ["button"] = winMgr:getWindow("orxonox/SingleplayerStartButton"),
18            ["callback"]  = P.SingleplayerStartButton_clicked
19    })
20
21    P:setButton(1, 2, {
22            ["button"] = winMgr:getWindow("orxonox/SingleplayerBackButton"),
23            ["callback"]  = P.SingleplayerBackButton_clicked
24    })
25end
26
27function P.onShow()
28    if P.showAll ~= orxonox.GUIManager:inDevMode() then
29        local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
30        local button = tolua.cast(window,"CEGUI::Checkbox")
31        P.showAll = not P.showAll
32        button:setSelected(P.showAll)
33        P.createLevelList()
34    end
35end
36
37function P.createLevelList()
38    P.levelList = {}
39    P.itemList = {}
40    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
41    listbox:resetList()
42    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
43    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
44    local size = orxonox.LevelManager:getInstance():getNumberOfLevels()
45    local index = 0
46    local level = nil
47    while index < size do
48        level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
49        if level ~= nil then
50            if P.showAll or not level:hasTag("test") then
51                table.insert(P.levelList, level)
52            end
53        end
54        index = index + 1
55    end
56    for k,v in pairs(P.levelList) do
57        local item = CEGUI.createListboxTextItem(v:getName())
58        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
59        listbox:addItem(item)
60        if v:getXMLFilename() == preselect then
61            listbox:setItemSelectState(item, true)
62        end
63        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
64        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
65    end
66end
67
68function P.SingleplayerStartButton_clicked(e)
69    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
70    local choice = listbox:getFirstSelectedItem()
71    if choice ~= nil then
72        local index = listbox:getItemIndex(choice)
73        local level = P.levelList[index+1]
74        if level ~= nil then
75            orxonox.execute("startGame " .. level:getXMLFilename())
76            hideAllMenuSheets()
77        end
78    end
79end
80
81function P.SingleplayerShowAll_clicked(e)
82    local checkbox = tolua.cast(winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox"), "CEGUI::Checkbox")
83    local show = checkbox:isSelected()
84    if show ~= P.showAll then
85        P.showAll = show
86        P.createLevelList()
87   end
88end
89
90function P.SingleplayerBackButton_clicked(e)
91    hideMenuSheet(P.name)
92end
93
94return P
95
Note: See TracBrowser for help on using the repository browser.