Changeset 11358 for code/trunk/src/modules
- Timestamp:
- Mar 9, 2017, 4:22:19 PM (8 years ago)
- Location:
- code/trunk
- Files:
-
- 4 deleted
- 7 edited
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
Note: See TracChangeset
for help on using the changeset viewer.