Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 16, 2017, 4:07:37 PM (7 years ago)
Author:
patricwi
Message:

Merged tgidronFS16

Location:
code/trunk
Files:
9 edited
2 copied

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/src/modules/hover/CMakeLists.txt

    r11035 r11493  
    88  FlagHUD.cc
    99  MazeGenerator.cc
     10  TFlagsLivesLevelHUD.cc
    1011)
    1112
     
    1718    objects
    1819    overlays
     20    pickup
    1921  SOURCE_FILES ${Hover_SRC_FILES}
    2022)
  • code/trunk/src/modules/hover/Hover.cc

    r11071 r11493  
    2424 *   Co-authors:
    2525 *      Cyrill Burgener
     26 *      Tomer Gidron
    2627 *
    2728 */
     
    3334
    3435#include "Hover.h"
    35 
     36#include "chat/ChatManager.h"
    3637#include "HoverOrigin.h"
    3738#include "HoverWall.h"
     
    3940#include "MazeGenerator.h"
    4041#include "core/CoreIncludes.h"
     42#include "gamestates/GSLevel.h"
     43#include "HoverShip.h"
     44
     45#include "pickup/PickupSpawner.h"
     46#include "pickup/Pickup.h"
    4147
    4248namespace orxonox
     
    5157        this->numberOfFlags_ = 1;
    5258        this->firstTick_ = true;
     59        level = 1; //start at level 1
     60        flagsTaken = 0;// took 0 flags in the beginning
     61        lives = 3;
     62
     63        numCells = 0;
     64        cellSize = 0;
     65        cellHeight = 0;
     66
     67        bLevelUpgradeHUD = false;
     68
     69        totFlags = 0;
    5370
    5471        this->setHUDTemplate("HoverHUD");
    55     }
    56 
    57     void Hover::tick(float dt)
    58     {
    59         SUPER(Hover, tick, dt);
    60 
     72
     73    }
     74
     75    void Hover::start()
     76    {
     77        Gametype::start();
    6178        if(this->firstTick_ && this->origin_)
    6279        {
    6380            this->firstTick_ = false;
    6481
    65             int numCells = this->origin_->getNumCells();
    66             int cellSize = this->origin_->getCellSize();
    67             int cellHeight = this->origin_->getCellHeight();
     82            numCells = this->origin_->getNumCells();
     83            cellSize = this->origin_->getCellSize();
     84            cellHeight = this->origin_->getCellHeight();
     85
     86            //TODO
     87            //create boolean array/vector to assert that no two objects are placed in the same way
     88           
    6889
    6990            MazeGenerator generator(numCells);
     
    81102            }
    82103
     104
     105            //Ground
     106            for(int i = 0; i<numCells; i++){
     107                for(int j = 0; j<numCells; j++){
     108                    StaticEntity* groundCell = new StaticEntity(origin_->getContext());
     109
     110                    groundCell->addTemplate(origin_->getGroundTemplate());
     111                    groundCell->setPosition(get3dCoordinates(i,j,-60));
     112                }
     113
     114            }
     115
     116
     117
    83118            //Generate inner Walls according to levelcode
    84119            for(int y=0; y<numCells; y++){
    85120                for(int x=0; x<numCells; x++){
    86                     switch(levelcode[ y * numCells + x ]){
     121                    switch(levelcode[ y * numCells + x ])
     122                    {
    87123                        case 1: (new HoverWall(origin_->getContext()))->init(x+1, numCells-y, cellSize, cellHeight, 1);
    88                                 break;
     124                            break;
    89125                        case 3: (new HoverWall(origin_->getContext()))->init(x+1, numCells-y, cellSize, cellHeight, 1);
    90126                        case 2: (new HoverWall(origin_->getContext()))->init(x+1, numCells-y, cellSize, cellHeight, 0);
    91                         default: break;
     127                        default:
     128                            break;
    92129                    }
    93                 }   
    94             }
    95 
    96             //Generate 5 flags randomly
    97             for ( int i = 0; i < 5; i++ )
    98             {
    99                 HoverFlag* flag = new HoverFlag(origin_->getContext());
    100                 flag->init(rand()%numCells, rand()%numCells, cellSize);
    101                 flags_.push_back(flag);
    102             }
    103 
    104         }//firsttick end
     130                }
     131            }
     132
     133            createFlags();
     134
     135            //Generate 3 PickupSpawners randomly (destroy hover pickup)
     136            for (int i = 0; i<3; i++)
     137            {
     138                PickupSpawner* pickupSpawner = new PickupSpawner(origin_->getContext());
     139
     140                pickupSpawner->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 0.0f));
     141                pickupSpawner->setPickupTemplateName(origin_->getPickupTemplate());
     142                pickupSpawner->setMaxSpawnedItems(3);
     143                pickupSpawner->setRespawnTime(30);
     144                pickupSpawner->setTriggerDistance(40);
     145                // Add pickup spawner to the pickup spawner list
     146                pickupSpawners_.push_back(pickupSpawner);
     147            }
     148           
     149            //Generate 3 PickupSpawners randomly (speed pickup)
     150            for (int i = 0; i<3; i++)
     151            {
     152                PickupSpawner* pickupSpawner = new PickupSpawner(origin_->getContext());
     153
     154                pickupSpawner->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 0.0f));
     155                pickupSpawner->setPickupTemplateName(origin_->getPickupTemplateSpeed());
     156                pickupSpawner->setMaxSpawnedItems(3);
     157                pickupSpawner->setRespawnTime(30);
     158                pickupSpawner->setTriggerDistance(40);
     159                // Add pickup spawner to the pickup spawner list
     160                pickupSpawners_.push_back(pickupSpawner);
     161            }
     162
     163            //Generate 3 PickupSpawners randomly (shrink pickup)
     164            for (int i = 0; i<3; i++)
     165            {
     166                PickupSpawner* pickupSpawner = new PickupSpawner(origin_->getContext());
     167
     168                pickupSpawner->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 0.0f));
     169                pickupSpawner->setPickupTemplateName(origin_->getPickupTemplateShrink());
     170                pickupSpawner->setMaxSpawnedItems(3);
     171                pickupSpawner->setRespawnTime(30);
     172                pickupSpawner->setTriggerDistance(40);
     173                // Add pickup spawner to the pickup spawner list
     174                pickupSpawners_.push_back(pickupSpawner);
     175            }
     176
     177            //*****************************************************************************
     178
     179            //Generate destroyable crates randomly on field
     180
     181            for (int i = 0; i<10; i++){
     182
     183                Pawn* crate = new Pawn(origin_->getContext());
     184
     185                crate->addTemplate(origin_->getObstacleTemplate()); 
     186                crate->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 43.0f));
     187
     188
     189            }   
     190           
     191
     192
     193
     194             //If no lives are left, end game
     195            if(lives <= 0)
     196            {
     197                GSLevel::startMainMenu();
     198            }
     199           
     200        }
     201    }
     202
     203
     204    // generate new Flags
     205    void Hover::createFlags()
     206    {
     207        //TODO
     208        //Generate flags randomly using bool array
     209
     210        //Generate 5 flags randomly on field
     211        for ( int i = 0; i < 5; i++ )
     212        {
     213            HoverFlag* flag = new HoverFlag(origin_->getContext());
     214            flag->init(rand()%numCells, rand()%numCells, cellSize);
     215            flags_.push_back(flag);
     216
     217           
     218
     219            if(flags_[i]->getPosition() == get3dCoordinates(0,0,-60))
     220            {
     221                flags_[i]->destroyLater();
     222                flags_.erase(flags_.begin()+i);
     223            }
     224        }
     225           
     226    }
     227
     228    void Hover::tick(float dt)
     229    {
     230        SUPER(Hover, tick, dt);
     231
    105232
    106233        // Check if ship collided with one of the flags
    107         for ( unsigned int i = 0; i < flags_.size(); i++ ){
    108             if(flags_[i]->getCollided()){
     234        for ( unsigned int i = 0; i < flags_.size(); i++ )
     235        {
     236            if(flags_[i]->getCollided())
     237            {
    109238                flags_[i]->destroyLater();
    110239                flags_.erase (flags_.begin()+i);
    111             }
     240                totFlags++;
     241                if(flags_.size()<=0){
     242                    //ChatManager::message("Level Up!");
     243                   
     244                    levelUp();
     245                }
     246            }
     247
    112248        }
    113249        numberOfFlags_ = flags_.size();
     250
     251        if(lives <= 0){
     252                GSLevel::startMainMenu();
     253            }
     254    }
     255
     256    //start new level - call to create new flags
     257    void Hover::levelUp()
     258    {
     259        level++;
     260        //increment lives after every 4 levels
     261        if(level%4 == 0)
     262        {
     263            lives++;
     264        }
     265        createFlags();
     266        toggleShowLevel();
     267        showLevelTimer.setTimer(2.0f, false, createExecutor(createFunctor(&Hover::toggleShowLevel, this)));
     268
     269        //spawn one additional crate randomly
     270        Pawn* crate = new Pawn(origin_->getContext());
     271        crate->addTemplate(origin_->getObstacleTemplate()); 
     272        crate->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 43.0f));
     273
     274    }
     275
     276    Vector3 Hover::get3dCoordinates(int x, int y, float heightOffset)
     277    {
     278        return Vector3(x*cellSize*1.0f + cellSize/2, heightOffset, y*cellSize*1.0f + cellSize/2);
     279    }
     280
     281    //if killed, subtract number of lives. If lives == 0, end game
     282    void Hover::costLife()
     283    {
     284        lives--;
     285        if (lives <= 0)
     286            GSLevel::startMainMenu();
    114287    }
    115288}
  • code/trunk/src/modules/hover/Hover.h

    r11071 r11493  
    2424 *   Co-authors:
    2525 *      Cyrill Burgener
     26 *      Tomer Gidron
    2627 *
    2728 */
     
    3738
    3839#include "HoverPrereqs.h"
     40#include "HoverShip.h"
    3941
    4042#include <vector>
     
    4244#include "gametypes/Gametype.h"
    4345#include "HoverOrigin.h"
     46#include "pickup/PickupSpawner.h"
    4447
    4548namespace orxonox
     
    5558                { this->origin_ = origin; }
    5659
     60            void start();
     61            void createFlags();
     62            void levelUp();
     63            void endLevel();
     64            void costLife();
     65
    5766            inline int getNumberOfFlags() const
    5867                { return this->numberOfFlags_; }
    5968
     69            virtual Vector3 get3dCoordinates(int x, int y, float heightOffset);
     70
     71            inline int getTotFlags() const
     72                { return this->totFlags; }
     73
     74            inline int getLives() const
     75                { return this->lives; }
     76
     77            inline int getLevel() const
     78                { return this->level; }
     79
     80            bool bLevelUpgradeHUD;
     81
    6082        private:
     83
    6184            WeakPtr<HoverOrigin> origin_;
    6285            std::vector<HoverFlag*> flags_;
    6386            int numberOfFlags_;
    6487            bool firstTick_;
     88            int level;
     89            int lives;
     90            int flagsTaken;
     91
     92            int cellSize;
     93            int cellHeight;
     94            int numCells;
     95
     96            int totFlags;
     97
     98            std::vector<PickupSpawner*> pickupSpawners_;
     99
     100            void toggleShowLevel(){bLevelUpgradeHUD = !bLevelUpgradeHUD;}
     101
     102            Timer showLevelTimer;
    65103    };
    66104}
  • code/trunk/src/modules/hover/HoverFlag.cc

    r11099 r11493  
    8787        model_ = new Model(this->getContext());
    8888        model_->setMeshSource("ss_flag_eu.mesh");
    89         model_->setScale3D(Vector3(5, 5, 5));
    90         model_->setPosition(Vector3(xCoordinate*cellSize*1.0f + cellSize/2,10.0f,yCoordinate*cellSize*1.0f + cellSize/2));
     89        model_->setScale3D(Vector3(30, 30, 30));
     90        model_->setPosition(Vector3(xCoordinate*cellSize*1.0f + cellSize/2,50.0f,yCoordinate*cellSize*1.0f + cellSize/2));
    9191
    9292        this->attach(model_);
    9393
    9494        cs_ = new BoxCollisionShape(this->getContext());
    95         cs_->setHalfExtents(Vector3(5, 5, 5));
     95        cs_->setHalfExtents(Vector3(30, 30, 30));
    9696        cs_->setPosition(Vector3(xCoordinate*cellSize*1.0f + cellSize/2,0.0f,yCoordinate*cellSize*1.0f + cellSize/2));
    9797
  • code/trunk/src/modules/hover/HoverOrigin.cc

    r11071 r11493  
    2323 *      Manuel Meier
    2424 *   Co-authors:
    25  *      ...
     25 *      Tomer Gidron
    2626 *
    2727 */
     
    4545        RegisterObject(HoverOrigin);
    4646        checkGametype();
     47
     48        //Initialization of variables (not really needed)
     49
     50        pickupTemplate_ = "";
     51        pickupRepresentationTemplate_ = "";
     52
     53        pickupTemplateSpeed_ = "";
     54        pickupRepresentationTemplateSpeed_ = "";
     55
     56
     57        pickupTemplateShrink_ = "";
     58        pickupRepresentationTemplateShrink_ = "";
    4759    }
    4860
     
    5466        XMLPortParam(HoverOrigin, "cellSize", setCellSize, getCellSize, xmlelement, mode);
    5567        XMLPortParam(HoverOrigin, "cellHeight", setCellHeight, getCellHeight, xmlelement, mode);
     68        XMLPortParam(HoverOrigin, "wallThickness", setWallThickness, getWallThickness, xmlelement, mode);
     69        XMLPortParam(HoverOrigin, "pickuptemplate", setPickupTemplate, getPickupTemplate, xmlelement, mode);
     70        XMLPortParam(HoverOrigin, "pickuprepresentationtemplate", setPickupRepresentationTemplate, getPickupRepresentationTemplate, xmlelement, mode);
     71        XMLPortParam(HoverOrigin, "pickuptemplatespeed", setPickupTemplateSpeed, getPickupTemplateSpeed, xmlelement, mode);
     72        XMLPortParam(HoverOrigin, "pickuprepresentationtemplatespeed", setPickupRepresentationTemplateSpeed, getPickupRepresentationTemplateSpeed, xmlelement, mode);
     73        XMLPortParam(HoverOrigin, "obstacletemplate", setObstacleTemplate, getObstacleTemplate, xmlelement, mode);
     74        XMLPortParam(HoverOrigin, "pickuptemplateshrink", setPickupTemplateShrink, getPickupTemplateShrink, xmlelement, mode);
     75        XMLPortParam(HoverOrigin, "pickuprepresentationtemplateshrink", setPickupRepresentationTemplateShrink, getPickupRepresentationTemplateShrink, xmlelement, mode);
     76        XMLPortParam(HoverOrigin, "groundtemplate", setGroundTemplate, getGroundTemplate, xmlelement, mode);
    5677    }
     78
    5779
    5880    void HoverOrigin::checkGametype()
  • code/trunk/src/modules/hover/HoverOrigin.h

    r11099 r11493  
    2323 *      Manuel Meier
    2424 *   Co-authors:
    25  *      ...
     25 *      Tomer Gidron
    2626 *
    2727 */
     
    6666                { return this->cellHeight_; }
    6767
     68            inline void setWallThickness(int wallThickness)
     69                { this->wallThickness_ = wallThickness; }
     70            inline int getWallThickness() const
     71                { return this->wallThickness_; }
     72
     73            //pickup template set and get for destroy hover pickup
     74
     75            inline void setPickupTemplate(std::string pickupTemplate)
     76                { this->pickupTemplate_ = pickupTemplate; }
     77            inline std::string getPickupTemplate() const
     78                { return this->pickupTemplate_; }
     79
     80            inline void setPickupRepresentationTemplate(std::string pickupRepresenationaTemplate)
     81                { this->pickupRepresentationTemplate_ = pickupRepresenationaTemplate; }
     82            inline std::string getPickupRepresentationTemplate() const
     83                { return this->pickupRepresentationTemplate_; }
     84
     85            //pickup template get and set for damage hover pickup
     86
     87            inline void setPickupTemplateSpeed(std::string pickupTemplateSpeed)
     88                { this->pickupTemplateSpeed_ = pickupTemplateSpeed; }
     89            inline std::string getPickupTemplateSpeed() const
     90                { return this->pickupTemplateSpeed_; }
     91
     92            inline void setPickupRepresentationTemplateSpeed(std::string pickupRepresenationaTemplateSpeed)
     93                { this->pickupRepresentationTemplateSpeed_ = pickupRepresenationaTemplateSpeed; }
     94            inline std::string getPickupRepresentationTemplateSpeed() const
     95                { return this->pickupRepresentationTemplateSpeed_; }
     96
     97
     98            //pickup template get and set for shrink hover pickup
     99
     100            inline void setPickupTemplateShrink(std::string pickupTemplateShrink)
     101                { this->pickupTemplateShrink_ = pickupTemplateShrink; }
     102            inline std::string getPickupTemplateShrink() const
     103                { return this->pickupTemplateShrink_; }
     104
     105            inline void setPickupRepresentationTemplateShrink(std::string pickupRepresenationaTemplateShrink)
     106                { this->pickupRepresentationTemplateShrink_ = pickupRepresenationaTemplateShrink; }
     107            inline std::string getPickupRepresentationTemplateShrink() const
     108                { return this->pickupRepresentationTemplateShrink_; }
     109
     110            //get and set for obstacle template
     111
     112            inline void setObstacleTemplate(std::string obstacleTemplate)
     113                { this->obstacleTemplate_ = obstacleTemplate; }
     114            inline std::string getObstacleTemplate() const
     115                { return this->obstacleTemplate_; }       
     116
     117            //get and set for ground template
     118
     119            inline void setGroundTemplate(std::string groundTemplate)
     120                { this->groundTemplate_ = groundTemplate; }
     121            inline std::string getGroundTemplate() const
     122                { return this->groundTemplate_; } 
     123
    68124        private:
    69125            void checkGametype();
     126
    70127       
    71128            int numCells_;
    72129            int cellSize_;
    73130            int cellHeight_;
     131            int wallThickness_;
     132
     133            // Tempaltes for the destroy hover pickup
     134            std::string pickupTemplate_;
     135            std::string pickupRepresentationTemplate_;
     136
     137            // Tempaltes for the damage hover pickup
     138            std::string pickupTemplateSpeed_;
     139            std::string pickupRepresentationTemplateSpeed_;
     140
     141            // Tempaltes for the shrink hover pickup
     142            std::string pickupTemplateShrink_;
     143            std::string pickupRepresentationTemplateShrink_;
     144
     145            //Template for crate obstacle
     146            std::string obstacleTemplate_;
     147
     148            //Template for ground cell
     149            std::string groundTemplate_;
    74150    };
    75151}
  • code/trunk/src/modules/hover/HoverShip.cc

    r11041 r11493  
    3333#include "core/CoreIncludes.h"
    3434#include "core/XMLPort.h"
     35#include "Hover.h"
     36//#include "NewHumanController.h"
    3537
    3638#include <BulletCollision/NarrowPhaseCollision/btManifoldPoint.h>
     
    112114        if (bBoost && this->isFloor_)
    113115        {
     116
    114117            this->setVelocity(
    115118                this->getVelocity().x,
     
    120123        }
    121124    }
     125
     126    Hover* HoverShip::getGame()
     127    {
     128        if (game == nullptr)
     129        {
     130            for (Hover* hover : ObjectList<Hover>())
     131                game = hover;
     132        }
     133        return game;
     134    }
     135
     136    void HoverShip::death()
     137    {
     138        getGame()->costLife();
     139        SpaceShip::death();
     140    }
    122141}
  • code/trunk/src/modules/hover/HoverShip.h

    r11071 r11493  
    3434
    3535#include "HoverPrereqs.h"
     36#include "Hover.h"
    3637
    3738#include "worldentities/pawns/SpaceShip.h"
     
    6970            virtual void boost(bool bBoost) override;
    7071
     72        protected:
     73            virtual void death() override;
     74
    7175        private:
     76            Hover* getGame();
     77            WeakPtr<Hover> game;
    7278            float jumpBoost_;
    7379            bool isFloor_;
Note: See TracChangeset for help on using the changeset viewer.