From abe106ec76726f4e9739143c4027ec4fd0595049 Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Mon, 31 Oct 2022 04:36:21 +0200 Subject: [PATCH] started on the enemy logic --- src/gamescr.c | 23 +++++++++++++++++++++++ src/voxscape.c | 6 ++++++ src/voxscape.h | 2 ++ 3 files changed, 31 insertions(+) diff --git a/src/gamescr.c b/src/gamescr.c index b7e35d2..d53943e 100644 --- a/src/gamescr.c +++ b/src/gamescr.c @@ -22,6 +22,8 @@ #define E_RATE 250 #define SHOT_TIME 50 +#define ENEMY_VIS_RANGE (2 * FAR / 3) + static int gamescr_start(void); static void gamescr_stop(void); static void gamescr_frame(void); @@ -348,6 +350,27 @@ static int update(void) vox_view(pos[0], pos[1], -40, angle); } + /* enemy logic */ + enemy = enemies; + for(i=0; ihp <= 0 || timer_msec - enemy->last_shot < E_RATE) { + enemy++; + continue; + } + + dx = enemy->vobj.x - pos[0]; + dy = enemy->vobj.y - pos[1]; + if(abs(dx >> 16) < ENEMY_VIS_RANGE && abs(dy >> 16) < ENEMY_VIS_RANGE) { + if(vox_check_vis(enemy->vobj.x, enemy->vobj.y, pos[0], pos[1])) { + enemy->last_shot = timer_msec; + /* TODO shoot */ + } + } + enemy++; + } + snum = 0; /* turrets number */ spr_oam(oam, dynspr_base + snum++, numspr[num_kills][0], 200, 144, SPR_VRECT | SPR_256COL); diff --git a/src/voxscape.c b/src/voxscape.c index 5cd9e0d..3ccf8e2 100644 --- a/src/voxscape.c +++ b/src/voxscape.c @@ -289,3 +289,9 @@ void vox_objects(struct vox_object *ptr, int count, int stride) obj = (struct vox_object*)((char*)obj + stride); } } + +int vox_check_vis(int32_t x0, int32_t y0, int32_t x1, int32_t y1) +{ + /* TODO */ + return 0; +} diff --git a/src/voxscape.h b/src/voxscape.h index 314147c..3f07cb8 100644 --- a/src/voxscape.h +++ b/src/voxscape.h @@ -32,4 +32,6 @@ void vox_sky_grad(uint8_t chor, uint8_t ctop); void vox_objects(struct vox_object *ptr, int count, int stride); +int vox_check_vis(int32_t x0, int32_t y0, int32_t x1, int32_t y1); + #endif /* VOXSCAPE_H_ */ -- 1.7.10.4