Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 13, 2010, 11:55:23 PM (14 years ago)
Author:
dafrick
Message:

Merged releasetodo, containing a new way to describe and tag levels, back to trunk.

Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/data/gui/scripts/SingleplayerMenu.lua

    r7163 r7648  
    33local P = createMenuSheet("SingleplayerMenu")
    44
     5P.levelList = {}
     6P.itemList = {}
     7P.showAll = false
     8
    59function P.onLoad()
    6     listbox = winMgr:getWindow("orxonox/SingleplayerLevelListbox")
    7     preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
    8     orxonox.LevelManager:getInstance():compileAvailableLevelList()
    9     local levelList = {}
     10    local window = winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox")
     11    local button = tolua.cast(window,"CEGUI::Checkbox")
     12    button:setSelected(false)
     13    P.createLevelList()
     14end
     15
     16function P.createLevelList()
     17    P.levelList = {}
     18    P.itemList = {}
     19    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
     20    listbox:resetList()
     21    orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
     22    local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
     23    local size = orxonox.LevelManager:getInstance():getNumberOfLevels()
    1024    local index = 0
    11     local level = ""
    12     while true do
    13       level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
    14       if level == "" then
    15         break
    16       end
    17       table.insert(levelList, level)
    18       index = index + 1
     25    local level = nil
     26    while index < size do
     27        level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
     28        if level ~= nil then
     29            if P.showAll or not level:hasTag("test") then
     30                table.insert(P.levelList, level)
     31            end
     32        end
     33        index = index + 1
    1934    end
    20     table.sort(levelList)
    21     for k,v in pairs(levelList) do
    22         item = CEGUI.createListboxTextItem(v)
     35    --TODO: Reintroduce sorting, if needed. At the moment it's sorted by filename.
     36    --table.sort(levelList)
     37    for k,v in pairs(P.levelList) do
     38        local item = CEGUI.createListboxTextItem(v:getName())
    2339        item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
    24         CEGUI.toListbox(listbox):addItem(item)
    25         if v .. ".oxw" == preselect then
     40        listbox:addItem(item)
     41        if v:getXMLFilename() == preselect then
    2642            listbox:setItemSelectState(item, true)
    2743        end
     44        P.itemList[k] = listbox:getListboxItemFromIndex(k-1)
     45        orxonox.GUIManager:setTooltipTextHelper(P.itemList[k], v:getDescription())
    2846    end
    29 
    3047end
    3148
    3249function P.SingleplayerStartButton_clicked(e)
    33     local choice = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox")):getFirstSelectedItem()
    34     if choice then
    35         orxonox.LevelManager:getInstance():setDefaultLevel(choice:getText() .. ".oxw")
    36         orxonox.execute("startGame")
    37         hideAllMenuSheets()
     50    local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/SingleplayerLevelListbox"))
     51    local choice = listbox:getFirstSelectedItem()
     52    if choice ~= nil then
     53        local index = listbox:getItemIndex(choice)
     54        local level = P.levelList[index+1]
     55        if level ~= nil then
     56            orxonox.LevelManager:getInstance():setDefaultLevel(level:getXMLFilename())
     57            orxonox.execute("startGame")
     58            hideAllMenuSheets()
     59        end
    3860    end
     61end
     62
     63function P.SingleplayerShowAll_clicked(e)
     64    local checkbox = tolua.cast(winMgr:getWindow("orxonox/SingleplayerShowAllCheckbox"), "CEGUI::Checkbox")
     65    local show = checkbox:isSelected()
     66    if show ~= P.showAll then
     67        P.showAll = show
     68        P.createLevelList()
     69   end
    3970end
    4071
Note: See TracChangeset for help on using the changeset viewer.