diff --git a/CMakeLists.txt b/CMakeLists.txt index a3a09fe..7cc6de3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,11 +13,12 @@ find_package(LibProf 2.4 REQUIRED) set(SOURCES src/main.cpp + src/collections.cpp src/player.cpp src/utilities.cpp src/particles.cpp src/bullet.cpp - src/ennemy.cpp + src/enemy.cpp src/starfieldshader.cpp # ... @@ -36,8 +37,8 @@ set(ASSETS_cg assets-cg/Sprites/Players/mainship1.png assets-cg/Sprites/Players/Satellite_Lvl1.png - assets-cg/Sprites/Ennemies/mainship2.png - assets-cg/Sprites/Ennemies/Ennemy_Blue_Lvl1.png + assets-cg/Sprites/Enemies/mainship2.png + assets-cg/Sprites/Enemies/Enemy_Blue_Lvl1.png # ... diff --git a/assets-cg/Sprites/Ennemies/Ennemy_Blue_Lvl1.png b/assets-cg/Sprites/Enemies/Enemy_Blue_Lvl1.png similarity index 100% rename from assets-cg/Sprites/Ennemies/Ennemy_Blue_Lvl1.png rename to assets-cg/Sprites/Enemies/Enemy_Blue_Lvl1.png diff --git a/assets-cg/Sprites/Ennemies/fxconv-metadata.txt b/assets-cg/Sprites/Enemies/fxconv-metadata.txt similarity index 100% rename from assets-cg/Sprites/Ennemies/fxconv-metadata.txt rename to assets-cg/Sprites/Enemies/fxconv-metadata.txt diff --git a/assets-cg/Sprites/Ennemies/mainship2.png b/assets-cg/Sprites/Enemies/mainship2.png similarity index 100% rename from assets-cg/Sprites/Ennemies/mainship2.png rename to assets-cg/Sprites/Enemies/mainship2.png diff --git a/src/collections.cpp b/src/collections.cpp new file mode 100644 index 0000000..b553366 --- /dev/null +++ b/src/collections.cpp @@ -0,0 +1,98 @@ +#include "collections.h" + +#include +#include + + +extern std::vector MyParticles; +extern std::vector MyPlayerBullets; +extern std::vector MyEnemies; +extern Starfield *MyStarField; +extern Player *MyPlayer; + + + +void Create_Player_Shoot( uint8_t id ) +{ + + if (id==0) + { + Bullet *b = new Bullet( MyPlayer->x, MyPlayer->y-21, id ); + MyPlayerBullets.push_back( b ); + } + else if (id==1) + { + Bullet *b1 = new Bullet( MyPlayer->x-17, MyPlayer->y, id ); + MyPlayerBullets.push_back( b1 ); + + Bullet *b2 = new Bullet( MyPlayer->x+17, MyPlayer->y, id ); + MyPlayerBullets.push_back( b2 ); + } + else if (id==2) + { + Bullet *b1 = new Bullet( MyPlayer->x, MyPlayer->y-21, id ); + MyPlayerBullets.push_back( b1 ); + + Bullet *b2 = new Bullet( MyPlayer->x+17, MyPlayer->y, id ); + MyPlayerBullets.push_back( b2 ); + + Bullet *b3 = new Bullet( MyPlayer->x-17, MyPlayer->y, id ); + MyPlayerBullets.push_back( b3 ); + } +} + +void Create_Ennemies( void ) +{ + Enemy* e1 = new Enemy( 198, 50, 0); + e1->Set_Speed_Vector( 1, -6, 1 ); + MyEnemies.push_back( e1 ); + + Enemy* e2 = new Enemy( 198, 50, 0); + e2->Set_Speed_Vector( 1, 6, 1 ); + MyEnemies.push_back( e2 ); + + Enemy* e3 = new Enemy( 198, 50, 1); + e3->Set_Speed_Vector( 1, -3, 3 ); + MyEnemies.push_back( e3 ); + + Enemy* e4 = new Enemy( 198, 50, 1); + e4->Set_Speed_Vector( 1, 3, 3 ); + MyEnemies.push_back( e4 ); +} + + +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 Clean_Everything( void ) +{ + for(unsigned int i=0; i extern bopti_image_t img_mainship2; -extern bopti_image_t img_Ennemy_Blue_Lvl1; +extern bopti_image_t img_Enemy_Blue_Lvl1; -Ennemy::Ennemy( int16_t _x, int16_t _y, uint8_t _id ) +Enemy::Enemy( int16_t _x, int16_t _y, uint8_t _id ) { x = libnum::num( _x ); y = libnum::num( _y ); @@ -24,8 +24,8 @@ Ennemy::Ennemy( int16_t _x, int16_t _y, uint8_t _id ) } else if (ID==1) { - width = img_Ennemy_Blue_Lvl1.width/2; - height = img_Ennemy_Blue_Lvl1.height/2; + width = img_Enemy_Blue_Lvl1.width/2; + height = img_Enemy_Blue_Lvl1.height/2; speed = 2; } @@ -40,13 +40,13 @@ Ennemy::Ennemy( int16_t _x, int16_t _y, uint8_t _id ) else if (ID==1) life = 200; } -Ennemy::~Ennemy() +Enemy::~Enemy() { } -void Ennemy::Update( float dt ) +void Enemy::Update( float dt ) { libnum::num a = libnum::num( dt / 60000.0f ); x += a * libnum::num( dirx * speed ); @@ -63,14 +63,14 @@ void Ennemy::Update( float dt ) if (life<=0) toberemoved=true; } -void Ennemy::Render( void ) +void Enemy::Render( void ) { if (ID==0) azrp_image_p8_effect(xmin, ymin, &img_mainship2, IMAGE_VFLIP); - if (ID==1) azrp_image_p8_effect(xmin, ymin, &img_Ennemy_Blue_Lvl1, DIMAGE_NONE); + if (ID==1) azrp_image_p8_effect(xmin, ymin, &img_Enemy_Blue_Lvl1, DIMAGE_NONE); } -bool Ennemy::Test_Impact( Bullet *projectile ) +bool Enemy::Test_Impact( Bullet *projectile ) { if (projectile->x >= xmin && projectile->x <= xmax && projectile->y >= ymin && projectile->y <= ymax ) { @@ -81,7 +81,7 @@ bool Ennemy::Test_Impact( Bullet *projectile ) else return false; } -void Ennemy::Set_Speed_Vector( uint8_t _sp, uint8_t _xd, uint8_t _yd) +void Enemy::Set_Speed_Vector( uint8_t _sp, uint8_t _xd, uint8_t _yd) { speed = _sp; dirx = _xd; diff --git a/src/ennemy.h b/src/enemy.h similarity index 88% rename from src/ennemy.h rename to src/enemy.h index b1a862d..3fabb02 100644 --- a/src/ennemy.h +++ b/src/enemy.h @@ -1,5 +1,5 @@ -#ifndef ENNEMY_H -#define ENNEMY_H +#ifndef ENEMY_H +#define ENEMY_H #include #include @@ -11,11 +11,11 @@ #include "bullet.h" -class Ennemy +class Enemy { public: - Ennemy( int16_t _x, int16_t _y, uint8_t _id ); - ~Ennemy(); + Enemy( int16_t _x, int16_t _y, uint8_t _id ); + ~Enemy(); void Update( float dt ); void Render( void ); diff --git a/src/main.cpp b/src/main.cpp index 8f67648..4bb63b8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,22 +22,30 @@ #include +#include "collections.h" + + #include "player.h" #include "utilities.h" #include "particles.h" #include "bullet.h" -#include "ennemy.h" +#include "enemy.h" +#include "MyAzurShaders.h" + #include #include -#include "MyAzurShaders.h" + bool screenshot = false; bool record = false; bool textoutput = false; bool exitToOS = false; +uint8_t texttodraw=1; + + #define SCALE_PIXEL 1 #define X_RESOL (DWIDTH / SCALE_PIXEL) @@ -46,21 +54,16 @@ bool exitToOS = false; #define BIAS 1 #define NOBIAS (1-BIAS) + std::vector MyParticles; std::vector MyPlayerBullets; -std::vector MyEnnemies; - +std::vector MyEnemies; Starfield *MyStarField; -uint8_t texttodraw=1; - -extern bopti_image_t img_mainship1; - Player *MyPlayer; - static void hook_prefrag(int id, void *fragment, int size) { if(!screenshot && !record) @@ -93,97 +96,6 @@ static void hook_prefrag(int id, void *fragment, int size) } } -/*void Create_Starfield( void ) -{ - MyStarField = new Starfield(); -}*/ - - -void Create_Player_Shoot( uint8_t id ) -{ - - if (id==0) - { - Bullet *b = new Bullet( MyPlayer->x, MyPlayer->y-21, id ); - MyPlayerBullets.push_back( b ); - } - else if (id==1) - { - Bullet *b1 = new Bullet( MyPlayer->x-17, MyPlayer->y, id ); - MyPlayerBullets.push_back( b1 ); - - Bullet *b2 = new Bullet( MyPlayer->x+17, MyPlayer->y, id ); - MyPlayerBullets.push_back( b2 ); - } - else if (id==2) - { - Bullet *b1 = new Bullet( MyPlayer->x, MyPlayer->y-21, id ); - MyPlayerBullets.push_back( b1 ); - - Bullet *b2 = new Bullet( MyPlayer->x+17, MyPlayer->y, id ); - MyPlayerBullets.push_back( b2 ); - - Bullet *b3 = new Bullet( MyPlayer->x-17, MyPlayer->y, id ); - MyPlayerBullets.push_back( b3 ); - } -} - -void Create_Ennemies( void ) -{ - Ennemy* e1 = new Ennemy( 198, 50, 0); - e1->Set_Speed_Vector( 1, -6, 1 ); - MyEnnemies.push_back( e1 ); - - Ennemy* e2 = new Ennemy( 198, 50, 0); - e2->Set_Speed_Vector( 1, 6, 1 ); - MyEnnemies.push_back( e2 ); - - Ennemy* e3 = new Ennemy( 198, 50, 1); - e3->Set_Speed_Vector( 1, -3, 3 ); - MyEnnemies.push_back( e3 ); - - Ennemy* e4 = new Ennemy( 198, 50, 1); - e4->Set_Speed_Vector( 1, 3, 3 ); - MyEnnemies.push_back( e4 ); -} - - -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 Clean_Everything( void ) -{ - for(unsigned int i=0; iUpdate( dt ); - for(auto& e : MyEnnemies) + for(auto& e : MyEnemies) e->Update( dt ); - for(unsigned int i=0; itoberemoved == true) + if (MyEnemies[i]->toberemoved == true) { - Create_Explosion( (int) MyEnnemies[i]->x, (int) MyEnnemies[i]->y ); - delete( MyEnnemies[i] ); - MyEnnemies.erase( MyEnnemies.begin() + i ); + Create_Explosion( (int) MyEnemies[i]->x, (int) MyEnemies[i]->y ); + delete( MyEnemies[i] ); + MyEnemies.erase( MyEnemies.begin() + i ); } } @@ -234,9 +146,9 @@ static void update( float dt ) for(unsigned int i=0; iTest_Impact(MyPlayerBullets[i])==true) + if(MyEnemies[j]->Test_Impact(MyPlayerBullets[i])==true) { //TODO : we can create a list of impacts here, to be rendered later on } @@ -274,17 +186,17 @@ static void get_inputs( void ) if(keydown(KEY_EXIT)) {exitToOS = true; }; -#if(DEBUG_MODE) - if(keydown(KEY_7) && usb_is_open() ) {screenshot = true;}; - if(keydown(KEY_8) && usb_is_open()) {record = true; }; - if(keydown(KEY_9) && usb_is_open()) {record = false; }; - if(keydown(KEY_DEL) && usb_is_open()) {textoutput = true;}; - - if(keydown(KEY_SHIFT) && keydown(KEY_F1)) {texttodraw=0;} - if(keydown(KEY_SHIFT) && keydown(KEY_F2)) {texttodraw=1;} - if(keydown(KEY_SHIFT) && keydown(KEY_F3)) {texttodraw=2;} - if(keydown(KEY_SHIFT) && keydown(KEY_F4)) {texttodraw=3;} -#endif + #if(DEBUG_MODE) + if(keydown(KEY_7) && usb_is_open() ) {screenshot = true;}; + if(keydown(KEY_8) && usb_is_open()) {record = true; }; + if(keydown(KEY_9) && usb_is_open()) {record = false; }; + if(keydown(KEY_DEL) && usb_is_open()) {textoutput = true;}; + + if(keydown(KEY_SHIFT) && keydown(KEY_F1)) {texttodraw=0;} + if(keydown(KEY_SHIFT) && keydown(KEY_F2)) {texttodraw=1;} + if(keydown(KEY_SHIFT) && keydown(KEY_F3)) {texttodraw=2;} + if(keydown(KEY_SHIFT) && keydown(KEY_F4)) {texttodraw=3;} + #endif if(keydown(KEY_LEFT)) @@ -318,8 +230,6 @@ static void get_inputs( void ) static kmalloc_arena_t extended_ram = { 0 }; - - bool AddMoreRAM( void ) { /* allow more RAM */ @@ -368,7 +278,6 @@ bool AddMoreRAM( void ) } } - void FreeMoreRAM( void ) { memset(extended_ram.start, 0, (char *)extended_ram.end - (char *)extended_ram.start); @@ -444,7 +353,7 @@ int main(void) #if(BIAS) if (texttodraw>=1) Azur_draw_text(1,01, "FPS = %.0f", (float) (1000000.0f / elapsedTime) ); if (texttodraw>=1) Azur_draw_text(1,11, "Part.= %d - Bull.= %d", MyParticles.size(), MyPlayerBullets.size() ); - if (texttodraw>=1 && !MyEnnemies.empty()) Azur_draw_text(1,21, "Ennmy Life= %d", MyEnnemies[0]->life ); + if (texttodraw>=1 && !MyEnemies.empty()) Azur_draw_text(1,21, "Ennmy Life= %d", MyEnemies[0]->life ); if (texttodraw>=2) Azur_draw_text(1,31, "Update = %.0f mc secs", (float) time_update ); if (texttodraw>=2) Azur_draw_text(1,41, "Render = %.0f mc secs", (float) time_render ); if (texttodraw>=2) Azur_draw_text(1,51, ">Total = %.3f ml secs", (float) elapsedTime / 1000.0f ); @@ -465,7 +374,7 @@ int main(void) for(auto& b : MyPlayerBullets) b->Render(); - for(auto& e : MyEnnemies) + for(auto& e : MyEnemies) e->Render(); for(auto& p : MyParticles) diff --git a/src/player.cpp b/src/player.cpp index 922a007..e990b1c 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -1,6 +1,6 @@ #include "player.h" #include "bullet.h" -#include "ennemy.h" +#include "enemy.h" #include #include #include @@ -102,7 +102,7 @@ bool Player::Test_Impact( Bullet *projectile ) else return false; } -bool Player::Test_Impact( Ennemy *adverseship ) +bool Player::Test_Impact( Enemy *adverseship ) { if (adverseship->xmax >= xmin && adverseship->xmin <= xmax && adverseship->ymax >= ymin && adverseship->ymin <= ymax ) { diff --git a/src/player.h b/src/player.h index 8a0d287..b04b001 100644 --- a/src/player.h +++ b/src/player.h @@ -9,7 +9,7 @@ #include #include "bullet.h" -#include "ennemy.h" +#include "enemy.h" class Player @@ -22,7 +22,7 @@ class Player void Render( void ); bool Test_Impact( Bullet *projectile ); - bool Test_Impact( Ennemy *adverseship ); + bool Test_Impact( Enemy *adverseship ); void Set_Speed( uint8_t _sp ); bool Shoot_OK( uint32_t tempshoot, uint8_t shootID );