Changeset 7072 for code/branches/presentation3/data
- Timestamp:
- Jun 1, 2010, 9:28:28 PM (14 years ago)
- Location:
- code/branches/presentation3/data
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation3/data/gui/scripts/GUITools.lua
r6746 r7072 45 45 return 0.008*ratio/0.3204 46 46 end 47 48 function getStaticTextWindowHeight(window) 49 local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel()) 50 local formattedArea = lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window) 51 local frameHeight = window:getUnclippedPixelRect():getHeight() - formattedArea:getHeight() 52 local lines = window:getFont():getFormattedLineCount(window:getText(), formattedArea, CEGUI.WordWrapLeftAligned) 53 local height = lines * window:getFont():getLineSpacing() + frameHeight 54 return height 55 end -
code/branches/presentation3/data/gui/scripts/PickupInventory.lua
r6996 r7072 247 247 end 248 248 249 -- TODO: Smarter250 249 function P.getNewDetailNumber() 251 250 local number = table.getn(P.detailsWindows) -
code/branches/presentation3/data/gui/scripts/QuestGUI.lua
r6746 r7072 3 3 local P = createMenuSheet("QuestGUI") 4 4 5 function P.show() 6 P.window:show() -- TODO: Do this through parent... 7 P.visible = true 8 5 P.rootWindow = nil 6 P.detailsWindows = {} 7 P.quests = {} 8 P.hints = {} 9 P.player = nil 10 11 -- design parameters 12 P.indentWidth = 20 13 P.scrollbarWidth = 13 14 P.buttonHeight = 30 15 P.titleHeight = 26 16 P.borderWidth = 5 17 18 function P.onShow() 19 20 local questsList = winMgr:getWindow("orxonox/QuestGUI/QuestsList") 21 22 P.player = orxonox.GUIManager:getInstance():getPlayer(P.name) 23 P.rootWindow = P.createQuestGUI(); 24 25 questsList:addChildWindow(P.rootWindow) 26 end 27 28 function P.onHide() 29 P.cleanup() 30 end 31 32 function P.createQuestGUI() 9 33 local questManager = orxonox.QuestManager:getInstance() 10 34 11 local questsList = winMgr:getWindow("orxonox/QuestGUI/QuestsList") 12 13 local window = questManager:getQuestGUI(P.name) 14 15 questsList:addChildWindow(window) 16 35 local depth = 0 36 local index = 0 37 38 local questWindow = winMgr:createWindow("MenuWidgets/ScrollablePane", "orxonox/QuestGUI/Quests") 39 questWindow:setSize(CEGUI.UVector2(CEGUI.UDim(1, 0),CEGUI.UDim(1, 0))) 40 41 -- Iterate through all parent-quests. 42 local numParentQuests = orxonox.QuestManager:getInstance():getNumParentQuests(P.player) 43 local i = 0 44 while i <= numParentQuests-1 do 45 local quest = orxonox.QuestManager:getInstance():getParentQuest(P.player, i) 46 index = P.createQuestNodes(questWindow, quest, depth, index) 47 i = i+1 48 end 49 50 return questWindow 51 end 52 53 function P.createQuestNodes(root, parent, depth, index) 54 local number = table.getn(P.quests)+1 55 local name = "orxonox/QuestGUI/Quests/" .. number 56 local node = winMgr:createWindow("MenuWidgets/TabButton", name) 57 node:setText(orxonox.QuestManager:getInstance():getDescription(parent):getTitle()) 58 node:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.indentWidth*depth), CEGUI.UDim(0, P.buttonHeight*index))) 59 node:setSize(CEGUI.UVector2(CEGUI.UDim(1, -P.indentWidth*depth-P.scrollbarWidth), CEGUI.UDim(0, P.buttonHeight))) 60 orxonox.GUIManager:subscribeEventHelper(node, "Clicked", P.name .. ".openDetails_clicked") 61 root:addChildWindow(node) 62 63 table.insert(P.quests, parent) 64 65 index = index+1 66 67 -- Iterate through all sub-quests. 68 local numQuests = orxonox.QuestManager:getInstance():getNumSubQuests(parent, P.player) 69 local i = 0 70 while i <= numQuests-1 do 71 local quest = orxonox.QuestManager:getInstance():getSubQuest(parent, P.player, i) 72 index = P.createQuestNodes(root, quest, depth+1, index) 73 i = i+1 74 end 75 76 return index; 77 end 78 79 function P.cleanup() 80 winMgr:destroyWindow(P.rootWindow) 81 for k,v in pairs(P.detailsWindows) do 82 if v ~= nil then 83 winMgr:destroyWindow(v) 84 P.detailsWindows[k] = nil 85 end 86 end 87 P.detailsWindows = {} 88 89 P.quests = {} 90 P.hints = {} 91 P.player = nil 92 93 winMgr:destroyWindow(P.rootWindow) 94 P.rootWindow = nil 95 end 96 97 function P.openDetails_clicked(e) 98 --Get some numbers from the window 99 local we = CEGUI.toWindowEventArgs(e) 100 local name = we.window:getName() 101 local match = string.gmatch(name, "%d+") 102 local questNr = tonumber(match()) 103 104 name = name .. "/Details" .. P.getNewDetailNumber() 105 quest = P.quests[questNr] 106 107 local details = winMgr:createWindow("MenuWidgets/FrameWindow", name) 108 details:setSize(CEGUI.UVector2(CEGUI.UDim(0.7, 0), CEGUI.UDim(0.7, 0))) 109 details:setPosition(CEGUI.UVector2(CEGUI.UDim(0.1, 0), CEGUI.UDim(0.1, 0))) 110 details:setText(orxonox.QuestManager:getInstance():getDescription(quest):getTitle()) 111 details:setProperty("Alpha", 1.0) 112 details:setProperty("InheritsAlpha", "setFalse") 113 orxonox.GUIManager:subscribeEventHelper(details, "CloseClicked", P.name .. ".closeDetails_clicked") 114 115 table.insert(P.detailsWindows, details) 116 117 name = name .. "/Scrollable" 118 local window = winMgr:createWindow("MenuWidgets/ScrollablePane", name) 119 window:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -2*P.borderWidth),CEGUI.UDim(1.0, -P.titleHeight))) 120 window:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.borderWidth), CEGUI.UDim(0, P.titleHeight))) 121 details:addChildWindow(window) 122 123 local offset = 0 124 125 local status = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Status") 126 window:addChildWindow(status) 127 status:setProperty("HorzFormatting", "WordWrapLeftAligned") 128 status:setProperty("VertFormatting", "TopAligned") 129 if quest:isActive(P.player) then 130 status:setText("This quest is active.") 131 elseif quest:isCompleted(P.player) then 132 status:setText("This quest was completed.") 133 elseif quest:isFailed(P.player) then 134 status:setText("This quest was failed.") 135 end 136 status:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 137 status:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0))) 138 local height = getStaticTextWindowHeight(status) 139 status:setHeight(CEGUI.UDim(0, height)) 140 offset = offset + height 141 142 local descriptionTitle = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Description/Title"); 143 window:addChildWindow(descriptionTitle) 144 descriptionTitle:setProperty("HorzFormatting", "HorzCentred") 145 descriptionTitle:setProperty("VertFormatting", "TopAligned") 146 descriptionTitle:setText("Description:") 147 descriptionTitle:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 148 descriptionTitle:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0))) 149 height = getStaticTextWindowHeight(descriptionTitle) 150 descriptionTitle:setHeight(CEGUI.UDim(0, height)) 151 offset = offset + height 152 153 local description = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Description"); 154 window:addChildWindow(description) 155 description:setProperty("HorzFormatting", "WordWrapLeftAligned") 156 description:setProperty("VertFormatting", "TopAligned") 157 description:setText(orxonox.QuestManager:getInstance():getDescription(quest):getDescription()) 158 description:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 159 description:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0))) 160 height = getStaticTextWindowHeight(description) 161 description:setHeight(CEGUI.UDim(0, height)) 162 offset = offset + height 163 164 -- Display the hints of this quest 165 local numHints = orxonox.QuestManager:getInstance():getNumHints(quest, P.player) 166 if numHints > 0 then 167 local hintsTitle = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Hints/Title"); 168 window:addChildWindow(hintsTitle) 169 hintsTitle:setProperty("HorzFormatting", "HorzCentred") 170 hintsTitle:setProperty("VertFormatting", "TopAligned") 171 hintsTitle:setText("Hints:") 172 hintsTitle:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 173 hintsTitle:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0))) 174 height = getStaticTextWindowHeight(hintsTitle) 175 hintsTitle:setHeight(CEGUI.UDim(0, height)) 176 offset = offset + height 177 end 178 local i = 0 179 while i <= numHints-1 do 180 local hint = orxonox.QuestManager:getInstance():getHints(quest, P.player, i) 181 table.insert(P.hints, hint) 182 local number = table.getn(P.hints) 183 local node = winMgr:createWindow("MenuWidgets/TabButton", name .. "/Hints" .. number) 184 node:setText(orxonox.QuestManager:getInstance():getDescription(hint):getTitle()) 185 node:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 186 node:setSize(CEGUI.UVector2(CEGUI.UDim(1, -P.scrollbarWidth), CEGUI.UDim(0, P.buttonHeight))) 187 window:addChildWindow(node) 188 offset = offset + P.buttonHeight 189 190 orxonox.GUIManager:subscribeEventHelper(node, "Clicked", P.name .. ".openHintDetails_clicked") 191 i = i+1 192 end 193 194 local window = winMgr:getWindow("orxonox/QuestGUI/Background") 195 window:addChildWindow(details) 196 end 197 198 function P.getNewDetailNumber() 199 local number = table.getn(P.detailsWindows) 200 for k,v in pairs(P.detailsWindows) do 201 if v == nil then 202 number = k-1 203 end 204 end 205 return number+1 206 end 207 208 function P.closeDetails_clicked(e) 209 local we = CEGUI.toWindowEventArgs(e) 210 local name = we.window:getName() 211 local match = string.gmatch(name, "%d+") 212 match() 213 local detailsNr = tonumber(match()) 214 215 winMgr:destroyWindow(P.detailsWindows[detailsNr]) 216 P.detailsWindows[detailsNr] = nil 217 end 218 219 function P.openHintDetails_clicked(e) 220 --Get some numbers from the window 221 local we = CEGUI.toWindowEventArgs(e) 222 local name = we.window:getName() 223 local match = string.gmatch(name, "%d+") 224 match() 225 match() 226 local hintNr = tonumber(match()) 227 228 name = name .. "/Details" .. P.getNewDetailNumber() 229 hint = P.hints[hintNr] 230 231 local details = winMgr:createWindow("MenuWidgets/FrameWindow", name) 232 details:setSize(CEGUI.UVector2(CEGUI.UDim(0.7, 0), CEGUI.UDim(0.7, 0))) 233 details:setPosition(CEGUI.UVector2(CEGUI.UDim(0.1, 0), CEGUI.UDim(0.1, 0))) 234 details:setText(orxonox.QuestManager:getInstance():getDescription(hint):getTitle()) 235 details:setProperty("Alpha", 1.0) 236 details:setProperty("InheritsAlpha", "setFalse") 237 orxonox.GUIManager:subscribeEventHelper(details, "CloseClicked", P.name .. ".closeHintDetails_clicked") 238 239 table.insert(P.detailsWindows, details) 240 241 name = name .. "/Scrollable" 242 local window = winMgr:createWindow("MenuWidgets/ScrollablePane", name) 243 window:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -2*P.borderWidth),CEGUI.UDim(1.0, -P.titleHeight))) 244 window:setPosition(CEGUI.UVector2(CEGUI.UDim(0, P.borderWidth), CEGUI.UDim(0, P.titleHeight))) 245 details:addChildWindow(window) 246 247 local offset = 0 248 249 local descriptionTitle = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Description/Title"); 250 window:addChildWindow(descriptionTitle) 251 descriptionTitle:setProperty("HorzFormatting", "HorzCentred") 252 descriptionTitle:setProperty("VertFormatting", "TopAligned") 253 descriptionTitle:setText("Description:") 254 descriptionTitle:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 255 descriptionTitle:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0))) 256 height = getStaticTextWindowHeight(descriptionTitle) 257 descriptionTitle:setHeight(CEGUI.UDim(0, height)) 258 offset = offset + height 259 260 local description = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Description"); 261 window:addChildWindow(description) 262 description:setProperty("HorzFormatting", "WordWrapLeftAligned") 263 description:setProperty("VertFormatting", "TopAligned") 264 description:setText(orxonox.QuestManager:getInstance():getDescription(hint):getDescription()) 265 description:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, offset))) 266 description:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0))) 267 height = getStaticTextWindowHeight(description) 268 description:setHeight(CEGUI.UDim(0, height)) 269 270 local window = winMgr:getWindow("orxonox/QuestGUI/Background") 271 window:addChildWindow(details) 272 end 273 274 function P.closeHintDetails_clicked(e) 275 local we = CEGUI.toWindowEventArgs(e) 276 local name = we.window:getName() 277 local match = string.gmatch(name, "%d+") 278 match() 279 match() 280 match() 281 local detailsNr = tonumber(match()) 282 283 winMgr:destroyWindow(P.detailsWindows[detailsNr]) 284 P.detailsWindows[detailsNr] = nil 17 285 end 18 286 -
code/branches/presentation3/data/levels/Quest_PirateAttack.oxw
r7036 r7072 158 158 <attached> 159 159 <Billboard position="0,0,0" scale=3 colour="1.0,1.0,0" material="Examples/Flare" /> 160 <DistanceTrigger name=questbeacon2 targetname=Me position="0,0,0" distance=400 target="Pawn"/>160 <DistanceTrigger name=questbeacon2 targetname=Me position="0,0,0" target=DistanceTriggerBeacon distance=400 /> 161 161 </attached> 162 162 <effects> -
code/branches/presentation3/data/levels/pickups.oxw
r7038 r7072 6 6 <?lua 7 7 include("templates/spaceship_assff.oxt") 8 include("templates/spaceship_pirate.oxt")9 8 include("templates/pickup_representation_templates.oxt") 10 9 include("templates/lodinformation.oxt")
Note: See TracChangeset
for help on using the changeset viewer.