Changeset 3033 for code/trunk/src/orxonox
- Timestamp:
- May 23, 2009, 9:57:52 PM (16 years ago)
- Location:
- code/trunk
- Files:
-
- 23 edited
- 16 copied
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
/code/branches/gametypes (added) merged: 2827,2903,2905-2906,2933-2936,2952,2954,2961,2970-2971,2978,2985-2986,3019-3020
- Property svn:mergeinfo changed
-
code/trunk/src/orxonox/OrxonoxPrereqs.h
r2911 r3033 138 138 class MovableEntity; 139 139 class Sublevel; 140 class ForceField; 140 141 141 142 class Model; … … 162 163 class Pawn; 163 164 class SpaceShip; 165 class TeamBaseMatchBase; 166 class Destroyer; 164 167 165 168 class Item; … … 172 175 class EventTrigger; 173 176 class PlayerTrigger; 177 class CheckPoint; 174 178 175 179 class WeaponSystem; … … 204 208 class Deathmatch; 205 209 class TeamDeathmatch; 210 class Asteroids; 211 class TeamBaseMatch; 212 class UnderAttack; 206 213 class Pong; 207 214 … … 236 243 class HUDSpeedBar; 237 244 class HUDHealthBar; 245 class HUDTimer; 238 246 class InGameConsole; 239 247 class Notification; -
code/trunk/src/orxonox/objects/gametypes/CMakeLists.txt
r2826 r3033 3 3 Deathmatch.cc 4 4 TeamDeathmatch.cc 5 TeamBaseMatch.cc 5 6 Pong.cc 7 UnderAttack.cc 8 Asteroids.cc 6 9 ) -
code/trunk/src/orxonox/objects/gametypes/Gametype.cc
r2896 r3033 60 60 this->numberOfBots_ = 0; 61 61 62 this->timeLimit_ = 0; 63 this->time_ = 0; 64 this->timerIsActive_ = false; 65 62 66 this->initialStartCountdown_ = 3; 63 67 … … 88 92 SUPER(Gametype, tick, dt); 89 93 94 //count timer 95 if (timerIsActive_) 96 { 97 if (this->timeLimit_ == 0) 98 this->time_ += dt; 99 else 100 this->time_ -= dt; 101 } 102 90 103 if (this->gtinfo_.bStartCountdownRunning_ && !this->gtinfo_.bStarted_) 91 104 this->gtinfo_.startCountdown_ -= dt; … … 93 106 if (!this->gtinfo_.bStarted_) 94 107 this->checkStart(); 95 else 108 else if (!this->gtinfo_.bEnded_) 96 109 this->spawnDeadPlayersIfRequested(); 97 110 … … 111 124 { 112 125 this->gtinfo_.bEnded_ = true; 126 127 for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it) 128 { 129 if (it->first->getControllableEntity()) 130 { 131 ControllableEntity* oldentity = it->first->getControllableEntity(); 132 133 ControllableEntity* entity = this->defaultControllableEntity_.fabricate(oldentity->getCreator()); 134 if (oldentity->getCamera()) 135 { 136 entity->setPosition(oldentity->getCamera()->getWorldPosition()); 137 entity->setOrientation(oldentity->getCamera()->getWorldOrientation()); 138 } 139 else 140 { 141 entity->setPosition(oldentity->getWorldPosition()); 142 entity->setOrientation(oldentity->getWorldOrientation()); 143 } 144 145 it->first->stopControl(oldentity, true); 146 it->first->startControl(entity); 147 } 148 else 149 this->spawnPlayerAsDefaultPawn(it->first); 150 } 113 151 } 114 152 … … 267 305 if (!it->first->isReadyToSpawn() || !this->gtinfo_.bStarted_) 268 306 { 269 SpawnPoint* spawn = this->getBestSpawnPoint(it->first); 270 if (spawn) 271 { 272 // force spawn at spawnpoint with default pawn 273 ControllableEntity* entity = this->defaultControllableEntity_.fabricate(spawn); 274 spawn->spawn(entity); 275 it->first->startControl(entity); 276 it->second.state_ = PlayerState::Dead; 277 } 278 else 279 { 280 COUT(1) << "Error: No SpawnPoints in current Gametype" << std::endl; 281 abort(); 282 } 307 this->spawnPlayerAsDefaultPawn(it->first); 308 it->second.state_ = PlayerState::Dead; 283 309 } 284 310 } … … 358 384 } 359 385 386 void Gametype::spawnPlayerAsDefaultPawn(PlayerInfo* player) 387 { 388 SpawnPoint* spawn = this->getBestSpawnPoint(player); 389 if (spawn) 390 { 391 // force spawn at spawnpoint with default pawn 392 ControllableEntity* entity = this->defaultControllableEntity_.fabricate(spawn); 393 spawn->spawn(entity); 394 player->startControl(entity); 395 } 396 else 397 { 398 COUT(1) << "Error: No SpawnPoints in current Gametype" << std::endl; 399 abort(); 400 } 401 } 402 360 403 void Gametype::addBots(unsigned int amount) 361 404 { … … 376 419 } 377 420 } 421 422 void Gametype::addTime(float t) 423 { 424 if (this->timeLimit_ == 0) 425 this->time_ -= t; 426 else 427 this->time_ += t; 428 } 429 430 void Gametype::removeTime(float t) 431 { 432 if (this->timeLimit_ == 0) 433 this->time_ += t; 434 else 435 this->time_ -= t; 436 } 437 438 void Gametype::resetTimer() 439 { 440 this->resetTimer(timeLimit_); 441 } 442 443 void Gametype::resetTimer(float t) 444 { 445 this->timeLimit_ = t; 446 this->time_ = t; 447 } 378 448 } -
code/trunk/src/orxonox/objects/gametypes/Gametype.h
r2890 r3033 128 128 { return this->players_.size(); } 129 129 130 virtual void addTime(float t); 131 virtual void removeTime(float t); 132 133 inline void startTimer() 134 { 135 this->time_ = this->timeLimit_; 136 this->timerIsActive_ = true; 137 } 138 139 inline void stopTimer() 140 { this->timerIsActive_ = false; } 141 142 inline float getTime() 143 { return this->time_; } 144 145 inline bool getTimerIsActive() 146 { return timerIsActive_; } 147 148 inline void setTimeLimit(float t) 149 { this->timeLimit_ = t; } 150 151 virtual void resetTimer(); 152 virtual void resetTimer(float t); 153 130 154 protected: 131 155 virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const; … … 134 158 virtual void checkStart(); 135 159 virtual void spawnPlayer(PlayerInfo* player); 160 virtual void spawnPlayerAsDefaultPawn(PlayerInfo* player); 136 161 virtual void spawnPlayersIfRequested(); 137 162 virtual void spawnDeadPlayersIfRequested(); … … 141 166 bool bAutoStart_; 142 167 bool bForceSpawn_; 168 169 float time_; 170 float timeLimit_; 171 bool timerIsActive_; 143 172 144 173 float initialStartCountdown_; -
code/trunk/src/orxonox/objects/gametypes/TeamBaseMatch.cc
r3032 r3033 125 125 void TeamBaseMatch::showPoints() 126 126 { 127 128 COUT(0) << "Points standing:" << std::endl << "Team 1: "<< pointsTeam1_ << std::endl << "Team 2: " << pointsTeam2_ << std::endl; 129 if(pointsTeam1_ >=1700) COUT(0) << "Team 1 is near victory!" << std::endl; 130 if(pointsTeam2_ >=1700) COUT(0) << "Team 2 is near victory!" << std::endl; 127 COUT(0) << "Points standing:" << std::endl << "Team 1: "<< pointsTeam1_ << std::endl << "Team 2: " << pointsTeam2_ << std::endl; 128 if(pointsTeam1_ >=1700) COUT(0) << "Team 1 is near victory!" << std::endl; 129 if(pointsTeam2_ >=1700) COUT(0) << "Team 2 is near victory!" << std::endl; 131 130 } 132 131 … … 135 134 void TeamBaseMatch::winPoints() 136 135 { 137 138 136 int amountControlled = 0; 137 int amountControlled2 = 0; 139 138 140 139 for (std::set<TeamBaseMatchBase*>::const_iterator it = this->bases_.begin(); it != this->bases_.end(); ++it) 141 140 { 142 143 144 145 146 147 148 149 141 if((*it)->getState() == BaseState::controlTeam1) 142 { 143 amountControlled++; 144 } 145 if((*it)->getState() == BaseState::controlTeam2) 146 { 147 amountControlled2++; 148 } 150 149 } 151 150 -
code/trunk/src/orxonox/objects/gametypes/TeamDeathmatch.cc
r3028 r3033 127 127 { 128 128 TeamSpawnPoint* tsp = dynamic_cast<TeamSpawnPoint*>(*it); 129 if (tsp && tsp->getTeamNumber() != desiredTeamNr)129 if (tsp && (int)tsp->getTeamNumber() != desiredTeamNr) 130 130 { 131 131 teamSpawnPoints.erase(it++); … … 189 189 return false; 190 190 } 191 192 int TeamDeathmatch::getTeam(PlayerInfo* player) 193 { 194 std::map<PlayerInfo*, int>::const_iterator it_player = this->teamnumbers_.find(player); 195 if (it_player != this->teamnumbers_.end()) 196 return it_player->second; 197 else 198 return -1; 199 } 191 200 } -
code/trunk/src/orxonox/objects/gametypes/TeamDeathmatch.h
r3028 r3033 55 55 virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn); 56 56 57 inline const ColourValue& getTeamColour(int teamnr) const 58 { return this->teamcolours_[teamnr]; } 59 57 60 protected: 58 61 virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const; 59 62 bool pawnsAreInTheSameTeam(Pawn* pawn1, Pawn* pawn2); 63 int getTeam(PlayerInfo* player); 60 64 61 65 std::map<PlayerInfo*, int> teamnumbers_; -
code/trunk/src/orxonox/objects/quest/QuestEffectBeacon.cc
r2911 r3033 41 41 42 42 #include "orxonox/objects/infos/PlayerInfo.h" 43 #include "orxonox/objects/worldentities/ ControllableEntity.h"43 #include "orxonox/objects/worldentities/pawns/Pawn.h" 44 44 #include "orxonox/objects/worldentities/triggers/PlayerTrigger.h" 45 45 #include "QuestEffect.h" … … 120 120 121 121 //! Extracting the ControllableEntity form the PlayerTrigger. 122 ControllableEntity* entity= trigger->getTriggeringPlayer();123 124 if( entity== NULL)125 { 126 COUT(2) << "The QuestEffectBeacon was triggered by an entity other than a ControllableEntity." << std::endl;122 Pawn* pawn = trigger->getTriggeringPlayer(); 123 124 if(pawn == NULL) 125 { 126 COUT(2) << "The QuestEffectBeacon was triggered by an entity other than a Pawn." << std::endl; 127 127 return false; 128 128 } 129 129 130 130 //! Extract the PlayerInfo from the ControllableEntity. 131 PlayerInfo* player = entity->getPlayer();131 PlayerInfo* player = pawn->getPlayer(); 132 132 133 133 if(player == NULL) -
code/trunk/src/orxonox/objects/worldentities/CMakeLists.txt
r2826 r3033 23 23 PongBall.cc 24 24 PongBat.cc 25 ForceField.cc 25 26 ) 26 27 -
code/trunk/src/orxonox/objects/worldentities/MobileEntity.cc
r3028 r3033 166 166 } 167 167 168 void MobileEntity::applyCentralForce(const Vector3& force) 169 { 170 if (this->isDynamic()) 171 this->physicalBody_->applyCentralForce(btVector3(force.x * this->getMass(), force.y * this->getMass(), force.z * this->getMass())); 172 } 173 168 174 bool MobileEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const 169 175 { -
code/trunk/src/orxonox/objects/worldentities/MobileEntity.h
r3028 r3033 75 75 { return this->angularAcceleration_; } 76 76 77 void applyCentralForce(const Vector3& force); 78 inline void applyCentralForce(float x, float y, float z) 79 { this->applyCentralForce(Vector3(x, y, z)); } 80 77 81 inline void setRotationRate(Degree rate) 78 82 { this->setAngularVelocity(this->getAngularVelocity().normalisedCopy() * rate.valueRadians()); } -
code/trunk/src/orxonox/objects/worldentities/MovableEntity.cc
r2896 r3033 35 35 #include "core/Executor.h" 36 36 #include "core/GameMode.h" 37 #include "objects/worldentities/pawns/Pawn.h" 37 38 38 39 namespace orxonox … … 67 68 { 68 69 SUPER(MovableEntity, XMLPort, xmlelement, mode); 70 71 XMLPortParam(MovableEntity, "enablecollisiondamage", setEnableCollisionDamage, getEnableCollisionDamage, xmlelement, mode).defaultValues(false); 72 XMLPortParam(MovableEntity, "collisiondamage", setCollisionDamage, getCollisionDamage, xmlelement, mode).defaultValues(1); 69 73 } 74 75 bool MovableEntity::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint) 76 { 77 if (GameMode::isMaster() && enableCollisionDamage_) 78 { 79 Pawn* victim = dynamic_cast<Pawn*>(otherObject); 80 if (victim) 81 { 82 victim->damage(this->collisionDamage_ * victim->getVelocity().dotProduct(this->getVelocity())); 83 } 84 } 85 86 return false; 87 } 88 70 89 71 90 void MovableEntity::registerVariables() -
code/trunk/src/orxonox/objects/worldentities/MovableEntity.h
r2662 r3033 46 46 47 47 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 48 virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint); 48 49 void registerVariables(); 49 50 … … 55 56 inline void setOrientation(const Quaternion& orientation) 56 57 { MobileEntity::setOrientation(orientation); this->overwrite_orientation_ = this->getOrientation(); } 58 59 inline void setOwner(Pawn* owner) 60 { this->owner_ = owner; } 61 inline Pawn* getOwner() const 62 { return this->owner_; } 63 64 inline void setCollisionDamage(float c) 65 { this->collisionDamage_ = c; } 66 67 inline float getCollisionDamage() 68 { return this->collisionDamage_; } 69 70 inline void setEnableCollisionDamage(bool c) 71 { 72 this->enableCollisionDamage_ = c; 73 this->enableCollisionCallback(); 74 } 75 76 inline bool getEnableCollisionDamage() 77 { return this->enableCollisionDamage_; } 57 78 58 79 private: … … 76 97 Timer<MovableEntity> resynchronizeTimer_; 77 98 Timer<MovableEntity>* continuousResynchroTimer_; 99 100 Pawn* owner_; 101 float collisionDamage_; 102 bool enableCollisionDamage_; 78 103 }; 79 104 } -
code/trunk/src/orxonox/objects/worldentities/SpawnPoint.cc
r2662 r3033 95 95 void SpawnPoint::spawn(ControllableEntity* entity) 96 96 { 97 entity->setPosition(this->get Position());98 entity->setOrientation(this->get Orientation());97 entity->setPosition(this->getWorldPosition()); 98 entity->setOrientation(this->getWorldOrientation()); 99 99 } 100 100 } -
code/trunk/src/orxonox/objects/worldentities/pawns/CMakeLists.txt
r2710 r3033 3 3 Pawn.cc 4 4 SpaceShip.cc 5 TeamBaseMatchBase.cc 6 Destroyer.cc 5 7 ) -
code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc
r2904 r3033 198 198 void Pawn::death() 199 199 { 200 this->setHealth(1); 200 201 if (this->getGametype() && this->getGametype()->allowPawnDeath(this, this->lastHitOriginator_)) 201 202 { … … 214 215 this->deatheffect(); 215 216 } 216 else217 this->setHealth(1);218 217 } 219 218 -
code/trunk/src/orxonox/objects/worldentities/triggers/CMakeLists.txt
r2710 r3033 4 4 EventTrigger.cc 5 5 PlayerTrigger.cc 6 CheckPoint.cc 6 7 ) -
code/trunk/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc
r3028 r3033 35 35 #include "core/XMLPort.h" 36 36 37 #include "orxonox/objects/worldentities/ ControllableEntity.h"37 #include "orxonox/objects/worldentities/pawns/Pawn.h" 38 38 39 39 namespace orxonox … … 109 109 WEMask.include(Class(WorldEntity)); 110 110 this->targetMask_ *= WEMask; 111 112 this->notifyMaskUpdate(); 111 113 } 112 114 … … 133 135 if(this->isForPlayer()) 134 136 { 135 ControllableEntity* player = dynamic_cast<ControllableEntity*>(entity);137 Pawn* player = dynamic_cast<Pawn*>(entity); 136 138 this->setTriggeringPlayer(player); 137 139 } -
code/trunk/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h
r3028 r3033 63 63 protected: 64 64 virtual bool isTriggered(TriggerMode mode); 65 virtual void notifyMaskUpdate() {} 66 67 ClassTreeMask targetMask_; 65 68 66 69 private: 67 ClassTreeMask targetMask_;68 70 std::set<Ogre::Node*> targetSet_; 69 71 float distance_; -
code/trunk/src/orxonox/objects/worldentities/triggers/PlayerTrigger.h
r2662 r3033 60 60 @return Returns a pointer to the ControllableEntity that triggered the PlayerTrigger. 61 61 */ 62 inline ControllableEntity* getTriggeringPlayer(void) const62 inline Pawn* getTriggeringPlayer(void) const 63 63 { return this->player_; } 64 64 … … 77 77 @param player A pointer to the ControllableEntity that triggered the PlayerTrigger. 78 78 */ 79 inline void setTriggeringPlayer( ControllableEntity* player)79 inline void setTriggeringPlayer(Pawn* player) 80 80 { this->player_ = player; } 81 81 … … 88 88 89 89 private: 90 ControllableEntity* player_; //!< The player that triggered the PlayerTrigger.90 Pawn* player_; //!< The player that triggered the PlayerTrigger. 91 91 bool isForPlayer_; //!< Is true when the PlayerTrigger schould be set to normally be triggered by ControllableEntities. 92 92 -
code/trunk/src/orxonox/objects/worldentities/triggers/Trigger.cc
r3028 r3033 102 102 { 103 103 this->bFirstTick_ = false; 104 this-> fireEvent(false);104 this->triggered(false); 105 105 } 106 106 … … 144 144 this->bTriggered_ = (newState & 0x1); 145 145 this->bActive_ = newState & 2; 146 this-> fireEvent(this->bActive_);146 this->triggered(this->bActive_); 147 147 this->stateChanges_.pop(); 148 148 if (this->stateChanges_.size() != 0) … … 160 160 else 161 161 this->setBillboardColour(ColourValue(1.0, 0.0, 0.0)); 162 } 163 164 void Trigger::triggered(bool bIsTriggered) 165 { 166 this->fireEvent(bIsTriggered); 162 167 } 163 168 -
code/trunk/src/orxonox/objects/worldentities/triggers/Trigger.h
r3028 r3033 89 89 { return this->remainingActivations_; } 90 90 91 inline void setVisible(bool visibility) 92 { this->debugBillboard_.setVisible(visibility); } 93 91 94 void setDelay(float delay); 92 95 inline float getDelay() const … … 101 104 inline bool isTriggered() { return this->isTriggered(this->mode_); } 102 105 virtual bool isTriggered(TriggerMode mode); 106 virtual void triggered(bool bIsTriggered); 103 107 104 108 private: -
code/trunk/src/orxonox/overlays/hud/CMakeLists.txt
r2890 r3033 5 5 HUDSpeedBar.cc 6 6 HUDHealthBar.cc 7 HUDTimer.cc 7 8 ChatOverlay.cc 8 9 GametypeStatus.cc
Note: See TracChangeset
for help on using the changeset viewer.