From a6e29bdc56bbbe2e4d1b8e21742b91de1a9a3c8b Mon Sep 17 00:00:00 2001 From: laochailan Date: Fri, 16 Jun 2023 22:19:11 -0400 Subject: [PATCH] preload: update all preloads endings and extra spells are not completely tested yet. --- src/boss.c | 2 ++ src/cutscenes/cutscene.c | 2 ++ src/enemy.c | 6 ++++++ src/menu/charselect.c | 17 +++++++++++++++++ src/menu/mainmenu.c | 1 + src/projectile.c | 2 ++ src/stages/stage1/stage1.c | 3 +++ src/stages/stage2/stage2.c | 8 ++++++-- src/stages/stage3/spells/moonlight_rocket.c | 2 +- src/stages/stage3/stage3.c | 13 +++++++++++-- src/stages/stage4/stage4.c | 12 +++++++++--- src/stages/stage5/stage5.c | 7 +++++++ src/stages/stage6/stage6.c | 9 +++++++-- 13 files changed, 74 insertions(+), 10 deletions(-) diff --git a/src/boss.c b/src/boss.c index a4ce0401..08db4ec0 100644 --- a/src/boss.c +++ b/src/boss.c @@ -1600,6 +1600,7 @@ void boss_preload(ResourceGroup *rg) { res_group_preload(rg, RES_SFX, RESF_OPTIONAL, "charge_generic", "charge_extra", + "discharge", "spellend", "spellclear", "timeout1", @@ -1612,6 +1613,7 @@ void boss_preload(ResourceGroup *rg) { "boss_indicator", "boss_spellcircle0", "part/arc", + "part/blast_huge_rays", "part/boss_shadow", "spell", NULL); diff --git a/src/cutscenes/cutscene.c b/src/cutscenes/cutscene.c index 07a14821..4c8cc8fa 100644 --- a/src/cutscenes/cutscene.c +++ b/src/cutscenes/cutscene.c @@ -414,6 +414,8 @@ static void cutscene_preload(const CutscenePhase phases[], ResourceGroup *rg) { res_group_preload(rg, RES_TEXTURE, RESF_DEFAULT, p->background, NULL); } } + + res_group_preload(rg, RES_BGM, RESF_DEFAULT, "ending", NULL); } static CutsceneState *cutscene_state_new(const CutscenePhase phases[]) { diff --git a/src/enemy.c b/src/enemy.c index 6615c495..e1ea16db 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -6,6 +6,7 @@ * Copyright (c) 2012-2019, Andrei Alexeyev . */ +#include "resource/resource.h" #include "taisei.h" #include "enemy.h" @@ -345,10 +346,15 @@ void enemies_preload(ResourceGroup *rg) { res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, "fairy_circle", "fairy_circle_red", + "fairy_circle_big", "fairy_circle_big_and_mean", "enemy/swirl", NULL); + res_group_preload(rg, RES_SHADER_PROGRAM, RESF_DEFAULT, + "sprite_fairy", + NULL); + res_group_preload(rg, RES_SFX, RESF_OPTIONAL, "enemydeath", NULL); diff --git a/src/menu/charselect.c b/src/menu/charselect.c index 2163c0da..9ed76411 100644 --- a/src/menu/charselect.c +++ b/src/menu/charselect.c @@ -23,6 +23,7 @@ enum { F_HAPPY, F_NORMAL, + F_PUZZLED, F_SMUG, F_SURPRISED, F_UNAMUSED, @@ -34,6 +35,7 @@ static const char facedefs[NUM_CHARACTERS][NUM_FACES][FACENAME_LEN] = { [PLR_CHAR_REIMU] = { [F_HAPPY] = PORTRAIT_STATIC_FACE_SPRITE_NAME(reimu, happy), [F_NORMAL] = PORTRAIT_STATIC_FACE_SPRITE_NAME(reimu, normal), + [F_PUZZLED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(reimu, puzzled), [F_SMUG] = PORTRAIT_STATIC_FACE_SPRITE_NAME(reimu, smug), [F_SURPRISED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(reimu, surprised), [F_UNAMUSED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(reimu, unamused), @@ -41,6 +43,7 @@ static const char facedefs[NUM_CHARACTERS][NUM_FACES][FACENAME_LEN] = { [PLR_CHAR_MARISA] = { [F_HAPPY] = PORTRAIT_STATIC_FACE_SPRITE_NAME(marisa, happy), [F_NORMAL] = PORTRAIT_STATIC_FACE_SPRITE_NAME(marisa, normal), + [F_PUZZLED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(marisa, puzzled), [F_SMUG] = PORTRAIT_STATIC_FACE_SPRITE_NAME(marisa, smug), [F_SURPRISED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(marisa, surprised), [F_UNAMUSED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(marisa, unamused), @@ -48,6 +51,7 @@ static const char facedefs[NUM_CHARACTERS][NUM_FACES][FACENAME_LEN] = { [PLR_CHAR_YOUMU] = { [F_HAPPY] = PORTRAIT_STATIC_FACE_SPRITE_NAME(youmu, happy), [F_NORMAL] = PORTRAIT_STATIC_FACE_SPRITE_NAME(youmu, normal), + [F_PUZZLED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(youmu, puzzled), [F_SMUG] = PORTRAIT_STATIC_FACE_SPRITE_NAME(youmu, smug), [F_SURPRISED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(youmu, surprised), [F_UNAMUSED] = PORTRAIT_STATIC_FACE_SPRITE_NAME(youmu, unamused), @@ -390,4 +394,17 @@ void preload_char_menu(ResourceGroup *rg) { for(int i = 0; i < sizeof(facedefs) / FACENAME_LEN; ++i) { res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, p + i * FACENAME_LEN, NULL); } + portrait_preload_face_sprite(rg, "reimu", "annoyed", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "reimu", "assertive", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "reimu", "irritated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "reimu", "outraged", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "reimu", "sigh", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "reimu", "unsettled", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "marisa", "sweat_smile", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "marisa", "inquisitive", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "youmu", "eeeeh", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "youmu", "embarrassed", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "youmu", "eyes_closed", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "youmu", "relaxed", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "youmu", "sigh", RESF_DEFAULT); } diff --git a/src/menu/mainmenu.c b/src/menu/mainmenu.c index d608ee7a..1b23cc75 100644 --- a/src/menu/mainmenu.c +++ b/src/menu/mainmenu.c @@ -273,6 +273,7 @@ void menu_preload(ResourceGroup *rg) { "cell_noise", "stage1/cirnobg", "menu/mainmenubg", + "loading", NULL); res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, diff --git a/src/projectile.c b/src/projectile.c index 6afb9b9b..a339256d 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -1053,6 +1053,7 @@ void projectiles_preload(ResourceGroup *rg) { "part/smoke", "part/smoothdot", "part/stain", + "part/stardust", "part/stardust_green", NULL); @@ -1067,6 +1068,7 @@ void projectiles_preload(ResourceGroup *rg) { "shot1_loop", "shot_special1", "redirect", + "warp", NULL); #define PP(name) (_pp_##name).preload(&_pp_##name, rg); diff --git a/src/stages/stage1/stage1.c b/src/stages/stage1/stage1.c index a9a9b459..48a68d51 100644 --- a/src/stages/stage1/stage1.c +++ b/src/stages/stage1/stage1.c @@ -91,7 +91,10 @@ static void stage1_spellpractice_start(void) { static void stage1_preload(ResourceGroup *rg) { // DIALOG_PRELOAD(&global.plr, Stage1PreBoss, RESF_DEFAULT); portrait_preload_base_sprite(rg, "cirno", NULL, RESF_DEFAULT); + portrait_preload_base_sprite(rg, "cirno", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "cirno", "angry", RESF_DEFAULT); portrait_preload_face_sprite(rg, "cirno", "normal", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "cirno", "defeated", RESF_DEFAULT); res_group_preload(rg, RES_BGM, RESF_OPTIONAL, "stage1", "stage1boss", NULL); res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, "stage1/cirnobg", diff --git a/src/stages/stage2/stage2.c b/src/stages/stage2/stage2.c index 0e94e6e0..8866d7e0 100644 --- a/src/stages/stage2/stage2.c +++ b/src/stages/stage2/stage2.c @@ -70,19 +70,23 @@ static void stage2_end(void) { static void stage2_preload(ResourceGroup *rg) { portrait_preload_base_sprite(rg, "hina", NULL, RESF_DEFAULT); + portrait_preload_base_sprite(rg, "hina", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "hina", "concerned", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "hina", "defeated", RESF_DEFAULT); portrait_preload_face_sprite(rg, "hina", "normal", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "hina", "serious", RESF_DEFAULT); res_group_preload(rg, RES_BGM, RESF_OPTIONAL, "stage2", "stage2boss", NULL); res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, "fairy_circle_big", "part/blast_huge_rays", + "stage2/spellbg1", + "stage2/spellbg2", NULL); res_group_preload(rg, RES_TEXTURE, RESF_DEFAULT, "fractal_noise", "ibl_brdf_lut", "stage2/envmap", - "stage2/spellbg1", - "stage2/spellbg2", NULL); res_group_preload(rg, RES_MATERIAL, RESF_DEFAULT, "stage2/branch", diff --git a/src/stages/stage3/spells/moonlight_rocket.c b/src/stages/stage3/spells/moonlight_rocket.c index 4641fa21..4413b950 100644 --- a/src/stages/stage3/spells/moonlight_rocket.c +++ b/src/stages/stage3/spells/moonlight_rocket.c @@ -153,7 +153,7 @@ TASK(rocket, { BoxedBoss boss; cmplx pos; cmplx dir; Color color; real phase; re // FIXME: better sound play_sfx("enemydeath"); play_sfx("shot1"); - play_sfx("shot1_special"); + play_sfx("shot_special1"); kill_projectile(p); } diff --git a/src/stages/stage3/stage3.c b/src/stages/stage3/stage3.c index 0ca37ccd..87f7ad2b 100644 --- a/src/stages/stage3/stage3.c +++ b/src/stages/stage3/stage3.c @@ -86,19 +86,28 @@ static void stage3_spellpractice_start(void) { static void stage3_preload(ResourceGroup *rg) { portrait_preload_base_sprite(rg, "wriggle", NULL, RESF_DEFAULT); + portrait_preload_base_sprite(rg, "wriggle", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "wriggle", "calm", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "wriggle", "normal", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "wriggle", "outraged", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "wriggle", "outraged_unlit", RESF_DEFAULT); portrait_preload_face_sprite(rg, "wriggle", "proud", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "wriggle", "defeated", RESF_DEFAULT); portrait_preload_base_sprite(rg, "scuttle", NULL, RESF_DEFAULT); portrait_preload_face_sprite(rg, "scuttle", "normal", RESF_DEFAULT); res_group_preload(rg, RES_BGM, RESF_OPTIONAL, "stage3", "stage3boss", NULL); res_group_preload(rg, RES_TEXTURE, RESF_DEFAULT, + "fractal_noise", "ibl_brdf_lut", "stage3/envmap", "stage3/spellbg1", - "stage3/spellbg2", "stage3/wspellbg", "stage3/wspellclouds", "stage3/wspellswarm", NULL); + res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, + "stage3/spellbg2", + NULL); res_group_preload(rg, RES_MATERIAL, RESF_DEFAULT, "stage3/ground", "stage3/leaves", @@ -117,7 +126,7 @@ static void stage3_preload(ResourceGroup *rg) { "pbr", "pbr_roughness_alpha_discard", "stage3_wriggle_bg", - "zbuf_fog", + "zbuf_fog_tonemap", NULL); res_group_preload(rg, RES_ANIM, RESF_DEFAULT, "boss/scuttle", diff --git a/src/stages/stage4/stage4.c b/src/stages/stage4/stage4.c index c5ab3b5c..23075ef0 100644 --- a/src/stages/stage4/stage4.c +++ b/src/stages/stage4/stage4.c @@ -94,22 +94,29 @@ static void stage4_spellpractice_start(void) { static void stage4_preload(ResourceGroup *rg) { portrait_preload_base_sprite(rg, "kurumi", NULL, RESF_DEFAULT); + portrait_preload_base_sprite(rg, "kurumi", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "kurumi", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "kurumi", "dissatisfied", RESF_DEFAULT); portrait_preload_face_sprite(rg, "kurumi", "normal", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "kurumi", "puzzled", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "kurumi", "tsun", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "kurumi", "tsun_blush", RESF_DEFAULT); res_group_preload(rg, RES_BGM, RESF_OPTIONAL, "stage4", "stage4boss", NULL); res_group_preload(rg, RES_TEXTURE, RESF_DEFAULT, "fractal_noise", - "stage4/kurumibg1", "stage4/kurumibg2", NULL); res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, + "stage4/kurumibg1", "stage6/scythe", // Stage 6 is intentional NULL); res_group_preload(rg, RES_SHADER_PROGRAM, RESF_DEFAULT, "alpha_discard", + "fireparticles", "pbr", "sprite_negative", "ssr_water", - "zbuf_fog", + "zbuf_fog_tonemap", NULL); res_group_preload(rg, RES_ANIM, RESF_DEFAULT, "boss/kurumi", @@ -130,7 +137,6 @@ static void stage4_preload(ResourceGroup *rg) { res_group_preload(rg, RES_SFX, RESF_OPTIONAL, "laser1", "boom", - "warp", NULL); // XXX: Special case for spell practice of the god damn extra spell, because it always needs a special case. diff --git a/src/stages/stage5/stage5.c b/src/stages/stage5/stage5.c index c2d5a7aa..d36b965a 100644 --- a/src/stages/stage5/stage5.c +++ b/src/stages/stage5/stage5.c @@ -73,7 +73,12 @@ static void stage5_start(void) { static void stage5_preload(ResourceGroup *rg) { portrait_preload_base_sprite(rg, "iku", NULL, RESF_DEFAULT); + portrait_preload_base_sprite(rg, "iku", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "iku", "defeated", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "iku", "eyes_closed", RESF_DEFAULT); portrait_preload_face_sprite(rg, "iku", "normal", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "iku", "serious", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "iku", "smile", RESF_DEFAULT); res_group_preload(rg, RES_BGM, RESF_OPTIONAL, "stage5", "stage5boss", NULL); res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, "part/blast_huge_halo", @@ -84,6 +89,8 @@ static void stage5_preload(ResourceGroup *rg) { "stage5/spell_lightning", NULL); res_group_preload(rg, RES_TEXTURE, RESF_DEFAULT, + "ibl_brdf_lut", + "fractal_noise", "stage5/envmap", NULL); res_group_preload(rg, RES_MATERIAL, RESF_DEFAULT, diff --git a/src/stages/stage6/stage6.c b/src/stages/stage6/stage6.c index 403e3448..e9c3a75c 100644 --- a/src/stages/stage6/stage6.c +++ b/src/stages/stage6/stage6.c @@ -85,9 +85,13 @@ struct stage6_spells_s stage6_spells = { static void stage6_preload(ResourceGroup *rg) { portrait_preload_base_sprite(rg, "elly", NULL, RESF_DEFAULT); - portrait_preload_face_sprite(rg, "elly", "normal", RESF_DEFAULT); portrait_preload_base_sprite(rg, "elly", "beaten", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "elly", "angry", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "elly", "blush", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "elly", "eyes_closed", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "elly", "normal", RESF_DEFAULT); portrait_preload_face_sprite(rg, "elly", "shouting", RESF_DEFAULT); + portrait_preload_face_sprite(rg, "elly", "smug", RESF_DEFAULT); res_group_preload(rg, RES_BGM, RESF_OPTIONAL, "stage6", "stage6boss_phase1", @@ -95,6 +99,8 @@ static void stage6_preload(ResourceGroup *rg) { "stage6boss_phase3", NULL); res_group_preload(rg, RES_TEXTURE, RESF_DEFAULT, + "ibl_brdf_lut", + "fractal_noise", "stage6/sky", NULL); res_group_preload(rg, RES_SPRITE, RESF_DEFAULT, @@ -147,7 +153,6 @@ static void stage6_preload(ResourceGroup *rg) { "stage6/tower_bottom", NULL); res_group_preload(rg, RES_SFX, RESF_DEFAULT | RESF_OPTIONAL, - "warp", "noise1", "boom", "laser1",