Changeset 12029 for code/branches/mergeFS18/src/modules/gametypes
- Timestamp:
- Oct 10, 2018, 3:36:53 PM (6 years ago)
- Location:
- code/branches/mergeFS18
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/mergeFS18
- Property svn:mergeinfo changed
/code/branches/RacingBots_FS18 (added) merged: 11817,11840-11841,11857,11860,11893,11912-11913,11938,11964-11969,11977,11982,11986,11989,11997
- Property svn:mergeinfo changed
-
code/branches/mergeFS18/src/modules/gametypes/SpaceRace.cc
r11721 r12029 69 69 #include "SpaceRaceBot.h" 70 70 #include "items/Engine.h" 71 #include <vector> 71 #include <vector> 72 #include <iostream> 73 #include <string> 72 74 73 75 … … 83 85 this->cantMove_ = false; 84 86 this->bTimeIsUp_ = false; 85 86 87 this->numberOfBots_ = 5; // quick fix: don't allow default-bots to enter the race 88 this->bLost =false; 87 89 //we fixed the number of bots in order to have the same starting position all the time ! 88 90 } … … 101 103 startpos[4] =-40; 102 104 startpos[5] =100; 103 105 104 106 startpos[6] =100; 105 107 startpos[7] =-40; … … 117 119 118 120 this->spawnPlayersIfRequested(); 121 this->countdown_mode=true; 119 122 this->cantMove_ = true; 120 123 //players are unable to move while countdown is running … … 122 125 { 123 126 engine->setActive(false); 127 engine->addSpeedMultiply(1.7); 124 128 } 125 129 … … 138 142 } 139 143 140 std::string message("Use headphones to hear the countdown!"); 141 this->getGametypeInfo()->sendAnnounceMessage(message); 142 ChatManager::message(message); 143 144 //after 11 seconds , countdownFinished function is called to activate bots` engines 145 Timer* countdownTimer = new Timer(); 146 countdownTimer->setTimer(11, false, createExecutor(createFunctor(&SpaceRace::countdownFinished, this))); 147 } 148 149 150 144 std::string message("Use headphones to hear the countdown! Press W for forward acceleration, press W+space for boost!"); 145 146 this->getGametypeInfo()->sendAnnounceMessage(message); 147 ChatManager::message(message); 148 149 150 151 152 } 153 154 // Counter in the beginning of the game 155 void SpaceRace::tick(float dt) { 156 SUPER(SpaceRace, tick, dt); 157 158 //countdown_mode is set true,when spawnIfRequested is called 159 if (countdown_mode) { 160 //10 seconds will be counted 161 this->time_passed -= dt; 162 163 //orxout() << "time: " <<(int) time_passed << "s" << endl; 164 165 std::string message=std::to_string((int)time_passed); 166 this->getGametypeInfo()->sendAnnounceMessage(message); 167 if (time_passed <= 1) { 168 169 this->countdownFinished(); 170 this->countdown_mode = false; 171 } 172 } 173 174 } 175 176 void SpaceRace::startmessage(int second){ 177 178 std::string message=std::to_string(second); 179 this->getGametypeInfo()->sendAnnounceMessage(message); 180 ChatManager::message(message); 181 182 183 184 } 151 185 152 186 void SpaceRace::end() 153 187 { 188 154 189 this->clock_.capture(); 155 190 int s = this->clock_.getSeconds(); 156 191 int ms = static_cast<int>(this->clock_.getMilliseconds() - 1000*s); 157 192 std::string message; 158 159 193 if (this->bTimeIsUp_) 160 194 { 161 message = multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds !!\n" 162 + "You lose!"; 163 } 195 message = "TIME IS UP! YOU LOOSE!"; 196 } 197 else if(this->bLost){ 198 message = "YOU LOOSE!"; 199 200 } 201 164 202 else 165 203 { … … 167 205 + "." + multi_cast<std::string>(ms) + " seconds."; 168 206 } 207 169 208 if (!this->hasEnded()) 170 209 { 210 171 211 this->getGametypeInfo()->sendAnnounceMessage(message); 172 212 ChatManager::message(message); … … 183 223 int ms = this->clock_.getMilliseconds() % 1000; 184 224 185 186 187 const std::string& message = player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1) 225 226 std::string message(player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1) 227 + " after " + multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds."); 228 229 this->getGametypeInfo()->sendAnnounceMessage(message); 230 ChatManager::message(message); 231 /* const std::string& message = player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1) 188 232 + "after " + multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds."; 189 233 this->getGametypeInfo()->sendAnnounceMessage(message); 190 ChatManager::message(message); 234 ChatManager::message(message);*/ 235 191 236 192 237 } … … 195 240 { 196 241 197 std::string message("RACE STARTED "); 198 this->getGametypeInfo()->sendAnnounceMessage(message); 199 ChatManager::message(message); 242 std::string message("RACE STARTED"); 243 this->getGametypeInfo()->sendAnnounceMessage(message); 244 ChatManager::message(message); 245 200 246 201 247 202 248 for (Engine* engine : ObjectList<Engine>()) 203 249 engine->setActive(true); 250 251 std::string message2("Press W for forward acceleration, press W+space for boost!"); 252 this->getGametypeInfo()->sendAnnounceMessage(message2); 253 ChatManager::message(message2); 204 254 } 205 255 -
code/branches/mergeFS18/src/modules/gametypes/SpaceRace.h
r11720 r12029 42 42 #include "SpaceRaceManager.h" 43 43 44 44 45 namespace orxonox 45 46 { … … 54 55 55 56 public: 56 SpaceRace(Context* context); 57 SpaceRace(Context* context);//, SpaceRace* parentRace); 57 58 virtual ~SpaceRace() {} 58 59 … … 60 61 virtual void end() override; 61 62 virtual void countdownFinished(); 63 62 64 virtual void addBots(unsigned int amount) override; //<! overwrite function in order to bypass the addbots command. 65 virtual void tick(float dt) override; 66 virtual void startmessage(int second); 63 67 64 68 … … 79 83 inline Clock& getClock() 80 84 { return this->clock_; } 85 //inline void setParentRace(SpaceRace* parentRace) { this->parentRace = parentRace; } 81 86 82 87 virtual bool allowPawnHit(Pawn* victim, Pawn* originator) override; 83 88 virtual bool allowPawnDamage(Pawn* victim, Pawn* originator) override; 84 89 virtual bool allowPawnDeath(Pawn* victim, Pawn* originator) override; 90 bool countdown_mode = false; 91 float time_passed = 11.0f; 92 93 bool bLost=false; 85 94 86 95 private: 87 96 bool cantMove_; ///< Helper variable, used to stall the engines before the race starts. 88 97 std::map<PlayerInfo*, RaceCheckPoint*> checkpointReached_; ///< The number of the last check point reached by each player. 89 bool bTimeIsUp_; 98 bool bTimeIsUp_; ///< True if one of the check points is reached too late. 90 99 91 100 Clock clock_; ///< The clock starts running at the beginning of the game. It is used to give the time at each check point, the give the time at the end of the game, and to stop the game if a check point is reached too late. -
code/branches/mergeFS18/src/modules/gametypes/SpaceRaceController.cc
r11720 r12029 20 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21 21 * 22 * Created on: Oct 8, 2012 22 * Created on: Oct 8, 2012findCheck 23 23 * Author: purgham 24 24 */ … … 30 30 #include "collisionshapes/CollisionShape.h" 31 31 #include "BulletCollision/CollisionShapes/btCollisionShape.h" 32 #include "SpaceRace.h" 32 33 33 34 … … 38 39 const int ADJUSTDISTANCE = 500; 39 40 const int MINDISTANCE = 5; 41 40 42 /* 41 43 * Idea: Find static Point (checkpoints the spaceship has to reach) … … 45 47 { 46 48 RegisterObject(SpaceRaceController); 49 //this->parentRace = nullptr; 50 47 51 std::vector<RaceCheckPoint*> checkpoints; 48 52 … … 63 67 64 68 int i; 65 for (i = -2; findCheckpoint(i) != nullptr; i--) 69 for (i = -2; findCheckpoint(i) != nullptr; i--) // WIESO? 66 70 { 67 71 continue; … … 103 107 return returnVec; 104 108 } 105 109 void SpaceRaceController::endtheGame() const { 110 SpaceRace* gametype = orxonox_cast<SpaceRace*>(this->getGametype()); 111 assert(gametype) 112 ; if (!gametype) 113 return; 114 gametype->bLost=true; 115 gametype->end(); 116 117 } 106 118 /* 107 119 * called from 'findStaticCheckpoints' … … 122 134 for (int checkpointIndex : currentCheckpoint->getNextCheckpoints()) 123 135 { 136 if (findCheckpoint(checkpointIndex) == nullptr){ 137 orxout(internal_warning) << "Problematic Point: " << checkpointIndex << endl; 138 } 124 139 if (currentCheckpoint == findCheckpoint(checkpointIndex)) 125 140 { 126 //orxout() << currentCheckpoint->getCheckpointIndex()<<endl;141 orxout() << currentCheckpoint->getCheckpointIndex()<<endl; 127 142 continue; 128 143 } 129 if (findCheckpoint(checkpointIndex) == nullptr) 130 orxout(internal_warning) << "Problematic Point: " << checkpointIndex << endl; 144 131 145 else 132 146 numberOfWays += rekSimulationCheckpointsReached(findCheckpoint(checkpointIndex), zaehler); 147 133 148 } 134 149 zaehler[currentCheckpoint] += numberOfWays; … … 162 177 { 163 178 RaceCheckPoint* nextRaceCheckPoint = findCheckpoint(checkpointIndex); 179 164 180 float distance = recCalculateDistance(nextRaceCheckPoint, this->getControllableEntity()->getPosition()); 165 181 … … 168 184 minDistance = distance; 169 185 minNextRaceCheckPoint = nextRaceCheckPoint; 170 } 171 172 } 173 186 187 } 188 //There is a bug. If the user passes through the 19th checkpoint with the opponents, the game will end immediately 189 if(nextRaceCheckPoint->isLast()) 190 endtheGame(); 191 192 } 193 if(minNextRaceCheckPoint == nullptr) { orxout()<<"nullptr found @192 SpaceRaceController" << endl;} 174 194 return minNextRaceCheckPoint; 175 195 } … … 208 228 209 229 { 230 if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @218 SpaceRaceController" << endl; 231 210 232 return nextRaceCheckpoint_; 211 233 } … … 213 235 214 236 { 237 if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @223 SpaceRaceController" << endl; 238 215 239 return nextRaceCheckpoint_; 216 240 } … … 221 245 } 222 246 247 248 249 250 251 223 252 RaceCheckPoint* SpaceRaceController::findCheckpoint(int index) const 224 253 { 225 for (RaceCheckPoint* checkpoint : this->checkpoints_) 226 if (checkpoint->getCheckpointIndex() == index) 227 return checkpoint; 228 return nullptr; 229 } 254 RaceCheckPoint* res = nullptr; 255 for (RaceCheckPoint* checkpoint : this->checkpoints_){ 256 //conclusion: index=20 is not 257 if (checkpoint->getCheckpointIndex() == index){ 258 //if(checkpoint == nullptr) orxout()<<"returned nullptr @line 234 SpaceRaceController"<<endl; 259 //orxout()<< "index of the checkpoint "<< index <<endl; 260 res = checkpoint; 261 return res; 262 } 263 } 264 /* if(index>2 ) 265 this->endtheGame();*/ 266 267 return res; 268 } 269 270 230 271 231 272 /*RaceCheckPoint* SpaceRaceController::addVirtualCheckPoint( RaceCheckPoint* previousCheckpoint, int indexFollowingCheckPoint , const Vector3& virtualCheckPointPosition ) … … 282 323 void SpaceRaceController::tick(float dt) 283 324 { 325 326 284 327 if (this->getControllableEntity() == nullptr || this->getControllableEntity()->getPlayer() == nullptr ) 285 328 { … … 312 355 { 313 356 nextRaceCheckpoint_ = adjustNextPoint(); 357 if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @327 SpaceRaceController" << endl; 358 314 359 lastPositionSpaceship = this->getControllableEntity()->getPosition(); 315 360 } … … 325 370 } 326 371 //orxout(user_status) << "dt= " << dt << "; distance= " << (lastPositionSpaceship-this->getControllableEntity()->getPosition()).length() <<std::endl; 327 lastPositionSpaceship = this->getControllableEntity()->getPosition(); 328 372 /*lastPositionSpaceship = this->getControllableEntity()->getPosition(); 373 374 SpaceRace obj=new SpaceRace(); 375 obj.setParentRace(parentRace); 376 this->parentRace=obj.parentRace;*/ 377 329 378 this->boostControl(); 379 380 /*if(nextRaceCheckpoint_ == nullptr){ 381 this->parentRace->bLost=true; 382 this->parentRace->end(); 383 }*/ 384 // if(nextRaceCheckpoint_ == nullptr ){ 385 // // if( nextRaceCheckpoint_->getCheckpointIndex()==19) 386 // orxout()<<"nullptr @351 Line"<<endl; 387 // } 388 389 330 390 this->moveToPosition(nextRaceCheckpoint_->getPosition()); 391 331 392 this->boostControl(); 332 393 } 333 394 395 396 /*void SpaceRaceController::setParentRace(parentRace){ 397 this->parentRace=parentRace; 398 }*/ 334 399 // True if a coordinate of 'pointToPoint' is smaller then the corresponding coordinate of 'groesse' 335 400 bool SpaceRaceController::vergleicheQuader(const Vector3& pointToPoint, const Vector3& groesse) -
code/branches/mergeFS18/src/modules/gametypes/SpaceRaceController.h
r11099 r12029 47 47 { 48 48 public: 49 SpaceRaceController(Context* context); 49 SpaceRaceController(Context* context);//, SpaceRace* parentRace); 50 50 virtual ~SpaceRaceController(); 51 51 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override; 52 52 virtual void tick(float dt) override; 53 53 54 54 55 private: … … 57 58 RaceCheckPoint* nextPointFind(RaceCheckPoint*); 58 59 RaceCheckPoint* adjustNextPoint(); 60 void endtheGame() const; 61 59 62 std::vector<RaceCheckPoint*> findStaticCheckpoints(RaceCheckPoint*, const std::vector<RaceCheckPoint*>&); 60 63 std::vector<RaceCheckPoint*> staticCheckpoints(); … … 74 77 Vector3 lastPositionSpaceship; 75 78 int virtualCheckPointIndex; 79 //SpaceRace* parentRace; 76 80 }; 77 81 -
code/branches/mergeFS18/src/modules/gametypes/SpaceRaceManager.cc
r11071 r12029 113 113 RaceCheckPoint* SpaceRaceManager::findCheckpoint(int index) const 114 114 { 115 for (RaceCheckPoint* checkpoint : this->checkpoints_)115 /*for (RaceCheckPoint* checkpoint : this->checkpoints_) 116 116 if (checkpoint->getCheckpointIndex() == index) 117 117 return checkpoint; 118 return nullptr;*/ 119 for (RaceCheckPoint* checkpoint : this->checkpoints_){ 120 if (checkpoint->getCheckpointIndex() == index) 121 return checkpoint; 122 } 123 orxout()<<"returned checkpoint @line 123 SpaceRaceManager"<<endl; 118 124 return nullptr; 119 125 }
Note: See TracChangeset
for help on using the changeset viewer.