Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

ShipSelecting working, still hackish and featureless though

File size: 5.0 KB
Line 
1-- ShipSelectionMenu.lua
2
3local P = createMenuSheet("ShipSelectionMenu")
4P.activeTabIndexes = {}
5P.scrollbarWidth = 13
6P.shipList = {}
7function P.onLoad()
8   --orxonox.execute("orxout user_warning Ships= " .. selectedlevel:hasShip("abcdef"))
9   local dircmd = "ls ../levels/templates/ -l | awk '{print $9}' | grep \"spaceship\" | sed -e 's/\\.[a-zA-Z]*$//'" -- go to spaceships folder and generate a list of installed shipmodels.
10   os.execute(dircmd .. " > ../levels/templates/.shipmodels") --saves output in a textfile
11   --[[ Program a Windows Version here:
12   if string.sub(package.config,1,1) == '\\' then
13           -- Windows
14           dircmd = "dir /b/s"
15   end]]       
16
17   P.shipList = {}
18   for line in io.lines("../levels/templates/.shipmodels") do 
19        if selectedlevel:hasShip(string.lower(line)) then
20                P.shipList[#P.shipList+1] = string.lower(line)
21        end
22   end 
23   P.createFilterTab("Show All")
24
25end
26
27function P.createShipList()
28       
29
30end
31
32
33
34function P.createFilterTab(name)
35
36    local tabName = "orxonox/ShipSelectionLevelTab"
37    -- create new tab window with desired name
38    local listbox = CEGUI.toListbox(winMgr:createWindow("MenuWidgets/Listbox", tabName))
39    listbox:setText(name)
40    listbox:setProperty("UnifiedMaxSize", "{{1,0},{1,0}}")
41    listbox:setProperty("UnifiedAreaRect", "{{0.05,0},{0.1,0},{0.5,0},{0.675,0}}")
42    -- fill listbox with items
43    listbox:resetList()
44    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
45    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
46    local tabIndexes = {}
47    for k,v in pairs(P.shipList) do
48        -- only add level if it has desired tag
49        --if tag == nil or v:hasShip(tag) then
50            local item = CEGUI.createListboxTextItem(v)
51            item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
52            listbox:addItem(item)
53            table.insert(tabIndexes, k)
54            --[[if v:getXMLFilename() == preselect then
55                listbox:setItemSelectState(item, true)
56            end--]]
57            --orxonox.GUIManager:setTooltipTextHelper(item, v:getDescription())
58        --end
59    end
60    table.insert(P.activeTabIndexes, tabIndexes)
61    -- listen to selection changes
62    orxonox.GUIManager:subscribeEventHelper(listbox, "ItemSelectionChanged", P.name..".ShipSelectionSelectionChanged")
63    local tabControl = winMgr:getWindow("orxonox/ShipSelectionTabControl")
64    orxonox.GUIManager:subscribeEventHelper(tabControl, "TabSelectionChanged", P.name..".ShipSelectionSelectionChanged")
65    if listbox:getItemCount() > 0 then
66        tabControl:addChildWindow(tabName)
67    end
68end
69
70function P.ShipSelectionGetSelectedModel()
71    -- choose the active listbox
72    local tabControl = CEGUI.toTabControl(winMgr:getWindow("orxonox/ShipSelectionTabControl"))
73    local listbox = CEGUI.toListbox(tabControl:getTabContentsAtIndex(tabControl:getSelectedTabIndex()))
74    local choice = listbox:getFirstSelectedItem()
75    if choice ~= nil then
76        -- get the right tab and the right index
77        local tabIndexes = P.activeTabIndexes[tabControl:getSelectedTabIndex()+1]
78        local index = tabIndexes[listbox:getItemIndex(choice)+1]
79        return P.shipList[index]
80    else
81        return nil
82    end
83end
84
85function P.ShipSelectionSelectionChanged(e)
86    local levelImage = winMgr:getWindow("orxonox/ShipSelectionLevelImage")
87    local levelDescription = winMgr:getWindow("orxonox/ShipSelectionLevelDescription")
88    local configButton = winMgr:getWindow("orxonox/ShipSelectionConfigButton")
89    local level = P.ShipSelectionGetSelectedModel()
90    if level ~= nil then
91        --local levelXMLFilename = selectedlevel:getXMLFilename()
92        --local imageName = selectedlevel:getScreenshot()
93        -- set the screenshot and the description for the selected level
94        --levelImage:setProperty("Image", "set:"..levelXMLFilename..imageName.." image:full_image")
95        --levelDescription:setText(level:getDescription())
96        -- only enable config button for "gametype" levels
97        --if level:hasTag("gametype") then
98         --   configButton:setProperty("Disabled", "False")
99        --else
100        --    configButton:setProperty("Disabled", "True")
101        --end
102    else
103        -- also take care of "no level selected"
104        levelImage:setProperty("Image", nil)
105        levelDescription:setText("")
106        configButton:setProperty("Disabled", "True")
107    end
108end
109
110function P.ShipSelectionStartButton_clicked(e)
111
112    if selectedlevel ~= nil then
113        selectedlevel:selectShip(P.ShipSelectionGetSelectedModel())
114        orxonox.execute("startGame " .. "_temp.oxw")
115        hideAllMenuSheets()
116    else
117        orxonox.execute("keyESC")
118    end
119end
120
121function P.ShipSelectionConfigButton_clicked(e)
122--[[
123    local level = P.ShipSelectionGetSelectedModel()
124    if level ~= nil then
125        local configMenu = showMenuSheet("ShipSelectionConfigMenu")
126        configMenu:loadConfig(level)
127    end
128--]]
129end
130
131function P.ShipSelectionBackButton_clicked(e)
132    --hideAllMenuSheets()
133    orxonox.execute("keyESC")
134end 
135
136return P
Note: See TracBrowser for help on using the repository browser.