From 34fa959d5e9da7325067f2599ce56e4f130eaad2 Mon Sep 17 00:00:00 2001 From: Slyvtt Date: Sat, 21 Jan 2023 22:45:10 +0100 Subject: [PATCH] new class Player with satellites + different ennemies + lower speed shoot --- CMakeLists.txt | 19 ++- .../Sprites/{ => Bullets}/bullet_blue.png | Bin .../Sprites/{ => Bullets}/bullet_normal.png | Bin assets-cg/Sprites/Bullets/fxconv-metadata.txt | 5 + .../Sprites/Ennemies/Ennemy_Blue_Lvl1.png | Bin 0 -> 1405 bytes .../Sprites/Ennemies/fxconv-metadata.txt | 5 + .../Sprites/{ => Ennemies}/mainship2.png | Bin .../Sprites/{ => Explosions}/emp_circ.png | Bin .../Sprites/{ => Explosions}/fill_circ.png | Bin .../Sprites/{ => Explosions}/firstboom.png | Bin .../Sprites/Explosions/fxconv-metadata.txt | 5 + assets-cg/Sprites/Players/Satellite_Lvl1.png | Bin 0 -> 1157 bytes assets-cg/Sprites/Players/fxconv-metadata.txt | 5 + assets-cg/Sprites/{ => Players}/mainship1.png | Bin .../empty_circle_explode_1_to_7pix.ase | Bin 1113 -> 0 bytes .../filled_circle_explode_1_to_7pix.ase | Bin 1090 -> 0 bytes src/ennemy.cpp | 12 +- src/main.cpp | 89 ++++++---- src/player.cpp | 155 ++++++++++++++++++ src/player.h | 55 +++++++ 20 files changed, 313 insertions(+), 37 deletions(-) rename assets-cg/Sprites/{ => Bullets}/bullet_blue.png (100%) rename assets-cg/Sprites/{ => Bullets}/bullet_normal.png (100%) create mode 100644 assets-cg/Sprites/Bullets/fxconv-metadata.txt create mode 100644 assets-cg/Sprites/Ennemies/Ennemy_Blue_Lvl1.png create mode 100644 assets-cg/Sprites/Ennemies/fxconv-metadata.txt rename assets-cg/Sprites/{ => Ennemies}/mainship2.png (100%) rename assets-cg/Sprites/{ => Explosions}/emp_circ.png (100%) rename assets-cg/Sprites/{ => Explosions}/fill_circ.png (100%) rename assets-cg/Sprites/{ => Explosions}/firstboom.png (100%) create mode 100644 assets-cg/Sprites/Explosions/fxconv-metadata.txt create mode 100644 assets-cg/Sprites/Players/Satellite_Lvl1.png create mode 100644 assets-cg/Sprites/Players/fxconv-metadata.txt rename assets-cg/Sprites/{ => Players}/mainship1.png (100%) delete mode 100644 assets-cg/Sprites/empty_circle_explode_1_to_7pix.ase delete mode 100644 assets-cg/Sprites/filled_circle_explode_1_to_7pix.ase create mode 100644 src/player.cpp create mode 100644 src/player.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6355093..c336120 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ find_package(LibProf 2.4 REQUIRED) set(SOURCES src/main.cpp + src/player.cpp src/utilities.cpp src/particles.cpp src/bullet.cpp @@ -24,16 +25,18 @@ set(SOURCES set(ASSETS_cg assets-cg/font.png - assets-cg/Sprites/firstboom.png - assets-cg/Sprites/emp_circ.png - assets-cg/Sprites/fill_circ.png + assets-cg/Sprites/Explosions/firstboom.png + assets-cg/Sprites/Explosions/emp_circ.png + assets-cg/Sprites/Explosions/fill_circ.png - assets-cg/Sprites/bullet_normal.png - assets-cg/Sprites/bullet_blue.png + assets-cg/Sprites/Bullets/bullet_normal.png + assets-cg/Sprites/Bullets/bullet_blue.png - assets-cg/Sprites/mainship1.png - assets-cg/Sprites/mainship2.png - + 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 # ... diff --git a/assets-cg/Sprites/bullet_blue.png b/assets-cg/Sprites/Bullets/bullet_blue.png similarity index 100% rename from assets-cg/Sprites/bullet_blue.png rename to assets-cg/Sprites/Bullets/bullet_blue.png diff --git a/assets-cg/Sprites/bullet_normal.png b/assets-cg/Sprites/Bullets/bullet_normal.png similarity index 100% rename from assets-cg/Sprites/bullet_normal.png rename to assets-cg/Sprites/Bullets/bullet_normal.png diff --git a/assets-cg/Sprites/Bullets/fxconv-metadata.txt b/assets-cg/Sprites/Bullets/fxconv-metadata.txt new file mode 100644 index 0000000..99767a5 --- /dev/null +++ b/assets-cg/Sprites/Bullets/fxconv-metadata.txt @@ -0,0 +1,5 @@ +*.png: + type: bopti-image + name_regex: (.*)\.png img_\1 + section: .data + profile: p8_rgb565a diff --git a/assets-cg/Sprites/Ennemies/Ennemy_Blue_Lvl1.png b/assets-cg/Sprites/Ennemies/Ennemy_Blue_Lvl1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b15093697970661864fe58e0a1f58f54dbdb85f GIT binary patch literal 1405 zcmV-@1%mpCP)X1^@s6D=Y3@0004nX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmP!xqvTcsiu5i3Y>h)|s@h>AFB6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~>f)s6A|>9J6k5c1;qgAsyXWxUeSp7SW~$jS4yc-C zq!Mub`5 zkz)ZBsE`~#_#gb9t(l*kaFarDp!3DHKSqGyF3_mi_V=-EH%@@SGjOG~{FOQ|^GSNG zrA3c`-fiIGx~0i`z~v4w_@qmQ^3A z0;2`WUiWx+SNq)l?P<>M2WFabq9Aq#hyVZp24YJ`L;wo_5&#kVf!%@t000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j>A55hN@_=1YYD000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}000A2Nkl!Z1V9dP;u=^G$^Dn;ko6c@jg`d>^DTm2uP%O0<$_-E(A(HO)> zvL5}lU;Y^}zS`4XB;)z**!cjH(0=g9u+HoDe|&KEJI+to9DDPcf9*Pi zj`Q@>3miLhoEgmw*vl`k(y}**4C@SPXKue}Z7p^&P~frAS)f2uPauSe5GIB((M7#j zDkFpmKyy4nr1s7?PS#OOyZ{QksVAT&ZDM?ts8s>6APwhSy9@j*d{^#wrKu-~A%kE` zo2IfKF@E$mN39A?J;C7gkmtO++46M%TItG1`P;Y;L}7N z88(FdRdbl^Znk(IiH~HRFhIL*5&8QULe^|w;6J|=0o#>jql;xIzXgC(E6}c6vWond z+jQxM@>}d~wwOP0m&w!^i&h4Jk0(Eums{K*YE{U6vQDv7=C@Z1M1j3*n%&J7n*IYL zR)t2b(7%%hr-zvAjPcd=?|~&C9r&M{TbKVDto_= znp1x~dZY~il&aOfcc5fGcaqCD9&`D|W9D-w58Ug=8~`x4w>2S5uUdpKz06co?Pb%% zMrVnQ&a#(Hb7k2Guuua~Wp8e82d8N-7K>{cSsl7N(DoIAWRf8_w;llZV|fAGh>i*- z*<=Dkuu0fp0 z<3pf8EH59Es8tDM-f)Ln>18*t6747>H!`fFrmlKFl)nFw-!E?gM)a>OMyWI200000 LNkvXXu0mjfp&*Or literal 0 HcmV?d00001 diff --git a/assets-cg/Sprites/Ennemies/fxconv-metadata.txt b/assets-cg/Sprites/Ennemies/fxconv-metadata.txt new file mode 100644 index 0000000..99767a5 --- /dev/null +++ b/assets-cg/Sprites/Ennemies/fxconv-metadata.txt @@ -0,0 +1,5 @@ +*.png: + type: bopti-image + name_regex: (.*)\.png img_\1 + section: .data + profile: p8_rgb565a diff --git a/assets-cg/Sprites/mainship2.png b/assets-cg/Sprites/Ennemies/mainship2.png similarity index 100% rename from assets-cg/Sprites/mainship2.png rename to assets-cg/Sprites/Ennemies/mainship2.png diff --git a/assets-cg/Sprites/emp_circ.png b/assets-cg/Sprites/Explosions/emp_circ.png similarity index 100% rename from assets-cg/Sprites/emp_circ.png rename to assets-cg/Sprites/Explosions/emp_circ.png diff --git a/assets-cg/Sprites/fill_circ.png b/assets-cg/Sprites/Explosions/fill_circ.png similarity index 100% rename from assets-cg/Sprites/fill_circ.png rename to assets-cg/Sprites/Explosions/fill_circ.png diff --git a/assets-cg/Sprites/firstboom.png b/assets-cg/Sprites/Explosions/firstboom.png similarity index 100% rename from assets-cg/Sprites/firstboom.png rename to assets-cg/Sprites/Explosions/firstboom.png diff --git a/assets-cg/Sprites/Explosions/fxconv-metadata.txt b/assets-cg/Sprites/Explosions/fxconv-metadata.txt new file mode 100644 index 0000000..99767a5 --- /dev/null +++ b/assets-cg/Sprites/Explosions/fxconv-metadata.txt @@ -0,0 +1,5 @@ +*.png: + type: bopti-image + name_regex: (.*)\.png img_\1 + section: .data + profile: p8_rgb565a diff --git a/assets-cg/Sprites/Players/Satellite_Lvl1.png b/assets-cg/Sprites/Players/Satellite_Lvl1.png new file mode 100644 index 0000000000000000000000000000000000000000..eb63de0ea615974d4afea74c190f8d423227f8e5 GIT binary patch literal 1157 zcmV;01bX|4P)EX>4Tx04R}tkv&MmP!xqvQ>7wR2P23$WT;LSL`5963Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgb#YR3krMAq3oT;2@OU5R-E(;FK0v6Im~MBB1G?c@ z$#_gkXI7=qD*_mRh+c#hW}9=eoPckA-BUN!U6g0}_x)KtTGnPjKq8)HrsWWC5KnJ9 zCg*)(krfn;_?&pmq6-o~a$Rlk8|S>o0?!n!RC1nJB$o1RthO;LSUT|(aYWM%$`{fN z);Mo*)=L%EyeEHQIBTpdbDh>O;#kBIWJpj^K@lZ5h|+G5Vk1fCF(3bs=aeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Lb}L_t(I%Y~CsNKV-G&)eK0}_N>K5JD6LUACdk~n=xmfP_0S3i z{(G=pHVyh7|D5lf@Bf|eNF0K{wNcd7oFHV(OHnBz08+gMo7;QLu6~pb*Oxu?4+Mp~ zVB*tNcJ8!r?Pde1@D}pIXRMgTmKu`n&G81dH{0~*1qGTLiTZ!y(X#%jxxn!DLGJS*?fAJE4>cI!L z5`apVQco}-^ZKX4?4xIxF+&0v8J`xfo`!HK^#GVLLo#CqBjeM;T`O$*&7T0C-%Qkc+ZQ;c;nVzsb$9CzUwcPqOmFr?B=Vc%v!cK=D(2pL>7R_^%?+ty2|GE-oYB9Qbe>#PF6&o z^^nv4YtfUX?5>!bGEp^!%bi(PM4llLkjjGOxp9^@$!YsgYUo(^C;+Q7%SY<$qNo%R zsa}J-&qsI|{!T8L=F4V+qH!G+OQ_8%?|jwv^s)x``r3t0S6Pf(WE@^v`!8Z8vZ$KE z>dZ0#!wuUk#w|j|y!6jw^0zh$#~D8W!GO&D$Udc^aTm-o@{tCIvrtT7F1t~7fu;BZ X5~BJHL!8#H00000NkvXXu0mjf`_KmC literal 0 HcmV?d00001 diff --git a/assets-cg/Sprites/Players/fxconv-metadata.txt b/assets-cg/Sprites/Players/fxconv-metadata.txt new file mode 100644 index 0000000..99767a5 --- /dev/null +++ b/assets-cg/Sprites/Players/fxconv-metadata.txt @@ -0,0 +1,5 @@ +*.png: + type: bopti-image + name_regex: (.*)\.png img_\1 + section: .data + profile: p8_rgb565a diff --git a/assets-cg/Sprites/mainship1.png b/assets-cg/Sprites/Players/mainship1.png similarity index 100% rename from assets-cg/Sprites/mainship1.png rename to assets-cg/Sprites/Players/mainship1.png diff --git a/assets-cg/Sprites/empty_circle_explode_1_to_7pix.ase b/assets-cg/Sprites/empty_circle_explode_1_to_7pix.ase deleted file mode 100644 index 5ec57ace146bee587591d41c91c461236d86b8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 zcmcJPZAcSw9LIn2ZnLp`C?pHYoeyatrOqB0nlmHPt&vYzR?uoCIb>>xXi2V!mKH2A z5S@fDC5%P*A|hXe;X-3XMMhacvl3)41TE2Kb$!oHH|~8m_SxNSzwh_+{~xTJCGz#H zqA0vLk`d7vyn_c9JpC_cou~}Vuq&+}(6WJBZdFS=d7=bv2e^MrHdvv}03Bsn;OE+8 zaJ;7ioF4817iV{Yos)&27N$_>sUb2Ig77JKjRt(nXwSsPq1{^3g|~Uno)~R6rv4PYN3f^z~uu9 z6ix?EHJ&}sWhCQ5&Ivcdi4R-;i41BD-HQlsCS`#6orNy~GqRNjlPXRrND(r{5Q8bR z$z)oHVplhuqZC!tOrB&^BaX^R9x^Ii38OX}pF3n@O-*%OrH#=LiDScmDHxj+=srHvSb(y!G$y#peo)$@h_KHD*cQ8mv%B7%O8;>AWZfuI@ zK7P^eE-yo!mO}%_B!PM{FpR=N0#&5?7bxf3h>5fr<2u%F&wMr6 za@df+DQCXWuq|Vn8>wFSw6Ch$RKn21@6~N)NpgvpEIgQ?Y6L|rB@eMkURUY1C|lya zYc!6Sx%Xpj_v}aKMgvoQ_L%viwF-}aIQBtrFH_~O>6eo$yZLgJq~e5Ffsc?1;jcj0 z)}hEhiL#CQ8h?D!HKSTP>luu2I!0_!4fs->TBP&?i|hww9`i>RY^d=Z)9mLH5+p3;&wZc0sROnE&X z&#Zx8RhFtv2|nc-9Sbc;EKqJ*5p z*?=bb@=kZlo}N)L +#include "player.h" #include "utilities.h" #include "particles.h" #include "bullet.h" @@ -54,8 +55,7 @@ uint8_t texttodraw=1; extern bopti_image_t img_mainship1; -uint16_t playerX = 0; -uint16_t playerY = 0; +Player *MyPlayer; @@ -102,15 +102,15 @@ void Create_Player_Shoot( uint8_t id ) if (id==0) { - Bullet *b = new Bullet( playerX, playerY-21, id ); + Bullet *b = new Bullet( MyPlayer->x, MyPlayer->y-21, id ); MyPlayerBullets.push_back( b ); } else if (id==1) { - Bullet *b1 = new Bullet( playerX-17, playerY, id ); + Bullet *b1 = new Bullet( MyPlayer->x-17, MyPlayer->y, id ); MyPlayerBullets.push_back( b1 ); - Bullet *b2 = new Bullet( playerX+17, playerY, id ); + Bullet *b2 = new Bullet( MyPlayer->x+17, MyPlayer->y, id ); MyPlayerBullets.push_back( b2 ); } @@ -126,11 +126,11 @@ void Create_Ennemies( void ) e2->Set_Speed_Vector( 1, 6, 1 ); MyEnnemies.push_back( e2 ); - Ennemy* e3 = new Ennemy( 198, 50, 0); + Ennemy* e3 = new Ennemy( 198, 50, 1); e3->Set_Speed_Vector( 1, -3, 3 ); MyEnnemies.push_back( e3 ); - Ennemy* e4 = new Ennemy( 198, 50, 0); + Ennemy* e4 = new Ennemy( 198, 50, 1); e4->Set_Speed_Vector( 1, 3, 3 ); MyEnnemies.push_back( e4 ); } @@ -147,10 +147,37 @@ void Create_Explosion( uint16_t xexplosion, uint16_t yexplosion ) } +void Clean_Everything( void ) +{ + for(unsigned int i=0; iUpdate( dt ); + for(auto& e : MyEnnemies) e->Update( dt ); @@ -201,15 +228,14 @@ static void update( float dt ) //TODO : we can create a list of impacts here, to be rendered later on } } - } - //MyStarField->Update( dt ); - + } } static void get_inputs( void ) { uint8_t speed = 4; + uint32_t tempshoot = rtc_ticks(); key_event_t ev; while((ev = pollevent()).type != KEYEV_NONE) @@ -218,8 +244,22 @@ static void get_inputs( void ) } //if(keydown(KEY_F3)) {Create_Explosion();} - if(keydown(KEY_F1)) {Create_Player_Shoot(0);} - if(keydown(KEY_F2)) {Create_Player_Shoot(1);} + if(keydown(KEY_F1)) + { + if(tempshoot-MyPlayer->lastshoot1>8) + { + Create_Player_Shoot(0); + MyPlayer->lastshoot1=tempshoot; + } + } + if(keydown(KEY_F2)) + { + if(tempshoot-MyPlayer->lastshoot2>15) + { + Create_Player_Shoot(1); + MyPlayer->lastshoot2=tempshoot; + } + } if(keydown(KEY_EXIT)) {exitToOS = true; }; @@ -237,23 +277,19 @@ static void get_inputs( void ) if(keydown(KEY_LEFT)) { - if(playerX>img_mainship1.width/2+speed) - playerX-=speed; + MyPlayer->Go_Left(); } if(keydown(KEY_RIGHT)) { - if(playerXGo_Right(); } if(keydown(KEY_UP)) { - if(playerY>img_mainship1.height/2+speed) - playerY-=speed; + MyPlayer->Go_Up(); } if(keydown(KEY_DOWN)) { - if(playerYGo_Down(); } @@ -354,8 +390,8 @@ int main(void) Create_Ennemies( ); - playerX = azrp_width/2; - playerY = azrp_height-img_mainship1.height/2; + MyPlayer = new Player( azrp_width/2, azrp_height/2, 0); + usb_interface_t const *interfaces[] = { &usb_ff_bulk, NULL }; usb_open(interfaces, GINT_CALL_NULL); @@ -396,7 +432,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, "Ennrmy Life= %d", MyEnnemies[0]->life ); + if (texttodraw>=1 && !MyEnnemies.empty()) Azur_draw_text(1,21, "Ennmy Life= %d", MyEnnemies[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 ); @@ -423,8 +459,7 @@ int main(void) for(auto& p : MyParticles) p->Render(); - azrp_image_p8(playerX-img_mainship1.width/2, playerY-img_mainship1.height/2, &img_mainship1, DIMAGE_NONE); - + MyPlayer->Render(); azrp_update(); } @@ -455,9 +490,7 @@ int main(void) while (exitToOS==false); - for(auto& p : MyParticles) delete(p); - MyParticles.clear(); - + Clean_Everything(); azrp_starfield_close( ); diff --git a/src/player.cpp b/src/player.cpp new file mode 100644 index 0000000..40445d9 --- /dev/null +++ b/src/player.cpp @@ -0,0 +1,155 @@ +#include "player.h" +#include "bullet.h" +#include "ennemy.h" +#include +#include +#include + + +extern bopti_image_t img_mainship1; +extern bopti_image_t img_Satellite_Lvl1; + +static int16_t cosTable[360], sinTable[360]; +#define PI 3.141592 + +Player::Player( int16_t _x, int16_t _y, uint8_t _id ) +{ + x = _x; + y = _y; + + ID = _id; + + width = img_mainship1.width/2; + height = img_mainship1.height/2; + speed = 2; + + xmin = (int) x - width; + xmax = (int) x + width; + ymin = (int) y - height; + ymax = (int) y + height; + + if (ID==0) life = 1000; + + lastshoot1 = rtc_ticks(); + lastshoot2 = rtc_ticks(); + + satellites = true; + satLevel = 1; + satNumber = 6; + satAngle = 0; + satRadius = 50; + satSpeed = 2; + + for(int u=0; u<360; u++) + { + cosTable[u] = (int16_t) (satRadius*cos( u * PI / 180 )); + sinTable[u] = (int16_t) (satRadius*sin( u * PI / 180 )); + } +} + +Player::~Player() +{ + + +} + +void Player::Update( float dt ) +{ + xmin = (int) x - width; + xmax = (int) x + width; + ymin = (int) y - height; + ymax = (int) y + height; + + if(satellites) + { + satAngle += satSpeed * dt / 25000.0f; + if (satAngle>360.0f) satAngle-=360.0f; + } +} + +void Player::Render( void ) +{ + if (ID==0) azrp_image_p8_effect(xmin, ymin, &img_mainship1, DIMAGE_NONE); + + int w = img_Satellite_Lvl1.width/2; + int h = img_Satellite_Lvl1.height/2; + + if(satellites) + { + int incangle = 360/satNumber; + + for(int u=0; ux >= xmin && projectile->x <= xmax && projectile->y >= ymin && projectile->y <= ymax ) + { + life -= projectile->strength; + projectile->toberemoved = true; + return true; + } + else return false; +} + +bool Player::Test_Impact( Ennemy *adverseship ) +{ + if (adverseship->xmax >= xmin && adverseship->xmin <= xmax && adverseship->ymax >= ymin && adverseship->ymin <= ymax ) + { + life -= 50; + adverseship->life -= 25; + return true; + } + else return false; +} + +void Player::Set_Speed( uint8_t _sp ) +{ + speed = _sp; +} + + +void Player::Go_Left( void ) +{ + if( x > width/2+speed ) + { + x -= speed; + this->Update( 0.0f ); + } +} + +void Player::Go_Right( void ) +{ + if(x < azrp_width-width/2-speed) + { + x += speed; + this->Update( 0.0f ); + } +} + +void Player::Go_Up( void ) +{ + if(y > height/2+speed) + { + y -= speed; + this->Update( 0.0f ); + } +} + +void Player::Go_Down( void ) +{ + if(y < azrp_height -height/2 -speed) + { + y += speed; + this->Update( 0.0f ); + } +} \ No newline at end of file diff --git a/src/player.h b/src/player.h new file mode 100644 index 0000000..ec70952 --- /dev/null +++ b/src/player.h @@ -0,0 +1,55 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include +#include + +#include +#include + +#include +#include "bullet.h" +#include "ennemy.h" + + +class Player +{ + public: + Player( int16_t _x, int16_t _y, uint8_t _id ); + ~Player(); + + void Update( float dt ); + void Render( void ); + + bool Test_Impact( Bullet *projectile ); + bool Test_Impact( Ennemy *adverseship ); + void Set_Speed( uint8_t _sp ); + + void Go_Left( void ); + void Go_Right( void ); + void Go_Up( void ); + void Go_Down( void ); + + uint16_t x, y; // center position of the player + uint8_t width, height; // width and height -for the hitbox + int16_t xmin, xmax, ymin, ymax; // square hitbox (to speed up the bullet impact calculations) + uint8_t ID; + int16_t life; + uint8_t speed; // speed of the player + uint32_t lastshoot1 = 0; + uint32_t lastshoot2 = 0; + + bool satellites; + uint8_t satLevel; + uint8_t satNumber; + uint8_t satSpeed; + + private: + float satAngle; + uint8_t satRadius; +}; + + + + +#endif \ No newline at end of file