work
This commit is contained in:
parent
073f96c9b1
commit
86935184b2
3 changed files with 63 additions and 10 deletions
|
|
@ -9,7 +9,7 @@ static u8 getBossPhase(u8 i, u8 numPhases){
|
||||||
}
|
}
|
||||||
|
|
||||||
static fix16 enemyHoneAngle(u8 i){
|
static fix16 enemyHoneAngle(u8 i){
|
||||||
fix32 dx = getWrappedDelta(player.pos.x, enemies[i].pos.x);
|
fix32 dx = getWrappedDelta(player.pos.x, enemies[i].pos.x);
|
||||||
fix32 dy = player.pos.y - enemies[i].pos.y;
|
fix32 dy = player.pos.y - enemies[i].pos.y;
|
||||||
return getAngle(dx, dy);
|
return getAngle(dx, dy);
|
||||||
}
|
}
|
||||||
|
|
@ -150,7 +150,6 @@ void updateEnemyFour(u8 i){
|
||||||
|
|
||||||
|
|
||||||
// stage 1 boss
|
// stage 1 boss
|
||||||
|
|
||||||
static void bossOnePatternOne(u8 i){
|
static void bossOnePatternOne(u8 i){
|
||||||
if(enemies[i].clock % 60 == 30){
|
if(enemies[i].clock % 60 == 30){
|
||||||
enemies[i].fixes[0] = enemyHoneAngle(i);
|
enemies[i].fixes[0] = enemyHoneAngle(i);
|
||||||
|
|
@ -260,11 +259,66 @@ static void bossOnePatternThree(u8 i){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// stage 2 boss
|
||||||
|
static void bossTwoPatternOne(u8 i){
|
||||||
|
if(enemies[i].clock % 20 == 0){
|
||||||
|
enemies[i].fixes[0] = enemyHoneAngle(i);
|
||||||
|
enemies[i].fixes[1] = FIX16(0);
|
||||||
|
}
|
||||||
|
if(!enemies[i].onScreen) return;
|
||||||
|
|
||||||
|
if(enemies[i].clock % 4 == 0){
|
||||||
|
if(enemies[i].clock % 120 < 60){
|
||||||
|
struct bulletSpawner spawner = {
|
||||||
|
.x = enemies[i].pos.x,
|
||||||
|
.y = enemies[i].pos.y,
|
||||||
|
.anim = 6,
|
||||||
|
.speed = FIX32(5),
|
||||||
|
.angle = enemies[i].fixes[0] - FIX16(10) + FIX16(random() % 20)
|
||||||
|
};
|
||||||
|
spawnBullet(spawner, EMPTY);
|
||||||
|
} else {
|
||||||
|
struct bulletSpawner spawner = {
|
||||||
|
.x = enemies[i].pos.x,
|
||||||
|
.y = enemies[i].pos.y,
|
||||||
|
.anim = 3,
|
||||||
|
.speed = FIX32(6),
|
||||||
|
.angle = enemies[i].fixes[0] + enemies[i].fixes[1]
|
||||||
|
};
|
||||||
|
spawner.ints[0] = 0;
|
||||||
|
void updater(u8 j){
|
||||||
|
if(bullets[j].ints[0] == 0 && bullets[j].clock % 5 == 0){
|
||||||
|
bullets[j].speed -= FIX32(1);
|
||||||
|
if(bullets[j].speed <= 0){
|
||||||
|
bullets[j].speed = 0;
|
||||||
|
bullets[j].ints[0] = 1;
|
||||||
|
}
|
||||||
|
updateBulletVel(j);
|
||||||
|
} else if(bullets[j].ints[0] == 1 && bullets[j].clock % 5 == 0){
|
||||||
|
bullets[j].speed += FIX32(1);
|
||||||
|
if(bullets[j].speed >= FIX32(6)){
|
||||||
|
bullets[j].speed = FIX32(6);
|
||||||
|
bullets[j].ints[0] = 2;
|
||||||
|
}
|
||||||
|
updateBulletVel(j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spawnBullet(spawner, updater);
|
||||||
|
enemies[i].fixes[1] += FIX16(enemies[i].clock % 40 < 20 ? 10 : -10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// using boss one for all testing of patterns
|
||||||
static void updateBossOne(u8 i){
|
static void updateBossOne(u8 i){
|
||||||
u8 phase = getBossPhase(i, 3);
|
// u8 phase = getBossPhase(i, 3);
|
||||||
if(phase == 0) bossOnePatternOne(i);
|
// if(phase == 0) bossOnePatternOne(i);
|
||||||
else if(phase == 1) bossOnePatternTwo(i);
|
// else if(phase == 1) bossOnePatternTwo(i);
|
||||||
else bossOnePatternThree(i);
|
// else bossOnePatternThree(i);
|
||||||
|
bossTwoPatternOne(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ u16 attractClock;
|
||||||
#define ATTRACT_LIMIT 900 // frames of title idle before attract triggers
|
#define ATTRACT_LIMIT 900 // frames of title idle before attract triggers
|
||||||
#define ATTRACT_DURATION 1800 // 30 seconds of demo gameplay
|
#define ATTRACT_DURATION 1800 // 30 seconds of demo gameplay
|
||||||
#define ATTRACT_LEVEL 1 // level index for attract mode (L12: Boss 4, 3 gunners)
|
#define ATTRACT_LEVEL 1 // level index for attract mode (L12: Boss 4, 3 gunners)
|
||||||
#define START_LEVEL 0 // offset added to starting level (0 = normal start)
|
#define START_LEVEL 2 // offset added to starting level (0 = normal start)
|
||||||
// #define START_LEVEL 0 // offset added to starting level (0 = normal start)
|
// #define START_LEVEL 0 // offset added to starting level (0 = normal start)
|
||||||
s16 enemyCount, bulletCount;
|
s16 enemyCount, bulletCount;
|
||||||
u8 level;
|
u8 level;
|
||||||
|
|
@ -201,7 +201,7 @@ static const EnemyTypeDef enemyTypeDefs[ENEMY_TYPE_COUNT] = {
|
||||||
{ ENEMY_TYPE_FIVE, 1, 10, 2, 0, 5 },
|
{ ENEMY_TYPE_FIVE, 1, 10, 2, 0, 5 },
|
||||||
{ ENEMY_TYPE_SIX, 1, 10, 5, 0, 5 },
|
{ ENEMY_TYPE_SIX, 1, 10, 5, 0, 5 },
|
||||||
{ ENEMY_TYPE_SEVEN, 1, 10, 5, 0, 5 },
|
{ ENEMY_TYPE_SEVEN, 1, 10, 5, 0, 5 },
|
||||||
{ ENEMY_TYPE_EIGHT, 1, 10, 5, 0, 0 },
|
{ ENEMY_TYPE_EIGHT, 1, 10, 5, 0, 5 },
|
||||||
{ ENEMY_TYPE_NINE, 1, 10, 5, 0, 5 },
|
{ ENEMY_TYPE_NINE, 1, 10, 5, 0, 5 },
|
||||||
{ ENEMY_TYPE_TEN, 1, 10, 5, 0, 5 },
|
{ ENEMY_TYPE_TEN, 1, 10, 5, 0, 5 },
|
||||||
{ ENEMY_TYPE_ELEVEN, 1, 10, 5, 0, 5 },
|
{ ENEMY_TYPE_ELEVEN, 1, 10, 5, 0, 5 },
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#include <genesis.h>
|
#include <genesis.h>
|
||||||
#include <resources.h>
|
#include <resources.h>
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "background.h"
|
#include "background.h"
|
||||||
#include "bullets.h"
|
#include "bullets.h"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue