breakout enemy update
This commit is contained in:
parent
7d0f4a233c
commit
ad71177251
2 changed files with 26 additions and 18 deletions
|
|
@ -1,3 +1,6 @@
|
||||||
|
|
||||||
|
#include "enemytypes.h"
|
||||||
|
|
||||||
#define ENEMY_MIN_DIST FIX32(64)
|
#define ENEMY_MIN_DIST FIX32(64)
|
||||||
|
|
||||||
static bool isValidEnemyPosition(fix32 x, fix32 y) {
|
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.x += enemies[i].vel.x;
|
||||||
enemies[i].pos.y += enemies[i].vel.y;
|
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 sx = getScreenX(enemies[i].pos.x, player.camera);
|
||||||
s16 sy = fix32ToInt(enemies[i].pos.y);
|
s16 sy = fix32ToInt(enemies[i].pos.y);
|
||||||
|
|
||||||
fix32 dx = getWrappedDelta(enemies[i].pos.x, player.pos.x);
|
fix32 dx = getWrappedDelta(enemies[i].pos.x, player.pos.x);
|
||||||
bool onScreen = (dx >= FIX32(-256) && dx <= FIX32(256));
|
bool onScreen = (dx >= FIX32(-256) && dx <= FIX32(256));
|
||||||
SPR_setVisibility(enemies[i].image, onScreen ? VISIBLE : HIDDEN);
|
SPR_setVisibility(enemies[i].image, onScreen ? VISIBLE : HIDDEN);
|
||||||
|
|
||||||
SPR_setPosition(enemies[i].image, sx - enemies[i].off, sy - enemies[i].off);
|
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++;
|
enemies[i].clock++;
|
||||||
if(enemies[i].clock >= CLOCK_LIMIT) enemies[i].clock = 0;
|
if(enemies[i].clock >= CLOCK_LIMIT) enemies[i].clock = 0;
|
||||||
enemyCount++;
|
enemyCount++;
|
||||||
|
|
|
||||||
17
src/enemytypes.h
Normal file
17
src/enemytypes.h
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue