183 lines
4.4 KiB
C++
183 lines
4.4 KiB
C++
#include "../config.h"
|
|
|
|
#include "collections.h"
|
|
#include "trajectory.h"
|
|
|
|
#include <vector>
|
|
#include <gint/rtc.h>
|
|
|
|
|
|
extern std::vector<Particle*> MyParticles;
|
|
extern std::vector<Bullet*> MyPlayerBullets;
|
|
extern std::vector<Bullet*> MyEnemiesBullets;
|
|
extern std::vector<Enemy*> MyEnemies;
|
|
extern std::vector<Impact*> MyImpacts;
|
|
extern std::vector<Trajectory*> MyTrajectories;
|
|
extern Player *MyPlayer;
|
|
|
|
|
|
|
|
void Create_Player_Shoot( uint8_t id )
|
|
{
|
|
|
|
if (id==BULLET_NORMAL)
|
|
{
|
|
Bullet *b = new Bullet( (int) MyPlayer->x+21, (int) MyPlayer->y, 6, 0, id );
|
|
MyPlayerBullets.push_back( b );
|
|
}
|
|
else if (id==BULLET_BLUE)
|
|
{
|
|
Bullet *b1 = new Bullet( (int) MyPlayer->x, (int) MyPlayer->y-17, 5, 0, id );
|
|
MyPlayerBullets.push_back( b1 );
|
|
|
|
Bullet *b2 = new Bullet( (int) MyPlayer->x, (int) MyPlayer->y+17, 5, 0, id );
|
|
MyPlayerBullets.push_back( b2 );
|
|
}
|
|
else if (id==BULLET_LASER)
|
|
{
|
|
Bullet *b1 = new Bullet( (int) MyPlayer->x+21, (int) MyPlayer->y, 3, 0, id );
|
|
MyPlayerBullets.push_back( b1 );
|
|
|
|
Bullet *b2 = new Bullet( (int) MyPlayer->x, (int) MyPlayer->y-17, 3, 0, id );
|
|
MyPlayerBullets.push_back( b2 );
|
|
|
|
Bullet *b3 = new Bullet( (int) MyPlayer->x, (int) MyPlayer->y+17, 3, 0, id );
|
|
MyPlayerBullets.push_back( b3 );
|
|
}
|
|
}
|
|
|
|
|
|
void Create_Enemies( void )
|
|
{
|
|
/*
|
|
Enemy* e1 = new Enemy( 348, 112, 0);
|
|
e1->Set_Speed_Vector( 1, 1, -6 );
|
|
MyEnemies.push_back( e1 );
|
|
|
|
Enemy* e2 = new Enemy( 348, 112, 0);
|
|
e2->Set_Speed_Vector( 1, 1, 6 );
|
|
MyEnemies.push_back( e2 );
|
|
|
|
Enemy* e3 = new Enemy( 348, 112, 1);
|
|
e3->Set_Speed_Vector( 1, 3, -3 );
|
|
MyEnemies.push_back( e3 );
|
|
|
|
Enemy* e4 = new Enemy( 348, 112, 1);
|
|
e4->Set_Speed_Vector( 1, 3, 3 );
|
|
MyEnemies.push_back( e4 );
|
|
*/
|
|
|
|
|
|
|
|
Vector2D *A = new Vector2D( 348, 112 );
|
|
Vector2D *B = new Vector2D( 371, 199 );
|
|
Vector2D *C = new Vector2D( 198, 149 );
|
|
Vector2D *D = new Vector2D( 25, 199 );
|
|
Vector2D *E = new Vector2D( 25, 25 );
|
|
Vector2D *F = new Vector2D( 198, 75 );
|
|
Vector2D *G = new Vector2D( 371, 25 );
|
|
|
|
|
|
Trajectory *MyPath= new Trajectory();
|
|
MyPath->AddPoint( A );
|
|
MyPath->AddPoint( B );
|
|
MyPath->AddPoint( C );
|
|
MyPath->AddPoint( D );
|
|
MyPath->AddPoint( E );
|
|
MyPath->AddPoint( F );
|
|
MyPath->AddPoint( G );
|
|
MyTrajectories.push_back( MyPath );
|
|
|
|
Enemy* e5 = new Enemy( 348, 112, 2);
|
|
e5->hasTrajectory = true;
|
|
e5->pathToFollow = MyPath;
|
|
MyPath->AddRegistry();
|
|
e5->Set_Accumulated_Time(0.0f);
|
|
|
|
Enemy* e6 = new Enemy( 348, 112, 2);
|
|
e6->hasTrajectory = true;
|
|
e6->pathToFollow = MyPath;
|
|
MyPath->AddRegistry();
|
|
e6->Set_Accumulated_Time(-1.0f);
|
|
|
|
Enemy* e7 = new Enemy( 348, 112, 2);
|
|
e7->hasTrajectory = true;
|
|
e7->pathToFollow = MyPath;
|
|
MyPath->AddRegistry();
|
|
e7->Set_Accumulated_Time(-2.0f);
|
|
|
|
|
|
MyEnemies.push_back( e5 );
|
|
MyEnemies.push_back( e6 );
|
|
MyEnemies.push_back( e7 );
|
|
}
|
|
|
|
|
|
void Create_Explosion( uint16_t xexplosion, uint16_t yexplosion )
|
|
{
|
|
srand(rtc_ticks());
|
|
|
|
for(int i=0; i<=50; i++)
|
|
{
|
|
Particle *p = new Particle( xexplosion, yexplosion, i );
|
|
MyParticles.push_back( p );
|
|
}
|
|
}
|
|
|
|
|
|
void Create_Impact( uint16_t ximpact, uint16_t yimpact )
|
|
{
|
|
Impact *i = new Impact( ximpact, yimpact );
|
|
MyImpacts.push_back( i );
|
|
}
|
|
|
|
|
|
|
|
void Clean_Everything( void )
|
|
{
|
|
for(unsigned int i=0; i<MyEnemies.size(); i++)
|
|
{
|
|
delete( MyEnemies[i] );
|
|
MyEnemies.erase( MyEnemies.begin() + i );
|
|
}
|
|
MyEnemies.clear();
|
|
|
|
for(unsigned int i=0; i<MyParticles.size(); i++)
|
|
{
|
|
delete( MyParticles[i] );
|
|
MyParticles.erase( MyParticles.begin() + i );
|
|
}
|
|
MyParticles.clear();
|
|
|
|
for(unsigned int i=0; i<MyPlayerBullets.size(); i++)
|
|
{
|
|
delete( MyPlayerBullets[i] );
|
|
MyPlayerBullets.erase( MyPlayerBullets.begin() + i );
|
|
}
|
|
MyPlayerBullets.clear();
|
|
|
|
for(unsigned int i=0; i<MyEnemiesBullets.size(); i++)
|
|
{
|
|
delete( MyEnemiesBullets[i] );
|
|
MyEnemiesBullets.erase( MyEnemiesBullets.begin() + i );
|
|
}
|
|
MyEnemiesBullets.clear();
|
|
|
|
for(unsigned int i=0; i<MyImpacts.size(); i++)
|
|
{
|
|
delete( MyImpacts[i] );
|
|
MyImpacts.erase( MyImpacts.begin() + i );
|
|
}
|
|
MyImpacts.clear();
|
|
|
|
for(unsigned int i=0; i<MyTrajectories.size(); i++)
|
|
{
|
|
delete( MyTrajectories[i] );
|
|
MyTrajectories.erase( MyTrajectories.begin() + i );
|
|
}
|
|
MyTrajectories.clear();
|
|
|
|
}
|
|
|
|
|