Changeset 6965 for code/branches/presentation3/data
- Timestamp:
- May 24, 2010, 4:59:23 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation3/data/gui/scripts/PickupInventory.lua
r6906 r6965 6 6 P.wrapper = nil 7 7 P.detailsWindows = {} 8 P.pickupsList = {} 9 10 P.showing = false 11 12 -- Design parameters 13 P.imageHeight = 50 14 P.detailImageSize = 100 15 P.textHeight = 30 16 P.buttonWidth = 85 8 17 9 18 function P.onLoad() … … 13 22 function P.onShow() 14 23 P.createInventory() 24 P.showing = true 15 25 end 16 26 17 27 function P.onHide() 28 P.showing = false 18 29 P.cleanup() 19 30 end 20 31 21 32 function P.update() 33 if P.showing == false then 34 return 35 end 36 22 37 P.cleanup() 23 38 … … 27 42 function P.createInventory() 28 43 local pickupManager = orxonox.PickupManager:getInstance() 29 local carrier = pickupManager:getPawn()30 44 31 45 local root = winMgr:getWindow("orxonox/PickupInventory/Inventory") … … 34 48 root:addChildWindow(P.wrapper) 35 49 36 P.carrierList = {} 37 38 --Design parameters: 39 local space = 15 40 41 P.getCarrierList(carrier) 50 P.pickupsList = {} 51 52 local numPickups = pickupManager:getNumPickups() 53 local counter = 1 42 54 local offset = 0 43 for k,v in pairs(P.carrierList) do 44 local window = P.createCarrierBox(v,k) 55 while counter <= numPickups do 56 local pickup = pickupManager:popPickup() 57 table.insert(P.pickupsList, pickup) 58 local window = P.createPickupEntry(counter, pickup) 45 59 window:setYPosition(CEGUI.UDim(0,offset)) 46 offset = offset + window:getHeight():asAbsolute(1) + space60 offset = offset + window:getHeight():asAbsolute(1) 47 61 P.wrapper:addChildWindow(window) 48 end 49 end 50 51 function P.getCarrierList(carrier) 52 53 -- TODO: Test for nil or 0? 54 if carrier == nil then 55 return 56 end 57 58 table.insert(P.carrierList, carrier) 59 60 local numCarriers = orxonox.PickupManager:getInstance():getNumCarrierChildren(carrier) 61 if numCarriers == 0 then 62 return 63 end 64 65 for i=0,numCarriers-1,1 do 66 local child = orxonox.PickupManager:getInstance():getCarrierChild(i, carrier) 67 if child ~= nil then 68 P.getCarrierList(child) 69 end 70 end 71 end 72 73 function P.createCarrierBox(carrier, index) 74 75 local name = "orxonox/PickupInventory/Carrier" .. index 76 77 --Design parameters: 78 local imageHeight = 50 79 local textHeight = 30 80 local horizontalOffset = 20 81 local buttonWidth = 85 82 83 local offset = 0 84 85 local box = winMgr:createWindow("MenuWidgets/ScrollablePane", name .. "/Box") 86 box:setPosition(CEGUI.UVector2(CEGUI.UDim(0, horizontalOffset), CEGUI.UDim(0, 0))) 87 box:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -horizontalOffset), CEGUI.UDim(1, 0))) 88 89 local numPickups = orxonox.PickupManager:getInstance():getNumPickups(carrier) 90 for i=0,numPickups-1,1 do 91 local pickup = orxonox.PickupManager:getInstance():getPickupRepresentation(i, carrier) 92 93 local item = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Box/Pickup" .. i) 94 item:setSize(CEGUI.UVector2(CEGUI.UDim(1, -horizontalOffset), CEGUI.UDim(0, imageHeight))) 95 item:setPosition(CEGUI.UVector2(CEGUI.UDim(0, horizontalOffset), CEGUI.UDim(0, offset))) 96 box:addChildWindow(item) 97 offset = offset + imageHeight+5 98 99 local image = winMgr:createWindow("MenuWidgets/StaticImage", name .. "/Box/Pickup" .. i .. "/Image") 100 image:setProperty("Image", "set:PickupInventory image:" .. pickup:getInventoryRepresentation()) 101 image:setProperty("BackgroundEnabled", "set:False") 102 image:setProperty("FrameEnabled", "set:True") 103 image:setSize(CEGUI.UVector2(CEGUI.UDim(0, imageHeight), CEGUI.UDim(0, imageHeight))) 104 item:addChildWindow(image) 105 106 local title = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Box/Pickup" .. i .. "/Title") 107 title:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageHeight+5), CEGUI.UDim(0, (imageHeight-textHeight)/2))) 108 title:setSize(CEGUI.UVector2(CEGUI.UDim(0.4, 0), CEGUI.UDim(0, textHeight))) 109 title:setText(pickup:getPickupName()) 110 title:setProperty("FrameEnabled", "set:False") 111 item:addChildWindow(title) 112 113 local useButton = winMgr:createWindow("MenuWidgets/Button", name .. "/Box/Pickup" .. i .. "/UseButton") 114 useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, imageHeight+10),CEGUI.UDim(0, (imageHeight-textHeight)/2))) 115 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, textHeight))) 62 counter = counter + 1 63 end 64 65 end 66 67 function P.createPickupEntry(index, pickup) 68 local representation = orxonox.PickupManager:getInstance():getPickupRepresentation(pickup) 69 70 local name = "orxonox/PickupInventory/Box/Pickup" .. index 71 72 local item = winMgr:createWindow("MenuWidgets/StaticText", name) 73 item:setSize(CEGUI.UVector2(CEGUI.UDim(1, 0), CEGUI.UDim(0, P.imageHeight))) 74 item:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, 0))) 75 76 local image = winMgr:createWindow("MenuWidgets/StaticImage", name .. "/Image") 77 image:setProperty("Image", "set:PickupInventory image:" .. representation:getInventoryRepresentation()) 78 image:setProperty("BackgroundEnabled", "set:False") 79 image:setProperty("FrameEnabled", "set:True") 80 image:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.imageHeight), CEGUI.UDim(0, P.imageHeight))) 81 item:addChildWindow(image) 82 83 local title = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Title") 84 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))) 86 title:setText(representation:getPickupName()) 87 title:setProperty("FrameEnabled", "set:False") 88 item:addChildWindow(title) 89 90 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))) 92 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 93 if pickup:isUsed() == false then 116 94 useButton:setText("use") 117 95 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseButton_clicked") 118 item:addChildWindow(useButton) 119 120 local dropButton = winMgr:createWindow("MenuWidgets/Button", name .. "/Box/Pickup" .. i .. "/DropButton") 121 dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, imageHeight+15+buttonWidth),CEGUI.UDim(0, (imageHeight-textHeight)/2))) 122 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, textHeight))) 123 dropButton:setText("drop") 124 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDropButton_clicked") 125 item:addChildWindow(dropButton) 126 127 local detailsButton = winMgr:createWindow("MenuWidgets/Button", name .. "/Box/Pickup" .. i .. "/DetailsButton") 128 detailsButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, imageHeight+20+2*buttonWidth),CEGUI.UDim(0, (imageHeight-textHeight)/2))) 129 detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, textHeight))) 130 detailsButton:setText("details") 131 orxonox.GUIManager:subscribeEventHelper(detailsButton, "Clicked", P.name .. ".InventoryDetailsButton_clicked") 132 item:addChildWindow(detailsButton) 133 end 134 135 box:setHeight(CEGUI.UDim(0,offset)) 136 137 return box 96 else 97 useButton:setText("unuse") 98 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuseButton_clicked") 99 end 100 item:addChildWindow(useButton) 101 102 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))) 104 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 105 dropButton:setText("drop") 106 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDropButton_clicked") 107 item:addChildWindow(dropButton) 108 109 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))) 111 detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 112 detailsButton:setText("details") 113 orxonox.GUIManager:subscribeEventHelper(detailsButton, "Clicked", P.name .. ".InventoryDetailsButton_clicked") 114 item:addChildWindow(detailsButton) 115 116 return item 138 117 end 139 118 … … 151 130 end 152 131 153 function P.windowTo CarrierHelper(e)132 function P.windowToPickupHelper(e) 154 133 local we = CEGUI.toWindowEventArgs(e) 155 134 local name = we.window:getName() 156 135 157 136 local match = string.gmatch(name, "%d+") 158 local carrierNr = tonumber(match()) 159 local pickupNr = tonumber(match()) 160 161 local arguments = {} 162 arguments[1] = carrierNr 163 arguments[2] = pickupNr 164 return arguments 165 end 166 167 function P.createDetailsWindow(pickupIndex, carrierIndex) 168 local carrier = P.carrierList[carrierIndex] 169 local pickup = orxonox.PickupManager:getInstance():getPickupRepresentation(pickupIndex, carrier) 137 local pickupIndex = tonumber(match()) 138 139 return pickupIndex 140 end 141 142 function P.createDetailsWindow(pickupIndex) 143 local pickup = P.pickupsList[pickupIndex] 144 local representation = orxonox.PickupManager:getInstance():getPickupRepresentation(pickup) 170 145 171 146 local headerOffset = 35 172 147 --Design parameters 173 local titleHeight = 30174 148 local imageSize = 100 175 local buttonWidth = 85 176 177 local name = "orxonox/PickupInventory/Carrier" .. carrierIndex .. "/Pickup" .. pickupIndex .. "/Details" .. P.getNewDetailNumber() 149 150 local name = "orxonox/PickupInventory/Pickup" .. pickupIndex .. "/Details" .. P.getNewDetailNumber() 178 151 179 152 local window = winMgr:createWindow("MenuWidgets/FrameWindow", name) … … 190 163 191 164 local title = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Title") 192 title:setText( pickup:getPickupName())193 title:setHeight(CEGUI.UDim(0, titleHeight))165 title:setText(representation:getPickupName()) 166 title:setHeight(CEGUI.UDim(0, P.textHeight)) 194 167 title:setProperty("FrameEnabled", "set:False") 195 168 title:setProperty("BackgroundEnabled", "set:False") … … 197 170 198 171 local image = winMgr:createWindow("MenuWidgets/StaticImage", name .. "/Image") 199 image:setProperty("Image", "set:PickupInventory image:" .. pickup:getInventoryRepresentation())172 image:setProperty("Image", "set:PickupInventory image:" .. representation:getInventoryRepresentation()) 200 173 image:setProperty("BackgroundEnabled", "set:False") 201 174 image:setProperty("FrameEnabled", "set:True") 202 image:setSize(CEGUI.UVector2(CEGUI.UDim(0, imageSize), CEGUI.UDim(0, imageSize)))203 image:setYPosition(CEGUI.UDim(0, titleHeight + 5))175 image:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.detailImageSize), CEGUI.UDim(0, P.detailImageSize))) 176 image:setYPosition(CEGUI.UDim(0, P.textHeight + 5)) 204 177 wrapper:addChildWindow(image) 205 178 206 179 local box = winMgr:createWindow("MenuWidgets/ScrollablePane", name .. "/Description") 207 box:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -1*( imageSize + 10)),CEGUI.UDim(1, -(titleHeight + 5 + titleHeight + 20))))208 box:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageSize + 10),CEGUI.UDim(0, titleHeight + 5)))209 local description = winMgr:createWindow(" TaharezLook/StaticText", name .. "/Description/Text")210 description:setText( pickup:getPickupDescription())180 box:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -1*(P.detailImageSize + 10)),CEGUI.UDim(1, -(P.textHeight + 5 + P.textHeight + 20)))) 181 box:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.detailImageSize + 10),CEGUI.UDim(0, P.textHeight + 5))) 182 local description = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Description/Text") 183 description:setText(representation:getPickupDescription()) 211 184 description:setProperty("HorzFormatting", "WordWrapLeftAligned") 212 185 description:setProperty("VertFormatting", "TopAligned") 213 186 box:addChildWindow(description) 214 187 wrapper:addChildWindow(box) 215 188 216 189 local useButton = winMgr:createWindow("MenuWidgets/Button", name .. "/UseButton") 217 useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageSize+10),CEGUI.UDim(1, -40))) 218 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, titleHeight))) 219 useButton:setText("use") 220 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseButton_clicked") 190 useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.detailImageSize+10),CEGUI.UDim(1, -40))) 191 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 192 if pickup:isUsed() == false then 193 useButton:setText("use") 194 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseButton_clicked") 195 else 196 useButton:setText("unuse") 197 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuseButton_clicked") 198 end 221 199 wrapper:addChildWindow(useButton) 222 200 223 201 local dropButton = winMgr:createWindow("MenuWidgets/Button", name .. "/DropButton") 224 dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageSize+10+buttonWidth+10),CEGUI.UDim(1, -40)))225 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, titleHeight)))202 dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.detailImageSize+10+P.buttonWidth+10),CEGUI.UDim(1, -40))) 203 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 226 204 dropButton:setText("drop") 227 205 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDropButton_clicked") … … 243 221 244 222 function P.InventoryUseButton_clicked(e) 245 local arguments = P.windowToCarrierHelper(e) 246 orxonox.PickupManager:getInstance():usePickup(arguments[2], P.carrierList[arguments[1]], true) 223 local pickupIndex = P.windowToPickupHelper(e) 224 orxonox.PickupManager:getInstance():usePickup(P.pickupsList[pickupIndex], true) 225 end 226 227 function P.InventoryUnuseButton_clicked(e) 228 local pickupIndex = P.windowToPickupHelper(e) 229 orxonox.PickupManager:getInstance():usePickup(P.pickupsList[pickupIndex], false) 247 230 end 248 231 249 232 function P.InventoryDropButton_clicked(e) 250 local arguments = P.windowToCarrierHelper(e)251 orxonox.PickupManager:getInstance():dropPickup( arguments[2], P.carrierList[arguments[1]])233 local pickupIndex = P.windowToPickupHelper(e) 234 orxonox.PickupManager:getInstance():dropPickup(P.pickupsList[pickupIndex]) 252 235 end 253 236 254 237 function P.InventoryDetailsButton_clicked(e) 255 local arguments = P.windowToCarrierHelper(e)256 P.createDetailsWindow( arguments[2], arguments[1])238 local pickupIndex = P.windowToPickupHelper(e) 239 P.createDetailsWindow(pickupIndex) 257 240 end 258 241 … … 262 245 local name = we.window:getName() 263 246 local match = string.gmatch(name, "%d+") 264 local carrierNr = tonumber(match())265 247 local pickupNr = tonumber(match()) 266 248 local detailNr = tonumber(match())
Note: See TracChangeset
for help on using the changeset viewer.