Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 11358


Ignore:
Timestamp:
Mar 9, 2017, 4:22:19 PM (7 years ago)
Author:
patricwi
Message:

space race merged

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  
    33  RaceCheckPoint.cc
    44  SpaceRaceManager.cc
    5   OldSpaceRace.cc
    6   OldRaceCheckPoint.cc
     5
    76  SpaceRaceBot.cc
    87  SpaceRaceController.cc
  • code/trunk/src/modules/gametypes/SpaceRace.cc

    r11071 r11358  
    2323 *     Mauro Salomon
    2424 *   Co-authors:
    25  *      Celine Egger
    26  *
    27  */
     25 *      Celine Egger*/
     26       
     27
     28
     29
     30/*
     31Edited, Renewed and Revised by
     32        Berkay Berabi
     33        Louis Meile
     34 
     35 
     36To-do- list by Louis Meile and Berkay Berabi for future projects :
     37- improve AI (SpaceRaceController):
     38i) so far bots arent able to evade obstacles. fix that!
     39ii) 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
    2845
    2946#include "SpaceRace.h"
    3047
     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"
    3163#include "items/Engine.h"
    3264
     
    3769#include "SpaceRaceBot.h"
    3870#include "items/Engine.h"
     71#include <vector>
     72
    3973
    4074namespace orxonox
     
    4680        RegisterObject(SpaceRace);
    4781
    48         this->botclass_ = Class(SpaceRaceBot);//ClassByString("")
     82        this->botclass_ = Class(SpaceRaceBot); //ClassByString("")
    4983        this->cantMove_ = false;
    5084        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
     159Timer* countdownTimer = new Timer();
     160        countdownTimer->setTimer(11, false, createExecutor(createFunctor(&SpaceRace::countdownFinished, this)));
     161    }
     162
     163
     164
    54165
    55166    void SpaceRace::end()
     
    63174        {
    64175            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. You lose!";
     176                        + "You lose!";
    66177        }
    67178        else
    68179        {
    69             message = "You win!! You have reached the last check point after "+ multi_cast<std::string>(s)
     180            message = "You win!! Final check point reached after "+ multi_cast<std::string>(s)
    70181                        + "." + multi_cast<std::string>(ms) + " seconds.";
    71182        }
     
    78189    }
    79190
    80     void SpaceRace::tick(float dt)
     191
     192void SpaceRace::tick(float dt)
    81193    {
    82194        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}
    107196
    108197    void SpaceRace::newCheckpointReached(RaceCheckPoint* checkpoint, PlayerInfo* player)
     
    114203        int ms = this->clock_.getMilliseconds() % 1000;
    115204
    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 ");
    118218        this->getGametypeInfo()->sendAnnounceMessage(message);
    119219        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
    122247    bool SpaceRace::allowPawnHit(Pawn* victim, Pawn* originator)
    123248    {
     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    {
    124260        return false;
    125261    }
    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     }
    136262}
  • code/trunk/src/modules/gametypes/SpaceRace.h

    r11071 r11358  
    5757            virtual ~SpaceRace() {}
    5858
     59             void setConfigValues();
     60
    5961            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.
    6066
    61             virtual void end() override;
     67
     68
     69             virtual void playerEntered(PlayerInfo* player) override;
     70
     71            //virtual void newCheckpointReached();
    6272
    6373            void newCheckpointReached(RaceCheckPoint* checkpoint, PlayerInfo* player);
     74           
     75
     76
    6477            inline RaceCheckPoint* getCheckpointReached(PlayerInfo* player)
    6578                { return this->checkpointReached_[player]; }
  • code/trunk/src/modules/gametypes/SpaceRaceBot.cc

    r10262 r11358  
    2323 *      Author: purgham
    2424 */
     25#include <vector>
    2526
    2627#include "SpaceRaceBot.h"
     28#include "core/GameMode.h"
    2729#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
    2837
    2938namespace orxonox
     
    3544        this->defaultController_ = Class(SpaceRaceController);// ClassByString("")
    3645        this->createController();
     46
     47    }
     48
     49SpaceRaceBot::~SpaceRaceBot(){
     50
     51}
     52
     53void 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);
    3765    }
    3866}
  • code/trunk/src/modules/gametypes/SpaceRaceBot.h

    r10262 r11358  
    3030#include "gametypes/GametypesPrereqs.h"
    3131#include "gametypes/SpaceRaceController.h"
     32#include <vector>
    3233
    3334
     
    3536{
    3637
    37     /**
    38 
    39     */
    4038    class _GametypesExport SpaceRaceBot: public Bot
    4139    {
    4240        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
    4560    };
    4661}
  • code/trunk/src/modules/gametypes/SpaceRaceController.cc

    r11099 r11358  
    1616 *   GNU General Public License for more details.
    1717 *
    18  *   You should have received a copy of the GNU General Public License
     18 *   You should have     a copy of the GNU General Public License
    1919 *   along with this program; if not, write to the Free Software
    2020 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
     
    5858        OrxAssert(!checkpoints.empty(), "No Checkpoints in Level");
    5959        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         }//ausgabe
    114         orxout()<<"es gibt: "<<checkpoints_.size()<<"checkpoints"<<endl;*/
    11560        staticRacePoints_ = findStaticCheckpoints(nextRaceCheckpoint_, checkpoints);
    11661        // initialisation of currentRaceCheckpoint_
     
    12267            continue;
    12368        }
    124         //orxout()<<"Die ANzahl der virtuellen CP betraegt: "<< (-i)-2<<endl;
    12569
    12670    }
     
    225169                minNextRaceCheckPoint = nextRaceCheckPoint;
    226170            }
     171
    227172        }
    228173
     
    363308            //orxout()<< "CP "<< currentRaceCheckpoint_->getCheckpointIndex()<<" chanched to: "<< nextRaceCheckpoint_->getCheckpointIndex()<<endl;
    364309        }
     310
    365311        else if ((lastPositionSpaceship-this->getControllableEntity()->getPosition()).length()/dt > ADJUSTDISTANCE)
    366312        {
     
    380326        //orxout(user_status) << "dt= " << dt << ";  distance= " << (lastPositionSpaceship-this->getControllableEntity()->getPosition()).length() <<std::endl;
    381327        lastPositionSpaceship = this->getControllableEntity()->getPosition();
     328       
     329this->boostControl();
    382330        this->moveToPosition(nextRaceCheckpoint_->getPosition());
     331        this->boostControl();
    383332    }
    384333
  • code/trunk/src/orxonox/controllers/HumanController.h

    r11353 r11358  
    9292            //friend class, for mouselook
    9393            friend class Map;
     94            static HumanController* localController_s;
    9495
    9596        protected:
    96             static HumanController* localController_s;
    9797            bool controlPaused_;
    9898
  • code/trunk/src/orxonox/gametypes/Gametype.cc

    r11071 r11358  
    9696        }
    9797    }
    98 
     98   
    9999    /**
    100100     * @brief Initializes sub-objects of the Gametype. This must be called after the constructor.
  • code/trunk/src/orxonox/infos/Bot.cc

    r9667 r11358  
    6868        static const std::string names[] =
    6969        {
    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",
    8075            "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"
    9483        };
    9584        static std::vector<std::string> defaultnames(names, names + sizeof(names) / sizeof(std::string));
  • code/trunk/src/orxonox/infos/GametypeInfo.h

    r9667 r11358  
    8383            inline bool isStartCountdownRunning() const
    8484                { return this->bStartCountdownRunning_; }
     85           
    8586            void changedStartCountdownRunning(void); // Is called when the start countdown has been either started or stopped.
    8687
     
    132133            void dispatchStaticMessage(const std::string& message,const ColourValue& colour) const;
    133134            void dispatchFadingMessage(const std::string& message) const;
     135            void setStartCountdown(float countdown); // Set the start countdown to the input value.
     136
    134137
    135138        protected:
    136139            void start(void); // Inform the GametypeInfo that the game has started.
    137140            void end(void); // Inform the GametypeInfo that the game has ended.
    138             void setStartCountdown(float countdown); // Set the start countdown to the input value.
    139141            void countdownStartCountdown(float countDown); // Count down the start countdown by the specified value.
    140142            void countDown(); // Count down the start countdown counter.
  • code/trunk/src/orxonox/sound/WorldAmbientSound.cc

    r11071 r11358  
    5858        soundList_.emplace_back("Ganymede.ogg");
    5959        soundList_.emplace_back("luke_grey_-_hypermode.ogg");
     60        soundList_.emplace_back("racetheme.ogg");
     61
    6062
    6163    }
Note: See TracChangeset for help on using the changeset viewer.