Changeset 3033 for code/trunk/src/orxonox/objects/gametypes/Gametype.cc
- Timestamp:
- May 23, 2009, 9:57:52 PM (15 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
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/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 }
Note: See TracChangeset
for help on using the changeset viewer.