Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 10, 2018, 3:36:53 PM (6 years ago)
Author:
merholzl
Message:

added space race improvements

Location:
code/branches/mergeFS18
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/mergeFS18

  • code/branches/mergeFS18/src/modules/gametypes/SpaceRaceController.cc

    r11720 r12029  
    2020 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    2121 *
    22  *  Created on: Oct 8, 2012
     22 *  Created on: Oct 8, 2012findCheck
    2323 *      Author: purgham
    2424 */
     
    3030#include "collisionshapes/CollisionShape.h"
    3131#include "BulletCollision/CollisionShapes/btCollisionShape.h"
     32#include "SpaceRace.h"
    3233
    3334
     
    3839    const int ADJUSTDISTANCE = 500;
    3940    const int MINDISTANCE = 5;
     41
    4042    /*
    4143     * Idea: Find static Point (checkpoints the spaceship has to reach)
     
    4547    {
    4648        RegisterObject(SpaceRaceController);
     49        //this->parentRace = nullptr;
     50
    4751        std::vector<RaceCheckPoint*> checkpoints;
    4852
     
    6367
    6468        int i;
    65         for (i = -2; findCheckpoint(i) != nullptr; i--)
     69        for (i = -2; findCheckpoint(i) != nullptr; i--)     // WIESO?
    6670        {
    6771            continue;
     
    103107        return returnVec;
    104108    }
    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    }
    106118    /*
    107119     * called from 'findStaticCheckpoints'
     
    122134            for (int checkpointIndex : currentCheckpoint->getNextCheckpoints())
    123135            {
     136                if (findCheckpoint(checkpointIndex) == nullptr){
     137                    orxout(internal_warning) << "Problematic Point: " << checkpointIndex << endl;
     138                }
    124139                if (currentCheckpoint == findCheckpoint(checkpointIndex))
    125140                {
    126                     //orxout() << currentCheckpoint->getCheckpointIndex()<<endl;
     141                    orxout() << currentCheckpoint->getCheckpointIndex()<<endl;
    127142                    continue;
    128143                }
    129                 if (findCheckpoint(checkpointIndex) == nullptr)
    130                     orxout(internal_warning) << "Problematic Point: " << checkpointIndex << endl;
     144             
    131145                else
    132146                    numberOfWays += rekSimulationCheckpointsReached(findCheckpoint(checkpointIndex), zaehler);
     147
    133148            }
    134149            zaehler[currentCheckpoint] += numberOfWays;
     
    162177        {
    163178            RaceCheckPoint* nextRaceCheckPoint = findCheckpoint(checkpointIndex);
     179
    164180            float distance = recCalculateDistance(nextRaceCheckPoint, this->getControllableEntity()->getPosition());
    165181
     
    168184                minDistance = distance;
    169185                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;}
    174194        return minNextRaceCheckPoint;
    175195    }
     
    208228
    209229        {
     230            if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @218 SpaceRaceController" << endl;
     231
    210232            return nextRaceCheckpoint_;
    211233        }
     
    213235
    214236        {
     237            if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @223 SpaceRaceController" << endl;
     238
    215239            return nextRaceCheckpoint_;
    216240        }
     
    221245    }
    222246
     247
     248
     249
     250   
     251
    223252    RaceCheckPoint* SpaceRaceController::findCheckpoint(int index) const
    224253    {
    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
    230271
    231272    /*RaceCheckPoint* SpaceRaceController::addVirtualCheckPoint( RaceCheckPoint* previousCheckpoint, int indexFollowingCheckPoint , const Vector3& virtualCheckPointPosition )
     
    282323    void SpaceRaceController::tick(float dt)
    283324    {
     325       
     326
    284327        if (this->getControllableEntity() == nullptr || this->getControllableEntity()->getPlayer() == nullptr )
    285328        {
     
    312355        {
    313356            nextRaceCheckpoint_ = adjustNextPoint();
     357            if(nextRaceCheckpoint_ == nullptr) orxout()<<"nullptr found @327 SpaceRaceController" << endl;
     358
    314359            lastPositionSpaceship = this->getControllableEntity()->getPosition();
    315360        }
     
    325370        }
    326371        //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       
    329378        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       
    330390        this->moveToPosition(nextRaceCheckpoint_->getPosition());
     391
    331392        this->boostControl();
    332393    }
    333394
     395
     396    /*void SpaceRaceController::setParentRace(parentRace){
     397        this->parentRace=parentRace;
     398    }*/
    334399    // True if a coordinate of 'pointToPoint' is smaller then the corresponding coordinate of 'groesse'
    335400    bool SpaceRaceController::vergleicheQuader(const Vector3& pointToPoint, const Vector3& groesse)
Note: See TracChangeset for help on using the changeset viewer.