Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 6, 2013, 3:09:30 PM (11 years ago)
Author:
zifloria
Message:

best game eva

Location:
code/branches/invaders/src/modules/invader
Files:
4 added
11 edited

Legend:

Unmodified
Added
Removed
  • code/branches/invaders/src/modules/invader/CMakeLists.txt

    r9828 r9874  
    55  InvaderShip.cc
    66  InvaderEnemy.cc
     7  InvaderEnemyShooter.cc
    78  InvaderWeapon.cc
     9  InvaderWeaponEnemy.cc
    810  InvaderHUDinfo.cc
    911END_BUILD_UNIT
  • code/branches/invaders/src/modules/invader/Invader.cc

    r9868 r9874  
    4848#include "InvaderShip.h"
    4949#include "InvaderEnemy.h"
     50#include "InvaderEnemyShooter.h"
    5051
    5152#include "core/command/ConsoleCommand.h"
     53#include "worldentities/BigExplosion.h"
    5254
    5355namespace orxonox
     
    7072        level = 1;
    7173        point = 0;
     74        bShowLevel = false;
    7275        multiplier = 1;
    7376        b_combo = false;
    74         // spawn enemy every 2 seconds
    75         enemySpawnTimer.setTimer(2.0f, true, createExecutor(createFunctor(&Invader::spawnEnemy, this)));
    76         comboTimer.setTimer(2.5f, true, createExecutor(createFunctor(&Invader::comboControll, this)));
     77        // spawn enemy every 3.5 seconds
     78        enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&Invader::spawnEnemy, this)));
     79        comboTimer.setTimer(3.0f, true, createExecutor(createFunctor(&Invader::comboControll, this)));
    7780    }
    7881
    79     void Invader::spawnEnemy()
     82    void Invader::levelUp()
     83    {
     84        level++;
     85        if (getPlayer() != NULL)
     86        {   
     87            for (int i = 0; i < 7; i++)
     88            {
     89                WeakPtr<BigExplosion> chunk = new BigExplosion(this->center_->getContext());
     90                chunk->setPosition(Vector3(600, 0, 100 * i - 300));
     91                chunk->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
     92                chunk->setScale(20);
     93            }
     94        }
     95        addPoints(multiplier * 42);
     96        multiplier *= 2;
     97        toggleShowLevel();
     98        showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&Invader::toggleShowLevel, this)));
     99    }
     100
     101    WeakPtr<InvaderShip> Invader::getPlayer()
    80102    {
    81103        if (player == NULL)
     
    84106                player = *it;
    85107        }
    86         if (player == NULL)
     108        return player;
     109    }
     110
     111    void Invader::spawnEnemy()
     112    {
     113        if (getPlayer() == NULL)
    87114            return;
    88 
    89115        srand(player->getPosition().x + player->getPosition().y);
    90         for (int i = 0; i < level * 2; i++)
     116        for (int i = 0; i < (3*log(level) + 1); i++)
    91117        {
    92             WeakPtr<InvaderEnemy> newPawn = new InvaderEnemy(this->center_->getContext());
    93             newPawn->addTemplate("enemyinvader");
     118            WeakPtr<InvaderEnemy> newPawn;
     119            if (rand() % 42/(1 + level*level) == 0)
     120            {
     121                newPawn = new InvaderEnemyShooter(this->center_->getContext());
     122                newPawn->addTemplate("enemyinvadershooter");
     123            }
     124            else
     125            {
     126                newPawn = new InvaderEnemy(this->center_->getContext());
     127                newPawn->addTemplate("enemyinvader");
     128            }
    94129            newPawn->setPlayer(player);
    95130            newPawn->level = level;
     
    133168        Deathmatch::start();
    134169    }
    135 
     170    void Invader::addPoints(int numPoints)
     171    {
     172        if (!bEndGame)
     173        {
     174            point += numPoints * multiplier;
     175            b_combo = true;
     176        }
     177    }
    136178
    137179    void Invader::end()
  • code/branches/invaders/src/modules/invader/Invader.h

    r9868 r9874  
    6666
    6767            void costLife();
    68             void levelUp(){level++;}
    69             void addPoints(int numPoints){point += numPoints * multiplier; b_combo = true;}
     68            void levelUp();
     69            void addPoints(int numPoints);
    7070            // checks if multiplier should be reset.
    7171            void comboControll();
     
    7474            int multiplier;
    7575            bool bEndGame;
     76            bool bShowLevel;
    7677        private:
     78            void toggleShowLevel(){bShowLevel = !bShowLevel;}
     79            WeakPtr<InvaderShip> getPlayer();
    7780            WeakPtr<InvaderCenterPoint> center_;
    7881            WeakPtr<InvaderShip> player;
     
    8083            Timer enemySpawnTimer;
    8184            Timer comboTimer;
     85            Timer showLevelTimer;
    8286            //Context* context;
    8387            int level;
  • code/branches/invaders/src/modules/invader/InvaderEnemy.cc

    r9868 r9874  
    3434#include "invader/InvaderPrereqs.h"
    3535#include "InvaderEnemy.h"
    36 // #include "worldentities/pawns/SpaceShip.h"
     36#include "InvaderShip.h"
    3737
    3838namespace orxonox
     
    6464    inline bool InvaderEnemy::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
    6565    {
    66         if(orxonox_cast<Pawn*>(otherObject))
     66        if(orxonox_cast<InvaderShip*>(otherObject))
    6767            removeHealth(2000);
    6868        return false;
     
    8181    void InvaderEnemy::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
    8282    {
    83         if (getGame())
     83        Pawn::damage(damage, healthdamage, shielddamage, originator);
     84        if (getGame() && orxonox_cast<InvaderShip*>(originator) != NULL && getHealth() <= 0)
    8485            getGame()->addPoints(42);
    85         Pawn::damage(damage, healthdamage, shielddamage, originator);
    8686    }
    8787}
  • code/branches/invaders/src/modules/invader/InvaderEnemy.h

    r9868 r9874  
    5252
    5353            int level;
    54         private:
     54        protected:
    5555            WeakPtr<Invader> getGame();
    5656            WeakPtr<Invader> game;
  • code/branches/invaders/src/modules/invader/InvaderHUDinfo.cc

    r9868 r9874  
    7878                    this->InvaderGame->bEndGame = true;
    7979                }
     80                else if (this->InvaderGame->bShowLevel)
     81                {
     82                    setTextSize(0.1);
     83                    setPosition(Vector2(0.3, 0.55));
     84                    std::stringstream sstm;
     85                    sstm << "Level " << Level;
     86                    this->setCaption(sstm.str()); // + level
     87                }
    8088                else
    8189                {
  • code/branches/invaders/src/modules/invader/InvaderPrereqs.h

    r9868 r9874  
    7272    class InvaderShip;
    7373    class InvaderEnemy;
     74    class InvaderEnemyShooter;
    7475    class InvaderWeapon;
     76    class InvaderWeaponEnemy;
    7577    class InvaderHUDinfo;
    7678}
  • code/branches/invaders/src/modules/invader/InvaderShip.cc

    r9868 r9874  
    138138        // orxout() << "touch!!! " << endl; //<< otherObject << " at " << contactPoint;
    139139        WeakPtr<InvaderEnemy> enemy = orxonox_cast<InvaderEnemy*>(otherObject);
     140        WeakPtr<Projectile> shot = orxonox_cast<Projectile*>(otherObject);
    140141        // ensure that this gets only called once per enemy.
    141142        if (enemy != NULL && lastEnemy != enemy)
     
    146147            if (getGame())
    147148            {
    148                 getGame()->multiplier = 1;
    149                 if (getHealth() <= 0)
    150                     getGame()->costLife();                   
     149                getGame()->multiplier = 1;                   
    151150            }
    152             return false;
     151        }
     152        // was shot, decrease multiplier
     153        else if (shot != NULL  && lastShot != shot)
     154        {
     155            if (getGame() && orxonox_cast<InvaderEnemy*>(shot->getShooter()) != NULL)
     156            {
     157                if (getGame()->multiplier > 1)
     158                {
     159                    lastShot = shot;
     160                    getGame()->multiplier -= 1;     
     161                }
     162            }
    153163        }
    154164        return false;
     
    165175        return game;
    166176    }
     177
     178    void InvaderShip::death()
     179    {
     180        getGame()->costLife();
     181        SpaceShip::death();
     182    }
    167183}
  • code/branches/invaders/src/modules/invader/InvaderShip.h

    r9868 r9874  
    3939#include "worldentities/pawns/SpaceShip.h"
    4040#include "graphics/Camera.h"
     41#include "weapons/projectiles/Projectile.h"
    4142
    4243namespace orxonox
     
    6566
    6667            virtual inline bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
     68
     69        protected:
     70            virtual void death();
    6771        private:
    6872            WeakPtr<Invader> getGame();
     
    7983
    8084            WeakPtr<InvaderEnemy> lastEnemy;
     85            WeakPtr<Projectile> lastShot;
    8186
    8287    };
  • code/branches/invaders/src/modules/invader/InvaderWeapon.cc

    r9868 r9874  
    6363        assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
    6464
    65         // Create the projectile.
    66         Projectile* projectile = new Projectile(this->getContext());
    67         Model* model = new Model(projectile->getContext());
     65        // Create the projectile.projectile
     66        projectile = new Projectile(this->getContext());
     67        WeakPtr<Model> model = new Model(projectile->getContext());
    6868        model->setMeshSource(mesh_);
    6969        model->setCastShadows(false);
  • code/branches/invaders/src/modules/invader/InvaderWeapon.h

    r9868 r9874  
    4949        protected:
    5050            virtual void shot();
     51            WeakPtr<Projectile> projectile;
    5152    };
    5253}
Note: See TracChangeset for help on using the changeset viewer.