Missiles independants

This commit is contained in:
flo 2017-04-30 18:37:55 +02:00
parent d2707857d4
commit 8e37e5af8f
3 changed files with 23 additions and 25 deletions

View File

@ -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;

View File

@ -1,7 +1,5 @@
#include "maths.h"
//get the value of sin/cos(dir * pi_4)
float fcos(unsigned char x)
{
char n = 1;

View File

@ -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;