diff --git a/include/wings.h b/include/wings.h index f738cbd..a1ccdfe 100644 --- a/include/wings.h +++ b/include/wings.h @@ -1,13 +1,15 @@ #ifndef WINGS #define WINGS -#define MAX_MISSILES 2 +#define MAX_MISSILES 4 // missiles management typedef struct Missile { + short x; + short y; unsigned char dir; - short distance; // distance between the plane and the missile +// short distance; // distance between the plane and the missile unsigned char type; } Missile; diff --git a/src/maths.c b/src/maths.c index 65953ee..67115b7 100644 --- a/src/maths.c +++ b/src/maths.c @@ -1,7 +1,5 @@ #include "maths.h" -//get the value of sin/cos(dir * pi_4) - float fcos(unsigned char x) { char n = 1; diff --git a/src/wings.c b/src/wings.c index 0945b34..24122a3 100644 --- a/src/wings.c +++ b/src/wings.c @@ -1,5 +1,5 @@ #include "wings.h" -#include "maths.h" +//#include "maths.h" #include "display.h" // bopti.h => images // tales.h => fonts #include "keyboard.h" @@ -46,7 +46,8 @@ void init() for(j = 0; j < MAX_MISSILES; j++) { - planes[i].missiles[j].distance = 0; + + //planes[i].missiles[j].distance = 0; planes[i].missiles[j].dir = planes[i].dir; planes[i].missiles[j].type = 0; } @@ -134,8 +135,16 @@ void *update_frame() dprint(1, 1, "s:%d l:%d", planes[0].reload, planes[0].life); //dprint(1, 20, "(%d,%d)", get_decal(planes[0].dir, dX), get_decal(planes[0].dir, dY)); + //dprint(1,10, "(x,y)(%d,%d)", planes[1].x + decalx, planes[1].y + decaly); - for(i = 0; i < MAX_PLANES; i++) + for(i = 0; i < MAX_CLOUDS; i++) + { + dimage(clouds[i].x, clouds[i].y, &cloud); + clouds[i].x += get_decal(planes[0].dir, dX); + clouds[i].y += get_decal(planes[0].dir, dY); + } + + for (i = 0; i < MAX_PLANES; i++) { if(i > 0) { @@ -144,27 +153,15 @@ void *update_frame() } dimage_part(planes[i].x, planes[i].y, &plane, 16*planes[i].dir, 0, 16, 16); - } - - //dprint(1,10, "(x,y)(%d,%d)", planes[1].x + decalx, planes[1].y + decaly); - for(i = 0; i < MAX_CLOUDS; i++) - { - dimage(clouds[i].x, clouds[i].y, &cloud); - clouds[i].x += get_decal(planes[0].dir, dX); - clouds[i].y += get_decal(planes[0].dir, dY); - } - - - for (i = 0; i < MAX_PLANES; i++) - { + for(j = 0; j < MAX_MISSILES; j++) { - dimage_part(planes[i].x + 4 + (planes[i].missiles[j].distance + 15) * fcos(planes[i].missiles[j].dir), - planes[i].y + 4 - (planes[i].missiles[j].distance + 15) * fsin(planes[i].missiles[j].dir), - &missiles, 8 * planes[i].missiles[j].dir, 0, 8, 8); + planes[i].missiles[j].x -= get_decal(planes[i].missiles[j].dir, dX); + planes[i].missiles[j].y -= get_decal(planes[i].missiles[j].dir, dY); - planes[i].missiles[j].distance ++; + dimage_part(planes[i].missiles[j].x, planes[i].missiles[j].y ,&missiles, 8 * planes[i].missiles[j].dir, 0, 8, 8); } + } dupdate(); @@ -255,8 +252,9 @@ int game() if(fire == 1) // put the screen on fire ! { + planes[0].missiles[j].x = planes[0].x; + planes[0].missiles[j].y = planes[0].y; planes[0].missiles[j].dir = planes[0].dir; // the missile take the direction of the plane - planes[0].missiles[j].distance = 0; // fire unlimited (nearly) j = j + 1;