Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/shipSelection/data/gui/scripts/ShipSelectionMenu.lua @ 9057

Last change on this file since 9057 was 9057, checked in by huttemat, 12 years ago

test2

File size: 6.3 KB
Line 
1-- ShipSelectionMenu.lua
2
3local P = createMenuSheet("ShipSelectionMenu")
4P.activeTabIndexes = {}
5P.scrollbarWidth = 13
6
7function P.onLoad()
8   orxonox.execute("orxout internal_warning Ships= " .. selectedlevel.getShips())
9   P.createLevelList(selectedlevel)
10--[[     
11    -- create tabs with desired tab as argument (nil for all)
12    P.createFilterTab("Gametypes", "gametype")
13    P.createFilterTab("Missions", "mission")
14    P.createFilterTab("Minigames", "minigame")
15    P.createFilterTab("Showcases", "showcase")
16    P.createFilterTab("Presentations", "presentation")
17    P.createFilterTab("Tests", "test")
18    P.createFilterTab("Show All", nil)
19   
20    -- update description and screenshot boxes
21    P.ShipSelectionSelectionChanged()
22   
23    --buttons are arranged in a 1x3 matrix
24    P:setButton(1, 1, {
25            ["button"] = winMgr:getWindow("orxonox/ShipSelectionStartButton"),
26            ["callback"]  = P.ShipSelectionStartButton_clicked
27    })
28
29    P:setButton(1, 2, {
30            ["button"] = winMgr:getWindow("orxonox/ShipSelectionConfigButton"),
31            ["callback"]  = P.ShipSelectionConfigButton_clicked
32    })
33
34    P:setButton(1, 3, {
35            ["button"] = winMgr:getWindow("orxonox/ShipSelectionBackButton"),
36            ["callback"]  = P.ShipSelectionBackButton_clicked
37    })--]]
38end
39
40function P.createShipList(level)
41
42    orxonox.execute("orxout internal_warning Ships= " .. selectedlevel:getShips())
43    --local stream = selectedlevel:getShips()
44    --local substr = stream
45    --while substr.find(",")
46    --[[
47    local size = orxonox.LevelManager:getInstance():getNumberOfLevels()
48    local index = 0
49    local level = nil
50    while index < size do
51        level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
52        if level ~= nil then
53            local levelXMLFilename = level:getXMLFilename()
54            -- create an imageset for each screenshot
55            local imageName = level:getScreenshot()
56            if imageName ~= "" then
57                CEGUI.ImagesetManager:getSingleton():createImagesetFromImageFile(levelXMLFilename..imageName, imageName)
58            else
59                CEGUI.ImagesetManager:getSingleton():createImagesetFromImageFile(levelXMLFilename..imageName, "noscreenshot.png")
60            end
61            table.insert(P.levelList, level)
62        end
63        index = index + 1
64    end--]]
65end
66
67
68
69function P.createFilterTab(name, tag)
70    -- create unique tab window name
71    local tabName = "orxonox/ShipSelectionLevelTab"
72    if tag ~= nil then
73        tabName = tabName..tag
74    end
75    -- create new tab window with desired name
76    local listbox = CEGUI.toListbox(winMgr:createWindow("MenuWidgets/Listbox", tabName))
77    listbox:setText(name)
78    listbox:setProperty("UnifiedMaxSize", "{{1,0},{1,0}}")
79    listbox:setProperty("UnifiedAreaRect", "{{0.05,0},{0.1,0},{0.5,0},{0.675,0}}")
80    -- fill listbox with items
81    listbox:resetList()
82    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
83    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
84    local tabIndexes = {}
85    for k,v in pairs(P.levelList) do
86        -- only add level if it has desired tag
87        if tag == nil or v:hasTag(tag) then
88            local item = CEGUI.createListboxTextItem(v:getName())
89            item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
90            listbox:addItem(item)
91            table.insert(tabIndexes, k)
92            if v:getXMLFilename() == preselect then
93                listbox:setItemSelectState(item, true)
94            end
95            orxonox.GUIManager:setTooltipTextHelper(item, v:getDescription())
96        end
97    end
98    table.insert(P.activeTabIndexes, tabIndexes)
99    -- listen to selection changes
100    orxonox.GUIManager:subscribeEventHelper(listbox, "ItemSelectionChanged", P.name..".ShipSelectionSelectionChanged")
101    local tabControl = winMgr:getWindow("orxonox/ShipSelectionTabControl")
102    orxonox.GUIManager:subscribeEventHelper(tabControl, "TabSelectionChanged", P.name..".ShipSelectionSelectionChanged")
103    if listbox:getItemCount() > 0 then
104        tabControl:addChildWindow(tabName)
105    end
106end
107
108function P.ShipSelectionGetSelectedLevel()
109    -- choose the active listbox
110    local tabControl = CEGUI.toTabControl(winMgr:getWindow("orxonox/ShipSelectionTabControl"))
111    local listbox = CEGUI.toListbox(tabControl:getTabContentsAtIndex(tabControl:getSelectedTabIndex()))
112    local choice = listbox:getFirstSelectedItem()
113    if choice ~= nil then
114        -- get the right tab and the right index
115        local tabIndexes = P.activeTabIndexes[tabControl:getSelectedTabIndex()+1]
116        local index = tabIndexes[listbox:getItemIndex(choice)+1]
117        return P.levelList[index]
118    else
119        return nil
120    end
121end
122
123function P.ShipSelectionSelectionChanged(e)
124    local levelImage = winMgr:getWindow("orxonox/ShipSelectionLevelImage")
125    local levelDescription = winMgr:getWindow("orxonox/ShipSelectionLevelDescription")
126    local configButton = winMgr:getWindow("orxonox/ShipSelectionConfigButton")
127    local level = P.ShipSelectionGetSelectedLevel()
128    if level ~= nil then
129        local levelXMLFilename = level:getXMLFilename()
130        local imageName = level:getScreenshot()
131        -- set the screenshot and the description for the selected level
132        levelImage:setProperty("Image", "set:"..levelXMLFilename..imageName.." image:full_image")
133        levelDescription:setText(level:getDescription())
134        -- only enable config button for "gametype" levels
135        if level:hasTag("gametype") then
136            configButton:setProperty("Disabled", "False")
137        else
138            configButton:setProperty("Disabled", "True")
139        end
140    else
141        -- also take care of "no level selected"
142        levelImage:setProperty("Image", nil)
143        levelDescription:setText("")
144        configButton:setProperty("Disabled", "True")
145    end
146end
147--]]
148function P.ShipSelectionStartButton_clicked(e)
149
150    if P.level ~= nil then
151        orxonox.execute("startGame " .. level:getXMLFilename())
152        hideAllMenuSheets()
153    else
154        orxonox.execute("keyESC")
155    end
156end
157
158function P.ShipSelectionConfigButton_clicked(e)
159--[[
160    local level = P.ShipSelectionGetSelectedLevel()
161    if level ~= nil then
162        local configMenu = showMenuSheet("ShipSelectionConfigMenu")
163        configMenu:loadConfig(level)
164    end
165--]]
166end
167
168function P.ShipSelectionBackButton_clicked(e)
169    orxonox.execute("keyESC")
170end 
171
172return P
Note: See TracBrowser for help on using the repository browser.