Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 8143 was 8040, checked in by dafrick, 14 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
RevLine 
[6363]1-- SingleplayerMenu.lua
2
[6746]3local P = createMenuSheet("SingleplayerMenu")
[6363]4
[7648]5P.levelList = {}
6P.itemList = {}
7P.showAll = false
8
[6746]9function P.onLoad()
[7648]10    local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
11    local button = tolua.cast(window,"CEGUI::Checkbox")
12    button:setSelected(false)
13    P.createLevelList()
[7689]14
15    --buttons are arranged in a 1x2 matrix
[7922]16    P:setButton(1, 1, {
[7689]17            ["button"] = winMgr:getWindow("orxonox/SingleplayerStartButton"),
[7922]18            ["callback"]  = P.SingleplayerStartButton_clicked
19    })
[7689]20
[7922]21    P:setButton(1, 2, {
[7689]22            ["button"] = winMgr:getWindow("orxonox/SingleplayerBackButton"),
[7922]23            ["callback"]  = P.SingleplayerBackButton_clicked
24    })
[7648]25end
26
[8040]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
[7648]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()
[6363]45    local index = 0
[7648]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
[6363]55    end
[7648]56    for k,v in pairs(P.levelList) do
57        local item = CEGUI.createListboxTextItem(v:getName())
[6746]58        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
[7648]59        listbox:addItem(item)
60        if v:getXMLFilename() == preselect then
[6363]61            listbox:setItemSelectState(item, true)
62        end
[7648]63        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
64        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
[6363]65    end
66end
67
68function P.SingleplayerStartButton_clicked(e)
[7648]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
[7876]75            orxonox.execute("startGame " .. level:getXMLFilename())
[7648]76            hideAllMenuSheets()
77        end
[6363]78    end
79end
80
[7648]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
[6363]90function P.SingleplayerBackButton_clicked(e)
[6746]91    hideMenuSheet(P.name)
[6363]92end
93
94return P
95
Note: See TracBrowser for help on using the repository browser.