plrmodes: streamline bomb sounds, improve preloads
This commit is contained in:
parent
1992a62592
commit
db50f671fa
10 changed files with 58 additions and 21 deletions
|
@ -30,13 +30,7 @@ void player_stage_pre_init(Player *plr) {
|
|||
plr->graze = 0;
|
||||
plr->axis_lr = 0;
|
||||
plr->axis_ud = 0;
|
||||
|
||||
assert(plr->mode != NULL);
|
||||
plrchar_preload(plr->mode->character);
|
||||
|
||||
if(plr->mode->procs.preload) {
|
||||
plr->mode->procs.preload(plr);
|
||||
}
|
||||
plrmode_preload(plr->mode);
|
||||
}
|
||||
|
||||
void player_stage_post_init(Player *plr) {
|
||||
|
|
|
@ -102,3 +102,12 @@ PlayerMode* plrmode_parse(const char *name) {
|
|||
|
||||
return plrmode_find(char_id, shot_id);
|
||||
}
|
||||
|
||||
void plrmode_preload(PlayerMode *mode) {
|
||||
assert(mode != NULL);
|
||||
plrchar_preload(mode->character);
|
||||
|
||||
if(mode->procs.preload) {
|
||||
mode->procs.preload();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ typedef void (*PlayerModeShotProc)(Player *plr);
|
|||
typedef void (*PlayerModeBombProc)(Player *plr);
|
||||
typedef void (*PlayerModePowerProc)(Player *plr, short npow);
|
||||
typedef double (*PlayerModeSpeedModProc)(Player *plr, double speed);
|
||||
typedef void (*PlayerModePreloadProc)(Player *plr);
|
||||
typedef void (*PlayerModePreloadProc)(void);
|
||||
|
||||
typedef struct PlayerMode {
|
||||
const char *name;
|
||||
|
@ -84,3 +84,4 @@ void plrchar_preload(PlayerCharacter *pc);
|
|||
PlayerMode* plrmode_find(CharacterID charid, ShotModeID shotid);
|
||||
int plrmode_repr(char *out, size_t outsize, PlayerMode *mode);
|
||||
PlayerMode* plrmode_parse(const char *name);
|
||||
void plrmode_preload(PlayerMode *mode);
|
||||
|
|
|
@ -124,7 +124,7 @@ static int masterspark(Enemy *e, int t) {
|
|||
}
|
||||
|
||||
static void marisa_laser_bomb(Player *plr) {
|
||||
play_sound("masterspark");
|
||||
play_sound("bomb_marisa_a");
|
||||
create_enemy_p(&plr->slaves, 40.0*I, ENEMY_BOMB, masterspark_draw, masterspark, 280,0,0,0);
|
||||
}
|
||||
|
||||
|
@ -169,16 +169,19 @@ static double marisa_laser_speed_mod(Player *plr, double speed) {
|
|||
return speed;
|
||||
}
|
||||
|
||||
static void marisa_laser_preload(Player *plr) {
|
||||
static void marisa_laser_preload(void) {
|
||||
const int flags = RESF_DEFAULT;
|
||||
|
||||
preload_resources(RES_TEXTURE, flags,
|
||||
"part/marilaser_part0",
|
||||
"proj/marilaser",
|
||||
"proj/marisa",
|
||||
"masterspark",
|
||||
"masterspark_ring",
|
||||
NULL);
|
||||
|
||||
preload_resources(RES_SFX, flags | RESF_OPTIONAL,
|
||||
"masterspark",
|
||||
"bomb_marisa_a",
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,7 @@ static int marisa_star_orbit(Projectile *p, int t) { // a[0]: x' a[1]: x''
|
|||
}
|
||||
|
||||
static void marisa_star_bomb(Player *plr) {
|
||||
play_sound("bomb_marisa_b");
|
||||
for(int i = 0; i < 20; i++) {
|
||||
float r = frand()*40 + 100;
|
||||
float phi = frand()*2*M_PI;
|
||||
|
@ -143,6 +144,20 @@ static void marisa_star_power(Player *plr, short npow) {
|
|||
}
|
||||
}
|
||||
|
||||
static void marisa_star_preload(void) {
|
||||
const int flags = RESF_DEFAULT;
|
||||
|
||||
preload_resources(RES_TEXTURE, flags,
|
||||
"proj/marisa",
|
||||
"proj/maristar",
|
||||
"part/maristar_orbit",
|
||||
NULL);
|
||||
|
||||
preload_resources(RES_SFX, flags | RESF_OPTIONAL,
|
||||
"bomb_marisa_b",
|
||||
NULL);
|
||||
}
|
||||
|
||||
PlayerMode plrmode_marisa_b = {
|
||||
.name = "Star Sign",
|
||||
.character = &character_marisa,
|
||||
|
@ -151,5 +166,6 @@ PlayerMode plrmode_marisa_b = {
|
|||
.bomb = marisa_star_bomb,
|
||||
.shot = marisa_common_shot,
|
||||
.power = marisa_star_power,
|
||||
.preload = marisa_star_preload,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -152,6 +152,7 @@ static int youmu_split(Enemy *e, int t) {
|
|||
}
|
||||
|
||||
static void youmu_mirror_bomb(Player *plr) {
|
||||
play_sound("bomb_youmu_a");
|
||||
create_enemy_p(&plr->slaves, 40.0*I, ENEMY_BOMB, NULL, youmu_split, 280,0,0,0);
|
||||
}
|
||||
|
||||
|
@ -163,6 +164,19 @@ static void youmu_mirror_think(Player *plr) {
|
|||
}
|
||||
}
|
||||
|
||||
static void youmu_mirror_preload(void) {
|
||||
const int flags = RESF_DEFAULT;
|
||||
|
||||
preload_resources(RES_TEXTURE, flags,
|
||||
"proj/youmu",
|
||||
"part/youmu_slice",
|
||||
NULL);
|
||||
|
||||
preload_resources(RES_SFX, flags | RESF_OPTIONAL,
|
||||
"bomb_youmu_a",
|
||||
NULL);
|
||||
}
|
||||
|
||||
PlayerMode plrmode_youmu_a = {
|
||||
.name = "Mirror Sign",
|
||||
.character = &character_youmu,
|
||||
|
@ -171,5 +185,6 @@ PlayerMode plrmode_youmu_a = {
|
|||
.bomb = youmu_mirror_bomb,
|
||||
.shot = youmu_common_shot,
|
||||
.think = youmu_mirror_think,
|
||||
.preload = youmu_mirror_preload,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -210,15 +210,21 @@ static void youmu_haunting_shot(Player *plr) {
|
|||
}
|
||||
|
||||
static void youmu_haunting_bomb(Player *plr) {
|
||||
play_sound("haunt");
|
||||
play_sound("bomb_youmu_b");
|
||||
create_enemy_p(&plr->slaves, 40.0*I, ENEMY_BOMB, YoumuSlash, youmu_slash, 280,0,0,0);
|
||||
}
|
||||
|
||||
static void youmu_haunting_preload(Player *plr) {
|
||||
static void youmu_haunting_preload(void) {
|
||||
const int flags = RESF_DEFAULT;
|
||||
|
||||
preload_resources(RES_TEXTURE, flags,
|
||||
"proj/youmu",
|
||||
"part/youmu_slice",
|
||||
|
||||
NULL);
|
||||
|
||||
preload_resources(RES_SFX, flags | RESF_OPTIONAL,
|
||||
"haunt",
|
||||
"bomb_youmu_b",
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -464,12 +464,9 @@ void projectiles_preload(void) {
|
|||
"part/boss_shadow",
|
||||
"part/flare",
|
||||
"part/lasercurve",
|
||||
"part/marilaser_part0",
|
||||
"part/maristar_orbit",
|
||||
"part/petal",
|
||||
"part/smoke",
|
||||
"part/stain",
|
||||
"part/youmu_slice",
|
||||
"part/lightning0",
|
||||
"part/lightning1",
|
||||
"part/lightningball",
|
||||
|
@ -480,16 +477,12 @@ void projectiles_preload(void) {
|
|||
"proj/crystal",
|
||||
"proj/flea",
|
||||
"proj/hghost",
|
||||
"proj/marilaser",
|
||||
"proj/marisa",
|
||||
"proj/maristar",
|
||||
"proj/plainball",
|
||||
"proj/rice",
|
||||
"proj/soul",
|
||||
"proj/thickrice",
|
||||
"proj/wave",
|
||||
"proj/youhoming",
|
||||
"proj/youmu",
|
||||
NULL);
|
||||
|
||||
preload_resources(RES_SFX, RESF_PERMANENT,
|
||||
|
|
Loading…
Reference in a new issue