Changeset 11358 for code/trunk
- Timestamp:
- Mar 9, 2017, 4:22:19 PM (8 years ago)
- Location:
- code/trunk
- Files:
-
- 8 deleted
- 12 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
-
code/trunk/src/modules/gametypes/CMakeLists.txt
r10624 r11358 3 3 RaceCheckPoint.cc 4 4 SpaceRaceManager.cc 5 OldSpaceRace.cc 6 OldRaceCheckPoint.cc 5 7 6 SpaceRaceBot.cc 8 7 SpaceRaceController.cc -
code/trunk/src/modules/gametypes/SpaceRace.cc
r11071 r11358 23 23 * Mauro Salomon 24 24 * Co-authors: 25 * Celine Egger 26 * 27 */ 25 * Celine Egger*/ 26 27 28 29 30 /* 31 Edited, Renewed and Revised by 32 Berkay Berabi 33 Louis Meile 34 35 36 To-do- list by Louis Meile and Berkay Berabi for future projects : 37 - improve AI (SpaceRaceController): 38 i) so far bots arent able to evade obstacles. fix that! 39 ii) bots should be able to use pickups 40 - game crashes when bot wins the game(this is a huge problem you should work with the log file to find out what the errors are ) 41 - bots rotate while waiting for the countdown to end. make it stop! 42 - add elements to level file to make it even more fun to play. be creative! 43 */ 44 28 45 29 46 #include "SpaceRace.h" 30 47 48 #include "core/CoreIncludes.h" 49 #include "chat/ChatManager.h" 50 #include "util/Convert.h" 51 #include "util/Math.h" 52 #include "infos/Bot.h" 53 #include "items/Engine.h" 54 #include "controllers/HumanController.h" 55 56 #include "core/CoreIncludes.h" 57 #include "chat/ChatManager.h" 58 #include "infos/PlayerInfo.h" 59 #include "worldentities/pawns/Pawn.h" 60 #include "core/config/ConfigValueIncludes.h" 61 #include "infos/Bot.h" 62 #include "SpaceRaceBot.h" 31 63 #include "items/Engine.h" 32 64 … … 37 69 #include "SpaceRaceBot.h" 38 70 #include "items/Engine.h" 71 #include <vector> 72 39 73 40 74 namespace orxonox … … 46 80 RegisterObject(SpaceRace); 47 81 48 this->botclass_ = Class(SpaceRaceBot); //ClassByString("")82 this->botclass_ = Class(SpaceRaceBot); //ClassByString("") 49 83 this->cantMove_ = false; 50 84 this->bTimeIsUp_ = false; 51 this->numberOfBots_ = 0; // quick fix: don't allow default-bots to enter the race 52 // remove this line, if a raceBot has been created. 53 } 85 this->setConfigValues(); 86 87 this->numberOfBots_ = 5; // quick fix: don't allow default-bots to enter the race 88 //we fixed the number of bots in order to have the same starting position all the time ! 89 } 90 91 void SpaceRace::setConfigValues() 92 { 93 94 95 } 96 97 void SpaceRace::start() 98 { 99 // define spawn positions of the 5 bots 100 101 int startpos[15]; 102 103 startpos[0] =100; 104 startpos[1] =-40; 105 startpos[2] =0; 106 107 startpos[3] =100; 108 startpos[4] =-40; 109 startpos[5] =100; 110 111 startpos[6] =100; 112 startpos[7] =-40; 113 startpos[8] =-100; 114 115 startpos[9] =0; 116 startpos[10] =-40; 117 startpos[11] =-80; 118 119 startpos[12] =0; 120 startpos[13] =-40; 121 startpos[14] =80; 122 123 124 125 126 Gametype::start(); 127 if (true) 128 { 129 this->spawnPlayersIfRequested(); 130 this->cantMove_ = true; 131 //players are unable to move while countdown is running 132 for (Engine* engine : ObjectList<Engine>()){ 133 engine->setActive(false); 134 135 136 } 137 //append spawn positions to bots 138 int a,b,c; 139 a=0; 140 b=1; 141 c=2; 142 for (SpaceRaceBot* bot : ObjectList<SpaceRaceBot>()){ 143 bot->getControllableEntity()->setPosition(startpos[a],startpos[b],startpos[c]); 144 a= a+3; 145 b = b+3; 146 c+= 3; 147 } 148 149 150 } 151 152 153 154 std::string message("Use headphones to hear the countdown!"); 155 this->getGametypeInfo()->sendAnnounceMessage(message); 156 ChatManager::message(message); 157 158 //after 11 seconds , countdownFinished function is called to activate bots` engines 159 Timer* countdownTimer = new Timer(); 160 countdownTimer->setTimer(11, false, createExecutor(createFunctor(&SpaceRace::countdownFinished, this))); 161 } 162 163 164 54 165 55 166 void SpaceRace::end() … … 63 174 { 64 175 message = multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds !!\n" 65 + "You didn't reach the check point before the time limit. Youlose!";176 + "You lose!"; 66 177 } 67 178 else 68 179 { 69 message = "You win!! You have reached the last check pointafter "+ multi_cast<std::string>(s)180 message = "You win!! Final check point reached after "+ multi_cast<std::string>(s) 70 181 + "." + multi_cast<std::string>(ms) + " seconds."; 71 182 } … … 78 189 } 79 190 80 void SpaceRace::tick(float dt) 191 192 void SpaceRace::tick(float dt) 81 193 { 82 194 SUPER(SpaceRace,tick,dt); 83 84 // spawn the players already when the countdown starts, but deactivate their engines 85 if (this->isStartCountdownRunning() && !this->cantMove_) 86 { 87 this->spawnPlayersIfRequested(); 88 this->cantMove_ = true; 89 90 for (Engine* engine : ObjectList<Engine>()) 91 engine->setActive(false); 92 } 93 94 // activate the engines again if the countdown ends 95 if (!this->isStartCountdownRunning() && this->cantMove_) 96 { 97 for (Engine* engine : ObjectList<Engine>()) 98 engine->setActive(true); 99 100 this->cantMove_= false; 101 102 std::string message = "The match has started! Reach the check points as quickly as possible!"; 103 this->getGametypeInfo()->sendAnnounceMessage(message); 104 ChatManager::message(message); 105 } 106 } 195 } 107 196 108 197 void SpaceRace::newCheckpointReached(RaceCheckPoint* checkpoint, PlayerInfo* player) … … 114 203 int ms = this->clock_.getMilliseconds() % 1000; 115 204 116 const std::string& message = "Checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1) 117 + " reached after " + multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds."; 205 206 207 const std::string& message = player->getName() + " reached the checkpoint " + multi_cast<std::string>(checkpoint->getCheckpointIndex() + 1) 208 + "after " + multi_cast<std::string>(s) + "." + multi_cast<std::string>(ms) + " seconds."; 209 this->getGametypeInfo()->sendAnnounceMessage(message); 210 ChatManager::message(message); 211 212 } 213 214 void SpaceRace::countdownFinished()//activates the engines of all players 215 { 216 217 std::string message("RACE STARTED "); 118 218 this->getGametypeInfo()->sendAnnounceMessage(message); 119 219 ChatManager::message(message); 120 } 121 220 221 222 for (Engine* engine : ObjectList<Engine>()) 223 engine->setActive(true); 224 225 226 227 } 228 229 void SpaceRace::playerEntered(PlayerInfo* player) 230 { 231 Gametype::playerEntered(player); 232 233 const std::string& message = player->getName() + " entered the game"; 234 ChatManager::message(message); 235 } 236 237 238 void SpaceRace::addBots(unsigned int amount) //function that add the bots to the game 239 { 240 for (unsigned int i = 1; i <= amount; ++i){ 241 this->botclass_.fabricate(this->getContext()); 242 } 243 } 244 245 246 //set bot configurations 122 247 bool SpaceRace::allowPawnHit(Pawn* victim, Pawn* originator) 123 248 { 249 return true; 250 } 251 252 bool SpaceRace::allowPawnDamage(Pawn* victim, Pawn* originator) 253 { 254 return true; 255 } 256 257 bool SpaceRace::allowPawnDeath(Pawn* victim, Pawn* originator)// false because the bots can not recognize the objects and die to early 258 //if they can 259 { 124 260 return false; 125 261 } 126 127 bool SpaceRace::allowPawnDamage(Pawn* victim, Pawn* originator)128 {129 return false;130 }131 132 bool SpaceRace::allowPawnDeath(Pawn* victim, Pawn* originator)133 {134 return false;135 }136 262 } -
code/trunk/src/modules/gametypes/SpaceRace.h
r11071 r11358 57 57 virtual ~SpaceRace() {} 58 58 59 void setConfigValues(); 60 59 61 virtual void tick(float dt) override; 62 virtual void start() override; 63 virtual void end() override; 64 virtual void countdownFinished(); 65 virtual void addBots(unsigned int amount) override; //<! overwrite function in order to bypass the addbots command. 60 66 61 virtual void end() override; 67 68 69 virtual void playerEntered(PlayerInfo* player) override; 70 71 //virtual void newCheckpointReached(); 62 72 63 73 void newCheckpointReached(RaceCheckPoint* checkpoint, PlayerInfo* player); 74 75 76 64 77 inline RaceCheckPoint* getCheckpointReached(PlayerInfo* player) 65 78 { return this->checkpointReached_[player]; } -
code/trunk/src/modules/gametypes/SpaceRaceBot.cc
r10262 r11358 23 23 * Author: purgham 24 24 */ 25 #include <vector> 25 26 26 27 #include "SpaceRaceBot.h" 28 #include "core/GameMode.h" 27 29 #include "core/CoreIncludes.h" 30 #include "core/config/ConfigValueIncludes.h" 31 #include "gametypes/Gametype.h" 32 #include "controllers/AIController.h" 33 #include "gametypes/SpaceRaceController.h" 34 35 36 28 37 29 38 namespace orxonox … … 35 44 this->defaultController_ = Class(SpaceRaceController);// ClassByString("") 36 45 this->createController(); 46 47 } 48 49 SpaceRaceBot::~SpaceRaceBot(){ 50 51 } 52 53 void SpaceRaceBot::setConfigValues() 54 { 55 static const std::string names[] = 56 { 57 "Dr. Julius No", 58 "Berkay Berabi", 59 "Louis Meile" 60 "Yo mama" 61 }; 62 static std::vector<std::string> defaultnames(names, names + sizeof(names) / sizeof(std::string)); 63 64 SetConfigValue(names_, defaultnames); 37 65 } 38 66 } -
code/trunk/src/modules/gametypes/SpaceRaceBot.h
r10262 r11358 30 30 #include "gametypes/GametypesPrereqs.h" 31 31 #include "gametypes/SpaceRaceController.h" 32 #include <vector> 32 33 33 34 … … 35 36 { 36 37 37 /**38 39 */40 38 class _GametypesExport SpaceRaceBot: public Bot 41 39 { 42 40 public: 43 SpaceRaceBot(Context* context); 44 virtual ~SpaceRaceBot() {} 41 SpaceRaceBot(Context* context); 42 virtual ~SpaceRaceBot(); 43 44 void setConfigValues(); 45 46 47 48 virtual inline bool isInitialized() const override 49 { return true; } 50 virtual inline float getPing() const override 51 { return 0; } 52 virtual inline float getPacketLossRatio() const override 53 { return 0; } 54 55 56 private: 57 std::vector<std::string> names_; 58 59 45 60 }; 46 61 } -
code/trunk/src/modules/gametypes/SpaceRaceController.cc
r11099 r11358 16 16 * GNU General Public License for more details. 17 17 * 18 * You should have receiveda copy of the GNU General Public License18 * You should have a copy of the GNU General Public License 19 19 * along with this program; if not, write to the Free Software 20 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. … … 58 58 OrxAssert(!checkpoints.empty(), "No Checkpoints in Level"); 59 59 checkpoints_ = checkpoints; 60 /*orxout()<<"es gibt: "<<checkpoints_.size()<<"checkpoints"<<endl;61 for(std::vector<RaceCheckPoint*>::iterator it=checkpoints_.begin(); it!=checkpoints_.end(); it++)62 {63 orxout()<<"Checkpoint "<<(*it)->getCheckpointIndex()<<"; NExtReal: ";64 std::set<int> temp =(*it)->getNextCheckpoints();65 for (std::set<int>::iterator ii =temp.begin(); ii!=temp.end(); ii++)66 {67 orxout()<<(*ii)<<", ";68 }69 70 orxout()<<" NextVirtual: ";71 temp=(*it)->getVirtualNextCheckpoints();72 for (std::set<int>::iterator ii =temp.begin(); ii!=temp.end(); ii++)73 {74 orxout()<<(*ii)<<", ";75 }76 orxout()<<endl<<endl;77 78 }//ausgabe*/79 /*80 for (std::vector<RaceCheckPoint*>::iterator it = checkpoints.begin(); it != checkpoints.end(); ++it)81 {82 std::set<int> nextCheckPoints = ((*it)->getNextCheckpoints());83 if(!nextCheckPoints.empty())84 {85 for (std::set<int>::iterator numb = nextCheckPoints.begin(); numb!=nextCheckPoints.end(); numb++)86 {87 RaceCheckPoint* point2 = findCheckpoint((*numb));88 89 //if(point2 != nullptr)90 //placeVirtualCheckpoints((*it), point2);91 }92 }93 }94 */95 /*96 for(std::vector<RaceCheckPoint*>::iterator it=checkpoints_.begin(); it!=checkpoints_.end(); it++)97 {98 orxout()<<"Checkpoint "<<(*it)->getCheckpointIndex()<<"; NExtReal: ";99 std::set<int> temp =(*it)->getNextCheckpoints();100 for (std::set<int>::iterator ii =temp.begin(); ii!=temp.end(); ii++)101 {102 orxout()<<(*ii)<<", ";103 }104 105 orxout()<<" NextVirtual: ";106 temp=(*it)->getVirtualNextCheckpoints();107 for (std::set<int>::iterator ii =temp.begin(); ii!=temp.end(); ii++)108 {109 orxout()<<(*ii)<<", ";110 }111 orxout()<<endl;112 113 }//ausgabe114 orxout()<<"es gibt: "<<checkpoints_.size()<<"checkpoints"<<endl;*/115 60 staticRacePoints_ = findStaticCheckpoints(nextRaceCheckpoint_, checkpoints); 116 61 // initialisation of currentRaceCheckpoint_ … … 122 67 continue; 123 68 } 124 //orxout()<<"Die ANzahl der virtuellen CP betraegt: "<< (-i)-2<<endl;125 69 126 70 } … … 225 169 minNextRaceCheckPoint = nextRaceCheckPoint; 226 170 } 171 227 172 } 228 173 … … 363 308 //orxout()<< "CP "<< currentRaceCheckpoint_->getCheckpointIndex()<<" chanched to: "<< nextRaceCheckpoint_->getCheckpointIndex()<<endl; 364 309 } 310 365 311 else if ((lastPositionSpaceship-this->getControllableEntity()->getPosition()).length()/dt > ADJUSTDISTANCE) 366 312 { … … 380 326 //orxout(user_status) << "dt= " << dt << "; distance= " << (lastPositionSpaceship-this->getControllableEntity()->getPosition()).length() <<std::endl; 381 327 lastPositionSpaceship = this->getControllableEntity()->getPosition(); 328 329 this->boostControl(); 382 330 this->moveToPosition(nextRaceCheckpoint_->getPosition()); 331 this->boostControl(); 383 332 } 384 333 -
code/trunk/src/orxonox/controllers/HumanController.h
r11353 r11358 92 92 //friend class, for mouselook 93 93 friend class Map; 94 static HumanController* localController_s; 94 95 95 96 protected: 96 static HumanController* localController_s;97 97 bool controlPaused_; 98 98 -
code/trunk/src/orxonox/gametypes/Gametype.cc
r11071 r11358 96 96 } 97 97 } 98 98 99 99 /** 100 100 * @brief Initializes sub-objects of the Gametype. This must be called after the constructor. -
code/trunk/src/orxonox/infos/Bot.cc
r9667 r11358 68 68 static const std::string names[] = 69 69 { 70 "Dr. Julius No", 71 "Rosa Klebb", 72 "Auric Goldfinger", 73 "Emilio Largo", 74 "Ernst Stavro Blofeld", 75 "Dr. Kananga", 76 "Francisco Scaramanga", 77 "Karl Stromberg", 78 "Sir Hugo Drax", 79 "Aris Kristatos", 70 "Berkay Berabi", 71 "Louis Meile" 72 "Muten Roshi", 73 "Abradolf Lincler", 74 "Lionel Messi", 80 75 "Kamal Khan", 81 "General Orlov", 82 "Max Zorin", 83 "Brad Whitaker", 84 "General Georgi Koskov", 85 "Franz Sanchez", 86 "Alec Trevelyan", 87 "Elliot Carver", 88 "Elektra King", 89 "Viktor Zokas", 90 "Gustav Graves", 91 "Le Chiffre", 92 "Mr. White", 93 "Dominic Greene" 76 "Karl the Llama", 77 "Thomas the Tankengine", 78 "Rick", 79 "Morty", 80 "Charlie the Unicorn", 81 "Kung Fury", 82 "Postman Pat" 94 83 }; 95 84 static std::vector<std::string> defaultnames(names, names + sizeof(names) / sizeof(std::string)); -
code/trunk/src/orxonox/infos/GametypeInfo.h
r9667 r11358 83 83 inline bool isStartCountdownRunning() const 84 84 { return this->bStartCountdownRunning_; } 85 85 86 void changedStartCountdownRunning(void); // Is called when the start countdown has been either started or stopped. 86 87 … … 132 133 void dispatchStaticMessage(const std::string& message,const ColourValue& colour) const; 133 134 void dispatchFadingMessage(const std::string& message) const; 135 void setStartCountdown(float countdown); // Set the start countdown to the input value. 136 134 137 135 138 protected: 136 139 void start(void); // Inform the GametypeInfo that the game has started. 137 140 void end(void); // Inform the GametypeInfo that the game has ended. 138 void setStartCountdown(float countdown); // Set the start countdown to the input value.139 141 void countdownStartCountdown(float countDown); // Count down the start countdown by the specified value. 140 142 void countDown(); // Count down the start countdown counter. -
code/trunk/src/orxonox/sound/WorldAmbientSound.cc
r11071 r11358 58 58 soundList_.emplace_back("Ganymede.ogg"); 59 59 soundList_.emplace_back("luke_grey_-_hypermode.ogg"); 60 soundList_.emplace_back("racetheme.ogg"); 61 60 62 61 63 }
Note: See TracChangeset
for help on using the changeset viewer.