Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

best game eva

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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()
Note: See TracChangeset for help on using the changeset viewer.