[Maintenance] [th01] Elis: Define constants for the individual entities

Part of P0193, funded by Ember2528.
This commit is contained in:
nmlgc 2022-05-09 15:09:04 +02:00
parent 6beb197ec2
commit d34e5b90fa
1 changed files with 18 additions and 12 deletions

View File

@ -67,6 +67,14 @@ extern union {
// Entities
// --------
enum elis_entity_t {
// "Girl" sprites
ENT_STILL_OR_WAVE = 0,
ENT_ATTACK = 1,
ENT_BAT = 2,
};
enum still_or_wave_cel_t {
C_STILL = 0,
C_WAVE_1 = 2,
@ -75,11 +83,9 @@ enum still_or_wave_cel_t {
C_WAVE_4 = 5,
};
// "Girl" sprites
#define ent_still_or_wave boss_entities[0]
#define ent_attack boss_entities[1]
#define ent_bat boss_entities[2]
#define ent_still_or_wave boss_entities[ENT_STILL_OR_WAVE]
#define ent_attack boss_entities[ENT_ATTACK]
#define ent_bat boss_entities[ENT_BAT]
inline void elis_ent_load(void) {
ent_still_or_wave.load("boss5.bos", 0);
@ -93,9 +99,9 @@ inline void elis_ent_free(void) {
bos_entity_free(2);
}
inline void ent_attack_sync_with_still_or_wave(void) {
ent_attack.pos_cur_set(
ent_still_or_wave.cur_left, ent_still_or_wave.cur_top
inline void ent_sync(elis_entity_t dst, elis_entity_t src) {
boss_entities[dst].pos_cur_set(
boss_entities[src].cur_left, boss_entities[src].cur_top
);
}
// --------
@ -108,11 +114,11 @@ static const main_ptn_slot_t PTN_SLOT_MISSILE = PTN_SLOT_BOSS_2;
// ----
#define bg_func_init(left, top, entity_src) { \
ent_attack_sync_with_still_or_wave(); \
if(entity_src == 1) { \
ent_sync(ENT_ATTACK, ENT_STILL_OR_WAVE); \
if(entity_src == (ENT_STILL_OR_WAVE + 1)) { \
left = ent_still_or_wave.cur_left; \
top = ent_still_or_wave.cur_top; \
} else if(entity_src == 2) { \
} else if(entity_src == (ENT_ATTACK + 1)) { \
left = ent_attack.cur_left; \
top = ent_attack.cur_top; \
} \
@ -211,7 +217,7 @@ void elis_free(void)
bool16 wave_teleport(screen_x_t target_left, screen_y_t target_top)
{
ent_attack_sync_with_still_or_wave();
ent_sync(ENT_ATTACK, ENT_STILL_OR_WAVE);
// Wave sprite
if(boss_phase_frame == 20) {