Changeset 6996
- Timestamp:
- May 27, 2010, 10:44:10 PM (14 years ago)
- Location:
- code/branches/presentation3
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation3/data/gui/scripts/KeyBindMenu.lua
r6748 r6996 28 28 table.insert(commandList, "OverlayGroup toggleVisibility Debug") 29 29 table.insert(commandList, "OverlayGroup toggleVisibility Stats") 30 table.insert(commandList, "OrxonoxOverlay toggleVisibility QuestGUI") 31 table.insert(commandList, "OrxonoxOverlay toggleVisibility PickupInventory") 32 table.insert(commandList, "startchat") 33 table.insert(commandList, "startchat_small") 30 34 table.insert(commandList, "mouseLook") 31 35 table.insert(commandList, "pause") … … 53 57 table.insert(nameList, "Show Debug") 54 58 table.insert(nameList, "Show Stats") 59 table.insert(nameList, "Show Quests") 60 table.insert(nameList, "Show Pickups") 61 table.insert(nameList, "Show Chat") 62 table.insert(nameList, "Show small Chat") 55 63 table.insert(nameList, "Look Around") 56 64 table.insert(nameList, "Pause") -
code/branches/presentation3/data/gui/scripts/PickupInventory.lua
r6965 r6996 3 3 local P = createMenuSheet("PickupInventory") 4 4 5 P.carrierList = {}6 5 P.wrapper = nil 7 6 P.detailsWindows = {} 7 P.detailPickups = {} 8 8 P.pickupsList = {} 9 9 … … 17 17 18 18 function P.onLoad() 19 carrierList = {} 19 P.wrapper = nil 20 P.detailsWindows = {} 21 P.detailPickups = {} 22 P.pickupsList = {} 20 23 end 21 24 … … 27 30 function P.onHide() 28 31 P.showing = false 29 P.cleanup( )32 P.cleanup(true) 30 33 end 31 34 … … 34 37 return 35 38 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) 39 73 P.createInventory() 74 -- TODO: Recover scrolling position 75 40 76 end 41 77 … … 83 119 local title = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Title") 84 120 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))) 86 122 title:setText(representation:getPickupName()) 87 123 title:setProperty("FrameEnabled", "set:False") … … 89 125 90 126 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))) 92 128 useButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 93 129 if pickup:isUsed() == false then … … 101 137 102 138 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))) 104 140 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 105 141 dropButton:setText("drop") … … 108 144 109 145 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))) 111 147 detailsButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 112 148 detailsButton:setText("details") … … 117 153 end 118 154 119 function P.cleanup( )155 function P.cleanup(destroyDetails) 120 156 if P.wrapper ~= nil then 121 157 winMgr:destroyWindow(P.wrapper) … … 123 159 124 160 --Destroy details windows. 161 if destroyDetails == false then 162 return 163 end 125 164 for k,v in pairs(P.detailsWindows) do 126 165 if v ~= nil then … … 143 182 local pickup = P.pickupsList[pickupIndex] 144 183 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 151 187 152 188 local window = winMgr:createWindow("MenuWidgets/FrameWindow", name) … … 192 228 if pickup:isUsed() == false then 193 229 useButton:setText("use") 194 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUse Button_clicked")230 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUseDetailButton_clicked") 195 231 else 196 232 useButton:setText("unuse") 197 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuse Button_clicked")233 orxonox.GUIManager:subscribeEventHelper(useButton, "Clicked", P.name .. ".InventoryUnuseDetailButton_clicked") 198 234 end 199 235 wrapper:addChildWindow(useButton) … … 203 239 dropButton:setSize(CEGUI.UVector2(CEGUI.UDim(0, P.buttonWidth), CEGUI.UDim(0, P.textHeight))) 204 240 dropButton:setText("drop") 205 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDrop Button_clicked")241 orxonox.GUIManager:subscribeEventHelper(dropButton, "Clicked", P.name .. ".InventoryDropDetailButton_clicked") 206 242 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 247 end 248 249 -- TODO: Smarter 212 250 function P.getNewDetailNumber() 213 251 local number = table.getn(P.detailsWindows) … … 217 255 end 218 256 end 219 return number 257 return number+1 220 258 end 221 259 … … 238 276 local pickupIndex = P.windowToPickupHelper(e) 239 277 P.createDetailsWindow(pickupIndex) 278 end 279 280 function P.InventoryUseDetailButton_clicked(e) 281 local pickupIndex = P.windowToPickupHelper(e) 282 orxonox.PickupManager:getInstance():usePickup(P.detailPickups[pickupIndex], true) 283 end 284 285 function P.InventoryUnuseDetailButton_clicked(e) 286 local pickupIndex = P.windowToPickupHelper(e) 287 orxonox.PickupManager:getInstance():usePickup(P.detailPickups[pickupIndex], false) 288 end 289 290 function P.InventoryDropDetailButton_clicked(e) 291 local pickupIndex = P.windowToPickupHelper(e) 292 orxonox.PickupManager:getInstance():dropPickup(P.detailPickups[pickupIndex]) 240 293 end 241 294 … … 245 298 local name = we.window:getName() 246 299 local match = string.gmatch(name, "%d+") 247 local pickupNr = tonumber(match())248 300 local detailNr = tonumber(match()) 249 301 250 local window = P.detailsWindows[detailNr +1]302 local window = P.detailsWindows[detailNr] 251 303 winMgr:destroyWindow(window) 252 P.detailsWindows[detailNr+1] = nil 304 P.detailsWindows[detailNr] = nil 305 P.detailPickups[detailNr] = nil 253 306 end 254 307 -
code/branches/presentation3/src/libraries/core/GUIManager.h
r6749 r6996 84 84 //! Creates a new InputState to be used with a GUI Sheet 85 85 const std::string& createInputState(const std::string& name, TriBool::Value showCursor = TriBool::True, TriBool::Value useKeyboard = TriBool::True, bool bBlockJoyStick = false); // tolua_export 86 LuaState* getLuaState(void) 87 { return this->luaState_.get(); } 86 88 87 89 //! Returns the root window for all menu sheets … … 102 104 103 105 static GUIManager& getInstance() { return Singleton<GUIManager>::getInstance(); } // tolua_export 104 106 105 107 private: 106 108 GUIManager(const GUIManager& instance); //!< private and undefined copy c'tor (this is a singleton class) 107 108 109 void executeCode(const std::string& str); 110 109 111 template <typename FunctionType> 110 112 bool protectedCall(FunctionType function); -
code/branches/presentation3/src/modules/pickup/PickupManager.cc
r6965 r6996 39 39 #include "core/ScopedSingletonManager.h" 40 40 #include "core/Identifier.h" 41 #include "util/Convert.h" 41 42 #include "interfaces/PickupCarrier.h" 42 43 #include "infos/PlayerInfo.h" … … 64 65 65 66 this->defaultRepresentation_ = new PickupRepresentation(); 66 this->pickupsIndex_ = 0;67 67 68 68 COUT(3) << "PickupManager created." << std::endl; … … 154 154 { 155 155 this->pickupsList_.clear(); 156 this->pickupsIndex_ = 0;157 156 158 157 PlayerInfo* player = GUIManager::getInstance().getPlayer(PickupManager::guiName_s); … … 169 168 for(std::set<Pickupable*>::iterator pickup = pickups.begin(); pickup != pickups.end(); pickup++) 170 169 { 171 this->pickupsList_.insert( *pickup);170 this->pickupsList_.insert(std::pair<Pickupable*, WeakPtr<Pickupable> >(*pickup, WeakPtr<Pickupable>(*pickup))); 172 171 } 173 172 } … … 199 198 void PickupManager::dropPickup(orxonox::Pickupable* pickup) 200 199 { 200 std::map<Pickupable*, WeakPtr<Pickupable> >::iterator it = this->pickupsList_.find(pickup); 201 if(pickup == NULL || it == this->pickupsList_.end() || it->second.get() == NULL) 202 return; 203 201 204 if(!pickup->isPickedUp()) 202 205 return; 203 206 204 207 PickupCarrier* carrier = pickup->getCarrier(); 205 208 if(pickup != NULL && carrier != NULL) 209 { 206 210 carrier->drop(pickup); 211 } 207 212 } 208 213 209 214 void PickupManager::usePickup(orxonox::Pickupable* pickup, bool use) 210 215 { 216 std::map<Pickupable*, WeakPtr<Pickupable> >::iterator it = this->pickupsList_.find(pickup); 217 if(pickup == NULL || it == this->pickupsList_.end() || it->second.get() == NULL) 218 return; 219 211 220 if(!pickup->isPickedUp()) 212 221 return; -
code/branches/presentation3/src/modules/pickup/PickupManager.h
r6965 r6996 39 39 #include <map> 40 40 #include "util/Singleton.h" 41 #include "core/WeakPtr.h" 41 42 #include "pickup/PickupIdentifier.h" 42 43 #include "PickupRepresentation.h" … … 72 73 // tolua_begin 73 74 int getNumPickups(void); 74 orxonox::Pickupable* popPickup(void) { this->pickupsIndex_++; return *(this->pickupsIterator_++); } 75 int getPickupIndex(void) { return this->pickupsIndex_-1; } 75 orxonox::Pickupable* popPickup(void) { return (this->pickupsIterator_++)->first; } 76 76 orxonox::PickupRepresentation* getPickupRepresentation(orxonox::Pickupable* pickup) { if(pickup != NULL) return this->getRepresentation(pickup->getPickupIdentifier()); return NULL; } 77 77 78 78 void dropPickup(orxonox::Pickupable* pickup); 79 79 void usePickup(orxonox::Pickupable* pickup, bool use); 80 bool isValidPickup(orxonox::Pickupable* pickup) { std::map<Pickupable*, WeakPtr<Pickupable> >::iterator it = this->pickupsList_.find(pickup); if(it == this->pickupsList_.end()) return false; return it->second.get() != NULL; } 80 81 // tolua_end 81 82 … … 87 88 std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare> representations_; //!< Map linking PickupIdentifiers (representing types if Pickupables) and PickupRepresentations. 88 89 89 std::set<Pickupable*> pickupsList_; 90 std::set<Pickupable*>::iterator pickupsIterator_; 91 int pickupsIndex_; 90 std::map<Pickupable*, WeakPtr<Pickupable> > pickupsList_; 91 std::map<Pickupable*, WeakPtr<Pickupable> >::iterator pickupsIterator_; 92 92 93 93 std::vector<PickupCarrier*>* getAllCarriers(PickupCarrier* carrier); -
code/branches/presentation3/src/orxonox/gametypes/Gametype.cc
r6417 r6996 309 309 if (this->spawnpoints_.size() > 0) 310 310 { 311 SpawnPoint* fallbackSpawnPoint = NULL; 311 312 unsigned int randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(this->spawnpoints_.size()))); 312 313 unsigned int index = 0; 314 std::set<SpawnPoint*> activeSpawnPoints = this->spawnpoints_; 313 315 for (std::set<SpawnPoint*>::const_iterator it = this->spawnpoints_.begin(); it != this->spawnpoints_.end(); ++it) 316 { 317 if (index == randomspawn) 318 fallbackSpawnPoint = (*it); 319 320 if (!(*it)->isActive()) 321 activeSpawnPoints.erase(*it); 322 323 ++index; 324 } 325 326 randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(this->spawnpoints_.size()))); 327 index = 0; 328 for (std::set<SpawnPoint*>::const_iterator it = activeSpawnPoints.begin(); it != activeSpawnPoints.end(); ++it) 314 329 { 315 330 if (index == randomspawn) 316 331 return (*it); 317 332 318 333 ++index; 319 334 } 335 336 return fallbackSpawnPoint; 320 337 } 321 338 return 0; -
code/branches/presentation3/src/orxonox/interfaces/Pickupable.cc
r6901 r6996 34 34 #include "Pickupable.h" 35 35 36 #include "core/LuaState.h" 37 #include "core/GUIManager.h" 36 38 #include "core/Identifier.h" 37 39 #include "core/CoreIncludes.h" 40 #include "util/Convert.h" 41 #include "infos/PlayerInfo.h" 38 42 #include "pickup/PickupIdentifier.h" 43 #include "worldentities/pawns/Pawn.h" 39 44 #include "PickupCarrier.h" 40 45 … … 91 96 this->used_ = used; 92 97 this->changedUsed(); 98 99 GUIManager::getInstance().getLuaState()->doString("PickupInventory.update()"); 93 100 return true; 94 101 } … … 196 203 this->pickedUp_ = pickedUp; 197 204 this->changedPickedUp(); 205 GUIManager::getInstance().getLuaState()->doString("PickupInventory.update()"); 198 206 return true; 199 207 } … … 273 281 SUPER(Pickupable, clone, item); 274 282 } 283 284 /** 285 @brief 286 Method to transcribe a Pickupable as a Rewardable to the player. 287 @param player 288 A pointer to the PlayerInfo, do whatever you want with it. 289 @return 290 Return true if successful. 291 */ 292 bool Pickupable::reward(PlayerInfo* player) 293 { 294 ControllableEntity* entity = player->getControllableEntity(); 295 Pawn* pawn = static_cast<Pawn*>(entity); 296 PickupCarrier* carrier = static_cast<PickupCarrier*>(pawn); 297 return carrier->pickup(this); 298 } 275 299 276 300 } -
code/branches/presentation3/src/orxonox/interfaces/Pickupable.h
r6965 r6996 41 41 42 42 #include "core/OrxonoxClass.h" 43 #include "Rewardable.h" 43 44 44 45 namespace orxonox // tolua_export … … 52 53 */ 53 54 class _OrxonoxExport Pickupable // tolua_export 54 : virtual public OrxonoxClass 55 : virtual public OrxonoxClass, public Rewardable 55 56 { // tolua_export 56 57 protected: … … 141 142 std::list<Identifier*> targets_; //!< The possible targets of this pickup. 142 143 144 // For implementing the Rewardable interface: 145 public: 146 virtual bool reward(PlayerInfo* player); //!< Method to transcribe a Pickupable as a Rewardable to the player. 147 143 148 }; // tolua_export 144 149 -
code/branches/presentation3/src/orxonox/interfaces/Rewardable.h
r6417 r6996 48 48 Damian 'Mozork' Frick 49 49 */ 50 class _OrxonoxExport Rewardable : public OrxonoxClass50 class _OrxonoxExport Rewardable : virtual public OrxonoxClass 51 51 { 52 52 public: … … 59 59 Must be implemented by every class inheriting from Rewardable. 60 60 @param player 61 A pointer to the ControllableEntity, do whatever you want with it.61 A pointer to the PlayerInfo, do whatever you want with it. 62 62 @return 63 63 Return true if successful.
Note: See TracChangeset
for help on using the changeset viewer.