Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/data/gui/scripts/SingleplayerMenu.lua @ 7692

Last change on this file since 7692 was 7689, checked in by dafrick, 14 years ago

Merging menu branch to trunk.

  • Property svn:eol-style set to native
File size: 3.1 KB
RevLine 
[6363]1-- SingleplayerMenu.lua
2
[6746]3local P = createMenuSheet("SingleplayerMenu")
[6363]4
[7689]5P.buttonList = {}
[7648]6P.levelList = {}
7P.itemList = {}
8P.showAll = false
9
[6746]10function P.onLoad()
[7648]11    local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
12    local button = tolua.cast(window,"CEGUI::Checkbox")
13    button:setSelected(false)
14    P.createLevelList()
[7689]15
16    --buttons are arranged in a 1x2 matrix
17    local item = {
18            ["button"] = winMgr:getWindow("orxonox/SingleplayerStartButton"),
19            ["function"]  = P.SingleplayerStartButton_clicked
20    }
21    P.buttonList[1] = item
22
23    local item = {
24            ["button"] = winMgr:getWindow("orxonox/SingleplayerBackButton"),
25            ["function"]  = P.SingleplayerBackButton_clicked
26    }
27    P.buttonList[2] = item
[7648]28end
29
30function P.createLevelList()
31    P.levelList = {}
32    P.itemList = {}
33    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
34    listbox:resetList()
35    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
36    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
37    local size = orxonox.LevelManager:getInstance():getNumberOfLevels()
[6363]38    local index = 0
[7648]39    local level = nil
40    while index < size do
41        level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
42        if level ~= nil then
43            if P.showAll or not level:hasTag("test") then
44                table.insert(P.levelList, level)
45            end
46        end
47        index = index + 1
[6363]48    end
[7648]49    --TODO: Reintroduce sorting, if needed. At the moment it's sorted by filename.
50    --table.sort(levelList)
51    for k,v in pairs(P.levelList) do
52        local item = CEGUI.createListboxTextItem(v:getName())
[6746]53        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
[7648]54        listbox:addItem(item)
55        if v:getXMLFilename() == preselect then
[6363]56            listbox:setItemSelectState(item, true)
57        end
[7648]58        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
59        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
[6363]60    end
61end
62
[7689]63function P.onShow()
64    --indices to iterate through buttonlist
65    P.oldindex = -2
66    P.index = -1
67end
68
[6363]69function P.SingleplayerStartButton_clicked(e)
[7648]70    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
71    local choice = listbox:getFirstSelectedItem()
72    if choice ~= nil then
73        local index = listbox:getItemIndex(choice)
74        local level = P.levelList[index+1]
75        if level ~= nil then
76            orxonox.LevelManager:getInstance():setDefaultLevel(level:getXMLFilename())
77            orxonox.execute("startGame")
78            hideAllMenuSheets()
79        end
[6363]80    end
81end
82
[7648]83function P.SingleplayerShowAll_clicked(e)
84    local checkbox = tolua.cast(winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox"), "CEGUI::Checkbox")
85    local show = checkbox:isSelected()
86    if show ~= P.showAll then
87        P.showAll = show
88        P.createLevelList()
89   end
90end
91
[6363]92function P.SingleplayerBackButton_clicked(e)
[6746]93    hideMenuSheet(P.name)
[6363]94end
95
[7689]96function P.onKeyPressed() 
97    buttonIteratorHelper(P.buttonList, code, P, 1, 2)
98end
99
[6363]100return P
101
Note: See TracBrowser for help on using the repository browser.