Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/tutorial/data/gui/scripts/HostMenu.lua @ 9215

Last change on this file since 9215 was 8051, checked in by dafrick, 14 years ago

Merging latest changes in usability branch into tutorial branch.

  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1-- HostMenu.lua
2
3local P = createMenuSheet("HostMenu")
4
5P.multiplayerMode = "startServer"
6
7P.levelList = {}
8P.itemList = {}
9P.showAll = false
10
11function P.onLoad()
12    P.multiplayerMode = "startServer"
13    local window = winMgr:getWindow("orxonox/MultiplayerShowAllCheckbox")
14    local button = tolua.cast(window,"CEGUI::Checkbox")
15    button:setSelected(false)
16    P.createLevelList()
17
18    P:setButton(1, 1, {
19            ["button"] = winMgr:getWindow("orxonox/HostMenuStartButton"),
20            ["callback"]  = P.HostMenuStartButton_clicked
21    })
22
23    P:setButton(1, 2, {
24            ["button"] = winMgr:getWindow("orxonox/HostMenuBackButton"),
25            ["callback"]  = P.HostMenuBackButton_clicked
26    })
27end
28
29function P.onShow()
30    if P.showAll ~= orxonox.GUIManager:inDevMode() then
31        local window = winMgr:getWindow("orxonox/MultiplayerShowAllCheckbox")
32        local button = tolua.cast(window,"CEGUI::Checkbox")
33        P.showAll = not P.showAll
34        button:setSelected(P.showAll)
35    end
36
37    if P.multiplayerMode == "startServer" then
38        local window = winMgr:getWindow("orxonox/HostMenuHostButton")
39        local button = tolua.cast(window,"CEGUI::RadioButton")
40        button:setSelected(true)
41        P.createLevelList()
42    end
43
44    if P.multiplayerMode == "startDedicated" then
45        local window = winMgr:getWindow("orxonox/HostMenuDedicatedButton")
46        local button = tolua.cast(window,"CEGUI::RadioButton")
47        button:setSelected(true)
48        P.createLevelList()
49    end
50end
51
52function P.createLevelList()
53    P.levelList = {}
54    P.itemList = {}
55    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/HostMenuListbox"))
56    listbox:resetList()
57    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
58    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
59    local size = orxonox.LevelManager:getInstance():getNumberOfLevels()
60    local index = 0
61    local level = nil
62    while index < size do
63        level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
64        if level ~= nil then
65            if P.showAll or not level:hasTag("test") then
66                table.insert(P.levelList, level)
67            end
68        end
69        index = index + 1
70    end
71    --TODO: Reintroduce sorting, if needed. At the moment it's sorted by filename.
72    --table.sort(levelList)
73    for k,v in pairs(P.levelList) do
74        local item = CEGUI.createListboxTextItem(v:getName())
75        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
76        listbox:addItem(item)
77        if v:getXMLFilename() == preselect then
78            listbox:setItemSelectState(item, true)
79        end
80        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
81        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
82    end
83end
84
85function P.HostMenuBuildServerButton_clicked(e)
86    P.multiplayerMode = "startServer"
87    P.createLevelList()
88end
89
90function P.HostMenuDedicatedButton_clicked(e)
91    P.multiplayerMode = "startDedicated"
92    P.createLevelList()
93end
94
95function P.HostMenuBackButton_clicked(e)
96    hideMenuSheet(P.name)
97end
98
99function P.HostMenuStartButton_clicked(e)
100    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/HostMenuListbox"))
101    local choice = listbox:getFirstSelectedItem()
102    if choice ~= nil then
103        local index = listbox:getItemIndex(choice)
104        local level = P.levelList[index+1]
105        if level ~= nil then
106            orxonox.execute(P.multiplayerMode .. " " .. level:getXMLFilename())
107            hideAllMenuSheets()
108        end
109    end
110end
111
112function P.MultiplayerShowAll_clicked(e)
113    local checkbox = tolua.cast(winMgr:getWindow("orxonox/MultiplayerShowAllCheckbox"), "CEGUI::Checkbox")
114    local show = checkbox:isSelected()
115    if show ~= P.showAll then
116        P.showAll = show
117        P.createLevelList()
118   end
119end
120
121return P
Note: See TracBrowser for help on using the repository browser.