Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/tutoriallevel/data/gui/scripts/SingleplayerMenu.lua @ 8349

Last change on this file since 8349 was 7830, checked in by dafrick, 14 years ago

New implementation of QuestGUI. Should be much more usable now, however there still remain some adjustments to be made.

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1-- SingleplayerMenu.lua
2
3local P = createMenuSheet("SingleplayerMenu")
4
5P.buttonList = {}
6P.levelList = {}
7P.itemList = {}
8P.showAll = false
9
10function P.onLoad()
11    local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
12    local button = tolua.cast(window,"CEGUI::Checkbox")
13    button:setSelected(false)
14    P.createLevelList()
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
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()
38    local index = 0
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
48    end
49
50    for k,v in pairs(P.levelList) do
51        local item = CEGUI.createListboxTextItem(v:getName())
52        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
53        listbox:addItem(item)
54        if v:getXMLFilename() == preselect then
55            listbox:setItemSelectState(item, true)
56        end
57        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
58        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
59    end
60end
61
62function P.onShow()
63    --indices to iterate through buttonlist
64    P.oldindex = -2
65    P.index = -1
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.LevelManager:getInstance():setDefaultLevel(level:getXMLFilename())
76            orxonox.execute("startGame")
77            hideAllMenuSheets()
78        end
79    end
80end
81
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
91function P.SingleplayerBackButton_clicked(e)
92    hideMenuSheet(P.name)
93end
94
95function P.onKeyPressed() 
96    buttonIteratorHelper(P.buttonList, code, P, 1, 2)
97end
98
99return P
100
Note: See TracBrowser for help on using the repository browser.