Missiles independants
This commit is contained in:
parent
d2707857d4
commit
8e37e5af8f
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#include "maths.h"
|
||||
|
||||
//get the value of sin/cos(dir * pi_4)
|
||||
|
||||
float fcos(unsigned char x)
|
||||
{
|
||||
char n = 1;
|
||||
|
|
40
src/wings.c
40
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue