Changeset 6709 for code/trunk/src/modules/pickup
- Timestamp:
- Apr 13, 2010, 9:32:08 AM (15 years ago)
- Location:
- code/trunk
- Files:
-
- 9 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
/code/branches/ppspickups1 (added) merged: 6552,6574-6575,6579,6607,6643,6645-6648,6681,6694,6703,6705-6706
- Property svn:mergeinfo changed
-
code/trunk/src/modules/pickup/Pickup.cc
r6540 r6709 39 39 #include "DroppedPickup.h" 40 40 41 #include "tools/Timer.h" 42 41 43 namespace orxonox 42 44 { 43 45 44 46 /*static*/ const std::string Pickup::activationTypeImmediate_s = "immediate"; 45 47 /*static*/ const std::string Pickup::activationTypeOnUse_s = "onUse"; 46 48 /*static*/ const std::string Pickup::durationTypeOnce_s = "once"; 47 49 /*static*/ const std::string Pickup::durationTypeContinuous_s = "continuous"; 48 50 49 51 Pickup::Pickup(BaseObject* creator) : BaseObject(creator) 50 52 { 51 53 RegisterObject(Pickup); 52 54 53 55 this->initialize(); 54 56 } 55 57 56 58 Pickup::~Pickup() 57 59 { 58 59 } 60 60 61 } 62 61 63 /** 62 64 @brief … … 68 70 this->durationType_ = pickupDurationType::once; 69 71 } 70 72 71 73 /** 72 74 @brief … … 74 76 */ 75 77 void Pickup::initializeIdentifier(void) 76 { 78 { 77 79 std::string val1 = this->getActivationType(); 78 80 std::string type1 = "activationType"; 79 81 this->pickupIdentifier_->addParameter(type1, val1); 80 82 81 83 std::string val2 = this->getDurationType(); 82 84 std::string type2 = "durationType"; 83 85 this->pickupIdentifier_->addParameter(type2, val2); 84 86 } 85 87 86 88 /** 87 89 @brief … … 94 96 XMLPortParam(Pickup, "activationType", setActivationType, getActivationType, xmlelement, mode); 95 97 XMLPortParam(Pickup, "durationType", setDurationType, getDurationType, xmlelement, mode); 96 98 97 99 this->initializeIdentifier(); 98 100 } 99 101 100 102 /** 101 103 @brief … … 116 118 } 117 119 } 118 120 119 121 /** 120 122 @brief … … 135 137 } 136 138 } 137 139 138 140 /** 139 141 @brief … … 157 159 } 158 160 } 159 161 160 162 /** 161 163 @brief … … 179 181 } 180 182 } 181 183 182 184 /** 183 185 @brief … … 188 190 { 189 191 SUPER(Pickup, changedPickedUp); 190 192 191 193 //! Sets the Pickup to used if the Pickup has activation type 'immediate' and gets picked up. 192 194 if(this->getCarrier() != NULL && this->isPickedUp() && this->isImmediate()) … … 195 197 } 196 198 } 197 199 198 200 /** 199 201 @brief … … 206 208 if(item == NULL) 207 209 item = new Pickup(this); 208 210 209 211 SUPER(Pickup, clone, item); 210 212 211 213 Pickup* pickup = dynamic_cast<Pickup*>(item); 212 214 pickup->setActivationTypeDirect(this->getActivationTypeDirect()); 213 215 pickup->setDurationTypeDirect(this->getDurationTypeDirect()); 214 216 215 217 pickup->initializeIdentifier(); 216 218 } 217 219 218 220 /** 219 221 @brief … … 231 233 return true; 232 234 } 233 235 236 /** 237 @brief 238 Starts the pickup duration timer. 239 After the specified durationTime has expired the function pickupTimerCallback is called. 240 pickupTimerCallback can be overloaded and thus the desired functionality can be implemented. 241 @param durationTime 242 The duration after which the expires and the callback function is called. 243 @return 244 Returns true if the pickup duration timer was started successfully, false if not. 245 */ 246 bool Pickup::startPickupTimer(float durationTime) 247 { 248 if (durationTime<=0) 249 { 250 COUT(1) << "Invalid durationTime in pickup." << std::endl; 251 return false; 252 } 253 if (this->durationTimer_.isActive()) //!< Check if Timer is already running 254 { 255 COUT(1) << "Pickup durationTimer already in use." << std::endl; 256 return false; 257 } 258 this->durationTimer_.setTimer(durationTime, false, createExecutor(createFunctor(&Pickup::pickupTimerCallback, this))); 259 return true; 260 } 234 261 } -
code/trunk/src/modules/pickup/Pickup.h
r6540 r6709 42 42 #include "interfaces/Pickupable.h" 43 43 44 #include "tools/Timer.h" 45 44 46 namespace orxonox 45 47 { … … 54 56 }; 55 57 } 56 58 57 59 //! Enum for the duration tyoe. 58 60 namespace pickupDurationType … … 64 66 }; 65 67 } 66 68 67 69 /** 68 70 @brief … … 74 76 class _PickupExport Pickup : public Pickupable, public BaseObject 75 77 { 76 78 77 79 protected: 78 80 Pickup(BaseObject* creator); //!< Constructor. 79 81 80 82 public: 81 83 virtual ~Pickup(); //!< Destructor. 82 84 83 85 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 84 86 85 87 /** 86 88 @brief Get the activation type of the pickup. … … 95 97 inline pickupDurationType::Value getDurationTypeDirect(void) 96 98 { return this->durationType_; } 97 99 98 100 const std::string& getActivationType(void); //!< Get the activation type of the pickup. 99 101 const std::string& getDurationType(void); //!< Get the duration type of the pickup. 100 102 101 103 /** 102 104 @brief Get whether the activation type is 'immediate'. … … 123 125 inline bool isContinuous(void) 124 126 { return this->getDurationTypeDirect() == pickupDurationType::continuous; } 125 127 126 128 virtual void changedPickedUp(void); //!< Should be called when the pickup has transited from picked up to dropped or the other way around. 127 129 128 130 virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the Pickup. 129 131 130 132 protected: 131 133 void initializeIdentifier(void); 132 134 133 135 virtual bool createSpawner(void); //!< Facilitates the creation of a PickupSpawner upon dropping of the Pickupable. 134 136 137 bool startPickupTimer(float durationTime); 138 139 virtual void pickupTimerCallback(void) {} 140 135 141 /** 136 142 @brief Set the activation type of the pickup. … … 145 151 inline void setDurationTypeDirect(pickupDurationType::Value type) 146 152 { this->durationType_ = type; } 147 153 148 154 void setActivationType(const std::string& type); //!< Set the activation type of the pickup. 149 155 void setDurationType(const std::string& type); //!< Set the duration type of the pickup 150 156 151 157 private: 152 158 void initialize(void); //!< Initializes the member variables. 153 159 160 //TODO: Problems, when there are more Timers needed? Solutions? 161 Timer durationTimer_; //!< Timer at the disposal of each Class implementing Pickup. 162 154 163 pickupActivationType::Value activationType_; //!< The activation type of the Pickup. 155 164 pickupDurationType::Value durationType_; //!< The duration type of the pickup. 156 165 157 166 static const std::string activationTypeImmediate_s; 158 167 static const std::string activationTypeOnUse_s; 159 168 static const std::string durationTypeOnce_s; 160 169 static const std::string durationTypeContinuous_s; 161 162 170 }; 163 171 164 172 } 165 173 #endif // _Pickup_H__ -
code/trunk/src/modules/pickup/PickupPrereqs.h
r6524 r6709 73 73 class PickupRepresentation; 74 74 class PickupSpawner; 75 75 76 76 //items 77 77 class HealthPickup; 78 78 class MetaPickup; 79 79 class SpeedPickup; 80 80 81 } 81 82 -
code/trunk/src/modules/pickup/items/CMakeLists.txt
r6524 r6709 1 1 ADD_SOURCE_FILES(PICKUP_SRC_FILES 2 2 3 HealthPickup.cc 4 5 SpeedPickup.cc 3 6 MetaPickup.cc 7 4 8 ) -
code/trunk/src/modules/pickup/items/HealthPickup.cc
- Property svn:eol-style set to native
-
code/trunk/src/modules/pickup/items/HealthPickup.h
- Property svn:eol-style set to native
-
code/trunk/src/modules/pickup/items/MetaPickup.cc
- Property svn:eol-style set to native
-
code/trunk/src/modules/pickup/items/MetaPickup.h
- Property svn:eol-style set to native
Note: See TracChangeset
for help on using the changeset viewer.