Changeset 6700
- Timestamp:
- Apr 12, 2010, 9:10:16 PM (15 years ago)
- Location:
- code/branches/pickup4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/pickup4/data/gui/scripts/PickupInventory.lua
r6679 r6700 14 14 15 15 P.carrierList = {} 16 P.wrapper = nil 17 P.detailsWindows = {} 16 18 17 19 function P.init() … … 21 23 function P.show() 22 24 P.window:show() -- TODO: Do this through parent... 23 P.visible = true 24 25 P.visible = true 26 27 P.createInventory() 28 29 end 30 31 function P.hide() 32 P.cleanup() 33 34 end 35 36 function P.update() 37 P.cleanup() 38 39 P.createInventory() 40 end 41 42 function P.createInventory() 25 43 local pickupManager = orxonox.PickupManager:getInstance() 26 44 local carrier = pickupManager:getPawn() 27 45 28 46 local root = winMgr:getWindow("orxonox/PickupInventory/Inventory") 47 P.wrapper = winMgr:createWindow("TaharezLook/ScrollablePane", "orxonox/PickupInventory/Inventory/Wrapper") 48 P.wrapper:setSize(CEGUI.UVector2(CEGUI.UDim(1,0),CEGUI.UDim(1,0))) 49 root:addChildWindow(P.wrapper) 29 50 30 51 P.carrierList = {} 31 52 32 P.getCarrierList(carrier) 53 --Design parameters: 54 local space = 15 55 56 P.getCarrierList(carrier) 57 local offset = 0 33 58 for k,v in pairs(P.carrierList) do 34 59 local window = P.createCarrierBox(v,k) 35 root:addChildWindow(window); 36 end 37 60 window:setYPosition(CEGUI.UDim(0,offset)) 61 offset = offset + window:getHeight():asAbsolute(1) + space 62 P.wrapper:addChildWindow(window) 63 end 38 64 end 39 65 … … 63 89 64 90 local name = "orxonox/PickupInventory/Carrier" .. index 65 local window = winMgr:createWindow("TaharezLook/StaticText", name .. "/Title") 66 --TODO: Align text to the top 67 window:setText(carrier:getCarrierName()) 68 91 92 --Design parameters: 93 local imageHeight = 50 94 local textHeight = 30 95 local horizontalOffset = 20 96 local buttonWidth = 85 97 98 local offset = 0 99 69 100 local box = winMgr:createWindow("TaharezLook/ScrollablePane", name .. "/Box") 70 box:setPosition(CEGUI.UVector2(CEGUI.UDim(0.05, 0), CEGUI.UDim(0, 35))) 71 box:setSize(CEGUI.UVector2(CEGUI.UDim(0.9, 0), CEGUI.UDim(1, 0))) 72 window:addChildWindow(box) 73 74 --Design parameters: 75 imageHeight = 50 76 textHeight = 30 101 box:setPosition(CEGUI.UVector2(CEGUI.UDim(0, horizontalOffset), CEGUI.UDim(0, 0))) 102 box:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -horizontalOffset), CEGUI.UDim(1, 0))) 103 104 offset = offset+textHeight 105 local title = winMgr:createWindow("TaharezLook/StaticText", name .. "/Title") 106 title:setText(carrier:getCarrierName()) 107 title:setSize(CEGUI.UVector2(CEGUI.UDim(1, 0), CEGUI.UDim(0, offset))) 108 title:setProperty("FrameEnabled", "set:False") 109 box:addChildWindow(title) 77 110 78 111 local numPickups = orxonox.PickupManager:getInstance():getNumPickups(carrier) … … 81 114 82 115 local item = winMgr:createWindow("TaharezLook/StaticText", name .. "/Box/Pickup" .. i) 83 item:setSize(CEGUI.UVector2(CEGUI.UDim(1, 0), CEGUI.UDim(0, imageHeight)))84 item:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, (imageHeight+5)*i)))116 item:setSize(CEGUI.UVector2(CEGUI.UDim(1, -horizontalOffset), CEGUI.UDim(0, imageHeight))) 117 item:setPosition(CEGUI.UVector2(CEGUI.UDim(0, horizontalOffset), CEGUI.UDim(0, offset))) 85 118 box:addChildWindow(item) 119 offset = offset + imageHeight+5 86 120 87 121 local image = winMgr:createWindow("TaharezLook/StaticImage", name .. "/Box/Pickup" .. i .. "/Image") … … 96 130 title:setSize(CEGUI.UVector2(CEGUI.UDim(0.4, 0), CEGUI.UDim(0, textHeight))) 97 131 title:setText(pickup:getPickupName()) 132 title:setProperty("FrameEnabled", "set:False") 98 133 item:addChildWindow(title) 99 134 100 135 local useButton = winMgr:createWindow("TaharezLook/Button", name .. "/Box/Pickup" .. i .. "/UseButton") 101 136 useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, imageHeight+10),CEGUI.UDim(0, (imageHeight-textHeight)/2))) 102 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0 .2, 0), CEGUI.UDim(0, textHeight)))137 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, textHeight))) 103 138 useButton:setText("use") 104 139 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.filename .. ".InventoryUseButton_clicked") … … 106 141 107 142 local dropButton = winMgr:createWindow("TaharezLook/Button", name .. "/Box/Pickup" .. i .. "/DropButton") 108 dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0. 6, imageHeight+15),CEGUI.UDim(0, (imageHeight-textHeight)/2)))109 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0 .2, 0), CEGUI.UDim(0, textHeight)))143 dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, imageHeight+15+buttonWidth),CEGUI.UDim(0, (imageHeight-textHeight)/2))) 144 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, textHeight))) 110 145 dropButton:setText("drop") 111 146 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.filename .. ".InventoryDropButton_clicked") 112 147 item:addChildWindow(dropButton) 113 end 114 115 return window 148 149 local detailsButton = winMgr:createWindow("TaharezLook/Button", name .. "/Box/Pickup" .. i .. "/DetailsButton") 150 detailsButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0.4, imageHeight+20+2*buttonWidth),CEGUI.UDim(0, (imageHeight-textHeight)/2))) 151 detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, textHeight))) 152 detailsButton:setText("details") 153 orxonox.GUIManager:subscribeEventHelper(detailsButton, "Clicked", P.filename .. ".InventoryDetailsButton_clicked") 154 item:addChildWindow(detailsButton) 155 end 156 157 box:setHeight(CEGUI.UDim(0,offset)) 158 159 return box 160 end 161 162 function P.cleanup() 163 if P.wrapper ~= nil then 164 winMgr:destroyWindow(P.wrapper) 165 end 166 167 --Destroy details windows. 168 for k,v in pairs(P.detailsWindows) do 169 if v ~= nil then 170 winMgr:destroyWindow(v) 171 end 172 end 116 173 end 117 174 … … 119 176 local we = CEGUI.toWindowEventArgs(e) 120 177 local name = we.window:getName() 121 debug(0, "Name: " .. name)122 178 123 179 local match = string.gmatch(name, "%d+") … … 131 187 end 132 188 189 function P.createDetailsWindow(pickupIndex, carrierIndex) 190 local carrier = P.carrierList[carrierIndex] 191 local pickup = orxonox.PickupManager:getInstance():getPickupRepresentation(pickupIndex, carrier) 192 193 local headerOffset = 35 194 --Design parameters 195 local titleHeight = 30 196 local imageSize = 100 197 local buttonWidth = 85 198 199 local name = "orxonox/PickupInventory/Carrier" .. carrierIndex .. "/Pickup" .. pickupIndex .. "/Details" .. P.getNewDetailNumber() 200 201 local window = winMgr:createWindow("TaharezLook/FrameWindow", name) 202 window:setSize(CEGUI.UVector2(CEGUI.UDim(0.5,0),CEGUI.UDim(0.4,0))) 203 orxonox.GUIManager:subscribeEventHelper(window, "CloseClicked", P.filename .. ".closeDetailWindow") 204 205 local root = winMgr:getWindow("orxonox/PickupInventory/Background") 206 root:addChildWindow(window) 207 208 local wrapper = winMgr:createWindow("DefaultWindow", name .. "/Wrapper") 209 wrapper:setSize(CEGUI.UVector2(CEGUI.UDim(1, -20),CEGUI.UDim(1, -50))) 210 wrapper:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 10),CEGUI.UDim(0, 40))) 211 window:addChildWindow(wrapper) 212 213 local title = winMgr:createWindow("TaharezLook/StaticText", name .. "/Title") 214 title:setText(pickup:getPickupName()) 215 title:setHeight(CEGUI.UDim(0, titleHeight)) 216 title:setProperty("FrameEnabled", "set:False") 217 title:setProperty("BackgroundEnabled", "set:False") 218 wrapper:addChildWindow(title) 219 220 local image = winMgr:createWindow("TaharezLook/StaticImage", name .. "/Image") 221 image:setProperty("Image", "set:PickupInventory image:" .. pickup:getInventoryRepresentation()) 222 image:setProperty("BackgroundEnabled", "set:False") 223 image:setProperty("FrameEnabled", "set:True") 224 image:setSize(CEGUI.UVector2(CEGUI.UDim(0, imageSize), CEGUI.UDim(0, imageSize))) 225 image:setYPosition(CEGUI.UDim(0, titleHeight + 5)) 226 wrapper:addChildWindow(image) 227 228 local box = winMgr:createWindow("TaharezLook/ScrollablePane", name .. "/Description") 229 box:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -1*(imageSize + 10)),CEGUI.UDim(1, -(titleHeight + 5 + titleHeight + 20)))) 230 box:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageSize + 10),CEGUI.UDim(0, titleHeight + 5))) 231 local description = winMgr:createWindow("TaharezLook/StaticText", name .. "/Description/Text") 232 description:setText(pickup:getPickupDescription()) 233 description:setProperty("HorzFormatting", "WordWrapLeftAligned") 234 description:setProperty("VertFormatting", "TopAligned") 235 box:addChildWindow(description) 236 wrapper:addChildWindow(box) 237 238 local useButton = winMgr:createWindow("TaharezLook/Button", name .. "/UseButton") 239 useButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageSize+10),CEGUI.UDim(1, -40))) 240 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, titleHeight))) 241 useButton:setText("use") 242 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.filename .. ".InventoryUseButton_clicked") 243 wrapper:addChildWindow(useButton) 244 245 local dropButton = winMgr:createWindow("TaharezLook/Button", name .. "/DropButton") 246 dropButton:setPosition(CEGUI.UVector2(CEGUI.UDim(0, imageSize+10+buttonWidth+10),CEGUI.UDim(1, -40))) 247 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0, titleHeight))) 248 dropButton:setText("drop") 249 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.filename .. ".InventoryDropButton_clicked") 250 wrapper:addChildWindow(dropButton) 251 252 table.insert(P.detailsWindows, window) 253 254 end 255 256 function P.getNewDetailNumber() 257 local number = table.getn(P.detailsWindows) 258 for k,v in pairs(P.detailsWindows) do 259 if v == nil then 260 number = k-1 261 end 262 end 263 return number 264 end 265 133 266 function P.InventoryUseButton_clicked(e) 134 267 local arguments = P.windowToCarrierHelper(e) … … 141 274 end 142 275 143 function P.InventoryShowDetails_clicked(e) 144 276 function P.InventoryDetailsButton_clicked(e) 277 local arguments = P.windowToCarrierHelper(e) 278 P.createDetailsWindow(arguments[2], arguments[1]) 279 end 280 281 function P.closeDetailWindow(e) 282 --Get some numbers from the window 283 local we = CEGUI.toWindowEventArgs(e) 284 local name = we.window:getName() 285 local match = string.gmatch(name, "%d+") 286 local carrierNr = tonumber(match()) 287 local pickupNr = tonumber(match()) 288 local detailNr = tonumber(match()) 289 290 local window = P.detailsWindows[detailNr+1] 291 winMgr:destroyWindow(window) 292 P.detailsWindows[detailNr+1] = nil 145 293 end 146 294 -
code/branches/pickup4/src/modules/pickup/PickupManager.cc
r6675 r6700 157 157 } 158 158 159 160 159 int PickupManager::getNumPickups(PickupCarrier* carrier) 161 160 {
Note: See TracChangeset
for help on using the changeset viewer.