Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/data/gui/scripts/HostMenu.lua @ 9991

Last change on this file since 9991 was 8079, checked in by landauf, 14 years ago

merged usability branch back to trunk

incomplete summary of the changes in this branch:

  • enhanced keyboard navigation in GUIs
  • implemented new graphics menu and changeable window size at runtime
  • added developer mode
  • HUD shows if game is paused, game pauses if ingame menu is opened
  • removed a few obsolete commands and hid some that are more for internal use
  • numpad works in console and gui
  • faster loading of level info
  • enhanced usage of compositors (Shader class)
  • improved camera handling, configurable FOV and aspect ratio
  • 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
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
[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.