Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/usability/data/gui/scripts/SingleplayerMenu.lua @ 8040

Last change on this file since 8040 was 8040, checked in by dafrick, 13 years ago

Developer's mode. Is a ConfigValue, by default on except in release mode. If on it should help the developer, if off, it should obscure things we don't want the user to have to deal with.
So far it ticks the showAll button in the Singleplayer and Host menu, if on. It also sets the start countdown to 0 if on.
If you have some more ideas on how to make life easier for both developers and users, feel free to implement it yourself ot mention it to me.

  • 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.