breakout enemy update

This commit is contained in:
t. boddy 2026-02-14 23:09:57 -05:00
parent 7d0f4a233c
commit ad71177251
2 changed files with 26 additions and 18 deletions

View file

@ -1,3 +1,6 @@
#include "enemytypes.h"
#define ENEMY_MIN_DIST FIX32(64)
static bool isValidEnemyPosition(fix32 x, fix32 y) {
@ -67,31 +70,19 @@ static void updateEnemy(u8 i){
enemies[i].pos.x += enemies[i].vel.x;
enemies[i].pos.y += enemies[i].vel.y;
switch(enemies[i].type){
case 0:
updateEnemyOne(i);
break;
}
s16 sx = getScreenX(enemies[i].pos.x, player.camera);
s16 sy = fix32ToInt(enemies[i].pos.y);
fix32 dx = getWrappedDelta(enemies[i].pos.x, player.pos.x);
bool onScreen = (dx >= FIX32(-256) && dx <= FIX32(256));
SPR_setVisibility(enemies[i].image, onScreen ? VISIBLE : HIDDEN);
SPR_setPosition(enemies[i].image, sx - enemies[i].off, sy - enemies[i].off);
if(enemies[i].clock % 20 == enemies[i].ints[0]){
struct bulletSpawner spawner = {
.x = enemies[i].pos.x,
.y = enemies[i].pos.y,
.anim = 6 + (random() % 3),
// .frame = 1,
.speed = FIX32(4),
.angle = random() % 128,
};
if(random() % 2 < 1) spawner.anim += 3;
for(u8 j = 0; j < 8; j++){
spawnBullet(spawner, EMPTY);
spawner.angle += 128;
}
}
enemies[i].clock++;
if(enemies[i].clock >= CLOCK_LIMIT) enemies[i].clock = 0;
enemyCount++;

17
src/enemytypes.h Normal file
View file

@ -0,0 +1,17 @@
void updateEnemyOne(u8 i){
if(enemies[i].clock % 20 == enemies[i].ints[0]){
struct bulletSpawner spawner = {
.x = enemies[i].pos.x,
.y = enemies[i].pos.y,
.anim = 6 + (random() % 3),
// .frame = 1,
.speed = FIX32(4),
.angle = random() % 128,
};
if(random() % 2 < 1) spawner.anim += 3;
for(u8 j = 0; j < 8; j++){
spawnBullet(spawner, EMPTY);
spawner.angle += 128;
}
}
}