Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 27, 2010, 10:44:10 PM (14 years ago)
Author:
dafrick
Message:

Loads of changes.
1) PickupInventory should now be working even for extreme cases.
2) Added support for inactive Spawnpoints in Gametype.
3) Made Pickupable rewardble. meaning from now on any Pickupable can be given as a reward for completing Quests.
4) Added some keybinds to KeybindMenu, such as PickupInventory, QuestGUI and Chat.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation3/data/gui/scripts/PickupInventory.lua

    r6965 r6996  
    33local P = createMenuSheet("PickupInventory")
    44
    5 P.carrierList = {}
    65P.wrapper = nil
    76P.detailsWindows = {}
     7P.detailPickups = {}
    88P.pickupsList = {}
    99
     
    1717
    1818function P.onLoad()
    19     carrierList = {}
     19    P.wrapper = nil
     20    P.detailsWindows = {}
     21    P.detailPickups = {}
     22    P.pickupsList = {}
    2023end
    2124
     
    2730function P.onHide()
    2831    P.showing = false
    29     P.cleanup()
     32    P.cleanup(true)
    3033end
    3134
     
    3437        return
    3538    end
    36    
    37     P.cleanup()
    38    
     39
     40    -- Update opened detail windows.
     41    for k,v in pairs(P.detailsWindows) do
     42        if v ~= nil then
     43            local pickup = P.detailPickups[k]
     44            if pickup ~= nil and pickup ~= 0 then
     45                local useButton = winMgr:getWindow("orxonox/PickupInventory/Details" .. k .. "/UseButton")
     46                local dropButton = winMgr:getWindow("orxonox/PickupInventory/Details" .. k .. "/DropButton")
     47                if orxonox.PickupManager:getInstance():isValidPickup(pickup) == false then
     48                    useButton:setEnabled(false)
     49                    dropButton:setEnabled(false)
     50                    P.detailPickups[k] = nil
     51                else
     52                    useButton:setEnabled(true)
     53                    if pickup:isUsed() == true then
     54                        useButton:setText("unuse")
     55                        orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseDetailButton_clicked")
     56                    else
     57                        useButton:setText("use")
     58                        orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuseDetailButton_clicked")
     59                    end
     60
     61                    if pickup:isPickedUp() == false then
     62                        useButton:setEnabled(false)
     63                        dropButton:setEnabled(false)
     64                        P.detailPickups[k] = nil
     65                    end
     66                end
     67            end
     68        end
     69    end
     70
     71    -- Update main inventory.
     72    P.cleanup(false)
    3973    P.createInventory()
     74    -- TODO: Recover scrolling position
     75   
    4076end
    4177
     
    83119    local title = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Title")
    84120    title:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.imageHeight+5), CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
    85     title:setSize(CEGUI.UVector2(CEGUI.UDim(0.4, 0), CEGUI.UDim(0, P.textHeight)))
     121    title:setSize(CEGUI.UVector2(CEGUI.UDim(0.3, 0), CEGUI.UDim(0, P.textHeight)))
    86122    title:setText(representation:getPickupName())
    87123    title:setProperty("FrameEnabled", "set:False")
     
    89125
    90126    local useButton = winMgr:createWindow("MenuWidgets/Button", name .. "/UseButton")
    91     useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, P.imageHeight+10),CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
     127    useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.3, P.imageHeight+10),CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
    92128    useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight)))
    93129    if pickup:isUsed() == false then
     
    101137
    102138    local dropButton = winMgr:createWindow("MenuWidgets/Button", name .. "/DropButton")
    103     dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, P.imageHeight+15+P.buttonWidth),CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
     139    dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.3, P.imageHeight+15+P.buttonWidth),CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
    104140    dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight)))
    105141    dropButton:setText("drop")
     
    108144
    109145    local detailsButton = winMgr:createWindow("MenuWidgets/Button", name .. "/DetailsButton")
    110     detailsButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, P.imageHeight+20+2*P.buttonWidth),CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
     146    detailsButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.3, P.imageHeight+20+2*P.buttonWidth),CEGUI.UDim(0, (P.imageHeight-P.textHeight)/2)))
    111147    detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight)))
    112148    detailsButton:setText("details")
     
    117153end
    118154
    119 function P.cleanup()
     155function P.cleanup(destroyDetails)
    120156    if P.wrapper ~= nil then
    121157        winMgr:destroyWindow(P.wrapper)
     
    123159   
    124160    --Destroy details windows.
     161    if destroyDetails == false then
     162        return
     163    end
    125164    for k,v in pairs(P.detailsWindows) do
    126165        if v ~= nil then
     
    143182    local pickup = P.pickupsList[pickupIndex]
    144183    local representation = orxonox.PickupManager:getInstance():getPickupRepresentation(pickup)
    145    
    146     local headerOffset = 35
    147     --Design parameters
    148     local imageSize = 100
    149    
    150     local name = "orxonox/PickupInventory/Pickup" .. pickupIndex .. "/Details" .. P.getNewDetailNumber()
     184
     185    local index = P.getNewDetailNumber()
     186    local name = "orxonox/PickupInventory/Details" .. index
    151187   
    152188    local window = winMgr:createWindow("MenuWidgets/FrameWindow", name)
     
    192228    if pickup:isUsed() == false then
    193229        useButton:setText("use")
    194         orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseButton_clicked")
     230        orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseDetailButton_clicked")
    195231    else
    196232        useButton:setText("unuse")
    197         orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuseButton_clicked")
     233        orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuseDetailButton_clicked")
    198234    end
    199235    wrapper:addChildWindow(useButton)
     
    203239    dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight)))
    204240    dropButton:setText("drop")
    205     orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDropButton_clicked")
     241    orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDropDetailButton_clicked")
    206242    wrapper:addChildWindow(dropButton)
    207    
    208     table.insert(P.detailsWindows, window)
    209    
    210 end
    211 
     243
     244    P.detailsWindows[index] = window
     245    P.detailPickups[index] = pickup
     246   
     247end
     248
     249-- TODO: Smarter
    212250function P.getNewDetailNumber()
    213251    local number = table.getn(P.detailsWindows)
     
    217255        end
    218256    end
    219     return number
     257    return number+1
    220258end
    221259
     
    238276    local pickupIndex = P.windowToPickupHelper(e)
    239277    P.createDetailsWindow(pickupIndex)
     278end
     279
     280function P.InventoryUseDetailButton_clicked(e)
     281    local pickupIndex = P.windowToPickupHelper(e)
     282    orxonox.PickupManager:getInstance():usePickup(P.detailPickups[pickupIndex], true)
     283end
     284
     285function P.InventoryUnuseDetailButton_clicked(e)
     286    local pickupIndex = P.windowToPickupHelper(e)
     287    orxonox.PickupManager:getInstance():usePickup(P.detailPickups[pickupIndex], false)
     288end
     289
     290function P.InventoryDropDetailButton_clicked(e)
     291    local pickupIndex = P.windowToPickupHelper(e)
     292    orxonox.PickupManager:getInstance():dropPickup(P.detailPickups[pickupIndex])
    240293end
    241294
     
    245298    local name = we.window:getName()
    246299    local match = string.gmatch(name, "%d+")
    247     local pickupNr = tonumber(match())
    248300    local detailNr = tonumber(match())
    249301   
    250     local window = P.detailsWindows[detailNr+1]
     302    local window = P.detailsWindows[detailNr]
    251303    winMgr:destroyWindow(window)
    252     P.detailsWindows[detailNr+1] = nil
     304    P.detailsWindows[detailNr] = nil
     305    P.detailPickups[detailNr] = nil
    253306end
    254307
Note: See TracChangeset for help on using the changeset viewer.