Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 21, 2018, 11:49:03 AM (6 years ago)
Author:
ottka
Message:

stop timer after round

Location:
code/branches/OrxoKart_HS18/src/modules/orxokart
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • code/branches/OrxoKart_HS18/src/modules/orxokart/OrxoKart.cc

    r12108 r12111  
    5858        SUPER(OrxoKart, tick, dt);
    5959
    60 
    6160        if(this->firstTick_ && this->origin_)
    6261        {
    6362            this->firstTick_ = false;
     63            this->wayPoints = std::vector<OrxoKartTile*>(3, nullptr);
    6464
    6565            int n = this->origin_->getNumCells();
    6666            int s = this->origin_->getCellSize();
    67 
    6867            int map_1[] =   {1,1,1,1,1,1,1,1,0,0,0
    6968                            ,1,0,0,0,0,0,0,1,1,1,0
     
    106105
    107106
    108             int *levelcodeArray =  map_2;
     107            int *levelcodeArray =  map_1;
    109108
    110 
     109            // int z = 0;
    111110            //Generate floor according to levelcode
    112111            for(int i=0; i<n; i++){
    113112                for(int j=0; j<n; j++){
    114                     if (int type = levelcodeArray[i*n + j])
    115                     (new OrxoKartTile(origin_->getContext()))->init((n-1-i)*s, j*s, s, type);
     113                    if (int type = levelcodeArray[i*n + j]) {
     114                        OrxoKartTile* tile = new OrxoKartTile(origin_->getContext());
     115                        tile->init((n-1-i)*s, j*s, s, type);
     116                        // tiles.push_back(tile);
     117                        //++z;
     118                        if ( i == 10 && j == 4 )
     119                            wayPoints.at(0) = tile;
     120
     121                        if ( i == 0 && j == 0)
     122                            wayPoints.at(1) = tile;
     123                        if ( i == 10 && j == 7)
     124                            wayPoints.at(2) = tile;
     125                    }
    116126                }   
    117127            }
    118 
    119128            //bottom flag
    120129           
    121                 OrxoKartFlag* flag = new OrxoKartFlag(origin_->getContext());
    122                 flag->init(n, s);
    123                 flag_ = flag;
     130            OrxoKartFlag* flag = new OrxoKartFlag(origin_->getContext());
     131            flag->init(n, s);
     132            flag_ = flag;
    124133           
    125134
     
    127136           
    128137
    129         }//firsttick end
     138        } //firsttick end
     139        /*
     140        for (std::vector<OrxoKartTile*>::iterator it = tiles.begin(); it != tiles.end(); ++it ) {
     141            if ((*it)->getCollided())
     142                tiles.erase(it);
     143        }
     144        if (tiles.empty())
     145            numberOfFlags_ = 0;
     146        */
     147        if (wayPointCounter >= 3)
     148            numberOfFlags_ = 0;
     149        else if (wayPointCounter < 3 && wayPointCounter >= 0 && wayPoints.at(wayPointCounter) != nullptr) {
     150            if (wayPoints.at(wayPointCounter)->getCollided()) {
     151                for (int i = 0; i < 3; ++i) {
     152                    wayPoints.at(i)->setCollided(false);
     153                }
     154                ++wayPointCounter;
     155            }
     156        }
     157        else {
     158            orxout() << " Should not happen, look in OrxoKart.cc";
     159        }
    130160
    131        
    132            
     161
     162
     163
     164
    133165        // Check if ship collided with the flag
    134166        if(flag_->getCollided()){
    135167            OrxoKartKart* player = flag_->getObjectofCollision();
    136             orxout() << "Orientation= " << player->getOrientation() << endl;
    137             player->setPosition(Vector3(80*0, 40, 80*18));
     168            player->setPosition(Vector3(80*0, 20, 80*8));
    138169            player->setOrientation(Quaternion(1, 0, 0, 0));   // 0, 0, 0
    139170            player->setVelocity(Vector3(0,0,0));
    140171            player->setAcceleration(Vector3(0,0,0));
    141172            flag_->setCollided(false);
     173            wayPointCounter = 0;
    142174
    143175
    144176            // flag_->destroyLater();
    145177           // flags_.erase (flags_.begin()+i);
    146             numberOfFlags_ = 0;
     178            //numberOfFlags_ = 0;
    147179        }
    148180       
  • code/branches/OrxoKart_HS18/src/modules/orxokart/OrxoKart.h

    r12108 r12111  
    6161            WeakPtr<OrxoKartOrigin> origin_;
    6262            OrxoKartFlag* flag_;
    63             //std::vector<OrxoKartFlag*> flags_;
     63            std::vector<OrxoKartTile*> tiles;
     64            int numberOfWP;
     65            std::vector<OrxoKartTile*> wayPoints;
     66            int wayPointCounter = 0;
    6467            int numberOfFlags_;
    6568            bool firstTick_;
  • code/branches/OrxoKart_HS18/src/modules/orxokart/OrxoKartTile.cc

    r12090 r12111  
    104104        this->attachCollisionShape(cs_);
    105105    }
     106
     107    /**
     108    @brief
     109        Checks if the OrxoKartship collided with the flag
     110    */
     111    bool OrxoKartTile::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
     112    {
     113        if(otherObject->isA(Class(OrxoKartKart))) {
     114            collided_ = true;
     115            kartCollider = (OrxoKartKart*) otherObject;
     116        }
     117
     118        return false;
     119    }
     120
     121
    106122}
  • code/branches/OrxoKart_HS18/src/modules/orxokart/OrxoKartTile.h

    r12089 r12111  
    3939#include "objects/ObjectsPrereqs.h"
    4040
     41#include "OrxoKartKart.h"
    4142#include "worldentities/StaticEntity.h"
    4243
     
    5152            void init(int x, int z, int s, int type);
    5253
     54            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
     55
     56            inline bool getCollided() const
     57                { return this->collided_; }
     58
     59            inline OrxoKartKart* getObjectofCollision() const
     60                { return this->kartCollider; }   
     61
     62            inline void setCollided(bool setValue)
     63                { this->collided_ = setValue; }
     64
    5365        private:
    5466            Model* model_;
    5567            BoxCollisionShape* cs_;
     68            bool collided_;
     69            OrxoKartKart* kartCollider;
    5670    };
    5771}
Note: See TracChangeset for help on using the changeset viewer.