Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/release2012/data/gui/scripts/HostMenu.lua @ 9373

Last change on this file since 9373 was 9373, checked in by jo, 13 years ago

On the way to adjust multiplayermenue. Levels tagged with singleplayer should NOT be displayed in the multiplayermenue.

  • Property svn:eol-style set to native
File size: 3.8 KB
RevLine 
[7587]1-- HostMenu.lua
2
3local P = createMenuSheet("HostMenu")
4
5P.multiplayerMode = "startServer"
6
[7689]7P.levelList = {}
8P.itemList = {}
9P.showAll = false
[7687]10
11function P.onLoad()
[8079]12    P.multiplayerMode = "startServer"
[7689]13    local window = winMgr:getWindow("orxonox/MultiplayerShowAllCheckbox")
14    local button = tolua.cast(window,"CEGUI::Checkbox")
15    button:setSelected(false)
16    P.createLevelList()
[7687]17
[8079]18    P:setButton(1, 1, {
[7687]19            ["button"] = winMgr:getWindow("orxonox/HostMenuStartButton"),
[8079]20            ["callback"]  = P.HostMenuStartButton_clicked
21    })
[7687]22
[8079]23    P:setButton(1, 2, {
[7687]24            ["button"] = winMgr:getWindow("orxonox/HostMenuBackButton"),
[8079]25            ["callback"]  = P.HostMenuBackButton_clicked
26    })
[7687]27end
28
[7587]29function P.onShow()
[8079]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
[7587]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)
[7689]41        P.createLevelList()
[7587]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)
[7689]48        P.createLevelList()
[7587]49    end
50end
51
[7689]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
[9373]65            if P.showAll or not level:hasTag("test") or not level:hasTag("singleplayer") then
[7689]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
[7587]85function P.HostMenuBuildServerButton_clicked(e)
86    P.multiplayerMode = "startServer"
[7689]87    P.createLevelList()
[7587]88end
89
90function P.HostMenuDedicatedButton_clicked(e)
91    P.multiplayerMode = "startDedicated"
[7689]92    P.createLevelList()
[7587]93end
94
95function P.HostMenuBackButton_clicked(e)
96    hideMenuSheet(P.name)
97end
98
[8079]99function P.HostMenuStartButton_clicked(e)
[7689]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
[7876]106            orxonox.execute(P.multiplayerMode .. " " .. level:getXMLFilename())
[7689]107            hideAllMenuSheets()
[7587]108        end
[7689]109    end
[7587]110end
111
[7689]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
[7587]119end
120
121return P
Note: See TracBrowser for help on using the repository browser.