Shmup/src/shmup/collections.cpp

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();
}