Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

Merging presentation branch back into trunk.
There are many new features and also a lot of other changes and bugfixes, if you want to know, digg through the svn log.
Not everything is yet working as it should, but it should be fairly stable. If you habe any bug reports, just send me an email.

  • 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
[8079]16    P:setButton(1, 1, {
[7689]17            ["button"] = winMgr:getWindow("orxonox/SingleplayerStartButton"),
[8079]18            ["callback"]  = P.SingleplayerStartButton_clicked
19    })
[7689]20
[8079]21    P:setButton(1, 2, {
[7689]22            ["button"] = winMgr:getWindow("orxonox/SingleplayerBackButton"),
[8079]23            ["callback"]  = P.SingleplayerBackButton_clicked
24    })
[7648]25end
26
[8079]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
[8706]56
[7648]57    for k,v in pairs(P.levelList) do
58        local item = CEGUI.createListboxTextItem(v:getName())
[6746]59        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
[7648]60        listbox:addItem(item)
61        if v:getXMLFilename() == preselect then
[6363]62            listbox:setItemSelectState(item, true)
63        end
[7648]64        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
65        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
[6363]66    end
67end
68
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
[7876]76            orxonox.execute("startGame " .. level:getXMLFilename())
[7648]77            hideAllMenuSheets()
78        end
[6363]79    end
80end
81
[7648]82function P.SingleplayerShowAll_clicked(e)
83    local checkbox = tolua.cast(winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox"), "CEGUI::Checkbox")
84    local show = checkbox:isSelected()
85    if show ~= P.showAll then
86        P.showAll = show
87        P.createLevelList()
88   end
89end
90
[6363]91function P.SingleplayerBackButton_clicked(e)
[6746]92    hideMenuSheet(P.name)
[6363]93end
94
95return P
96
Note: See TracBrowser for help on using the repository browser.