From 7f570d23387459595525e686ace56bcbb284f240 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 22 Sep 2024 21:06:57 +0200 Subject: [PATCH] renderer/common/sprite_batch: remove string fields from SpriteParams --- src/boss.c | 4 +-- src/credits.c | 2 +- src/menu/charprofile.c | 14 ++++----- src/menu/charselect.c | 14 ++++----- src/menu/common.c | 4 +-- src/menu/difficultyselect.c | 2 +- src/menu/mainmenu.c | 10 +++--- src/player.c | 2 +- src/plrmodes/marisa.c | 4 +-- src/portrait.c | 2 +- src/renderer/api.h | 6 +--- src/renderer/common/sprite_batch.c | 14 ++------- src/stagedraw.c | 38 +++++++++++------------ src/stages/stage1/draw.c | 6 ++-- src/stages/stage2/hina.c | 5 ++- src/stages/stage2/spells/amulet_of_harm.c | 4 +-- src/stages/stage4/spells/vlads_army.c | 6 ++-- src/stages/stage6/draw.c | 2 +- src/stages/stage6/spells/toe.c | 4 +-- 19 files changed, 65 insertions(+), 78 deletions(-) diff --git a/src/boss.c b/src/boss.c index 958c4863..1ab764e0 100644 --- a/src/boss.c +++ b/src/boss.c @@ -438,7 +438,7 @@ static void draw_spell_name(Boss *b, int time, bool healthbar_radial) { float opacity = opacity_noplr * b->hud.plrproximity_opacity; r_draw_sprite(&(SpriteParams) { - .sprite = "spell", + .sprite_ptr = res_sprite("spell"), .pos = { (VIEWPORT_W - 128), y_offset * (1 - pow(1 - f2, 5)) + VIEWPORT_H * pow(1 - f2, 2) }, .color = color_mul_scalar(RGBA(1, 1, 1, f2 * 0.5), opacity * f2) , .scale.both = 3 - 2 * (1 - pow(1 - f2, 3)), @@ -684,7 +684,7 @@ void draw_boss_background(Boss *boss) { r_mat_mv_scale(f, f, 1); r_draw_sprite(&(SpriteParams) { - .sprite = "boss_circle", + .sprite_ptr = res_sprite("boss_circle"), .color = RGBA(1, 1, 1, 0), }); r_mat_mv_pop(); diff --git a/src/credits.c b/src/credits.c index 390ae327..c9aa5698 100644 --- a/src/credits.c +++ b/src/credits.c @@ -454,7 +454,7 @@ static void credits_draw_entry(CreditsEntry *e) { r_draw_sprite(&(SpriteParams) { .sprite_ptr = yukkuri_spr, .pos.y = -60 * elevation * fadein + halfheight * squeeze, - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), .scale.x = 1.0 - squeeze, .scale.y = 1.0 + squeeze, }); diff --git a/src/menu/charprofile.c b/src/menu/charprofile.c index 1f09f3aa..c06fc34d 100644 --- a/src/menu/charprofile.c +++ b/src/menu/charprofile.c @@ -222,7 +222,7 @@ static void charprofile_draw(MenuData *m) { SpriteParams portrait_params = { .pos = { SCREEN_W/2 + 240 + 320 * pofs, SCREEN_H - spr->h * 0.5 }, .sprite_ptr = spr, - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), .color = color, }; @@ -235,7 +235,7 @@ static void charprofile_draw(MenuData *m) { .align = ALIGN_LEFT, .pos = { 25, 570 }, .font = "standard", - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(0.9, 0.9, 0.9, 0.9), }); } @@ -253,7 +253,7 @@ static void charprofile_draw(MenuData *m) { text_draw(profiles[selected].fullname, &(TextParams) { .align = ALIGN_CENTER, .font = "big", - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(o, o, o, o), }); r_mat_mv_pop(); @@ -267,7 +267,7 @@ static void charprofile_draw(MenuData *m) { text_draw(profiles[selected].title, &(TextParams) { .align = ALIGN_CENTER, .pos = { 20*(1-o), 30 }, - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(o, o, o, o), }); r_mat_mv_pop(); @@ -276,7 +276,7 @@ static void charprofile_draw(MenuData *m) { .align = ALIGN_LEFT, .pos = { -175, 120 }, .font = "small", - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(o, o, o, o), }); r_mat_mv_pop(); @@ -285,14 +285,14 @@ static void charprofile_draw(MenuData *m) { r_shader("sprite_default"); r_draw_sprite(&(SpriteParams) { - .sprite = "menu/arrow", + .sprite_ptr = res_sprite("menu/arrow"), .pos = { 30, SCREEN_H/3+10 }, .color = RGBA(o, o, o, o), .scale = { 0.5, 0.7 }, }); r_draw_sprite(&(SpriteParams) { - .sprite = "menu/arrow", + .sprite_ptr = res_sprite("menu/arrow"), .pos = { 30 + 340, SCREEN_H/3+10 }, .color = RGBA(o, o, o, o), .scale = { 0.5, 0.7 }, diff --git a/src/menu/charselect.c b/src/menu/charselect.c index a8ea7982..7bfd7c06 100644 --- a/src/menu/charselect.c +++ b/src/menu/charselect.c @@ -215,7 +215,7 @@ void draw_char_menu(MenuData *menu) { SpriteParams portrait_params = { .pos = { SCREEN_W/2 + 240 + 320 * pofs, SCREEN_H - spr->h * 0.5 }, .sprite_ptr = spr, - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), .color = RGBA(pbrightness, pbrightness, pbrightness, 1), // .flip.x = true, }; @@ -237,7 +237,7 @@ void draw_char_menu(MenuData *menu) { text_draw(name, &(TextParams) { .align = ALIGN_CENTER, .font = "big", - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(o, o, o, o), }); @@ -252,7 +252,7 @@ void draw_char_menu(MenuData *menu) { text_draw(title, &(TextParams) { .align = ALIGN_CENTER, .pos = { 20*(1-o), 30 }, - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(o, o, o, o), }); @@ -298,7 +298,7 @@ void draw_char_menu(MenuData *menu) { text_draw(buf, &(TextParams) { .align = ALIGN_CENTER, .pos = { 0, y}, - .shader = "text_default", + .shader_ptr = res_shader("text_default"), }); if(shot == current_subshot) { @@ -306,7 +306,7 @@ void draw_char_menu(MenuData *menu) { text_draw_wrapped(mode->description, DESCRIPTION_WIDTH, &(TextParams) { .align = ALIGN_CENTER, .pos = { 0, y + 30 }, - .shader = "text_default", + .shader_ptr = res_shader("text_default"), }); } } @@ -318,14 +318,14 @@ void draw_char_menu(MenuData *menu) { r_shader("sprite_default"); r_draw_sprite(&(SpriteParams) { - .sprite = "menu/arrow", + .sprite_ptr = res_sprite("menu/arrow"), .pos = { 30, SCREEN_H/3+10 }, .color = RGBA(o, o, o, o), .scale = { 0.5, 0.7 }, }); r_draw_sprite(&(SpriteParams) { - .sprite = "menu/arrow", + .sprite_ptr = res_sprite("menu/arrow"), .pos = { 30 + 340, SCREEN_H/3+10 }, .color = RGBA(o, o, o, o), .scale = { 0.5, 0.7 }, diff --git a/src/menu/common.c b/src/menu/common.c index 8c758baa..a161a931 100644 --- a/src/menu/common.c +++ b/src/menu/common.c @@ -220,7 +220,7 @@ void draw_menu_selector(float x, float y, float w, float h, float t) { r_draw_sprite(&(SpriteParams) { .sprite_ptr = bg, .color = RGBA(0, 0, 0, 0.5 * (1 - transition.fade)), - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), }); r_mat_mv_pop(); } @@ -231,7 +231,7 @@ void draw_menu_title(MenuData *m, const char *title) { .align = ALIGN_RIGHT, .font = "big", .color = RGB(1, 1, 1), - .shader = "text_default", + .shader_ptr = res_shader("text_default"), }); } diff --git a/src/menu/difficultyselect.c b/src/menu/difficultyselect.c index ccaae7dc..d4da97fe 100644 --- a/src/menu/difficultyselect.c +++ b/src/menu/difficultyselect.c @@ -89,7 +89,7 @@ void draw_difficulty_menu(MenuData *menu) { dynarray_foreach(&menu->entries, int i, MenuEntry *e, { float scale = 0.5 + e->drawdata; r_draw_sprite(&(SpriteParams) { - .sprite = difficulty_sprite_name(D_Easy + i), + .sprite_ptr = res_sprite(difficulty_sprite_name(D_Easy + i)), .pos = { 0, 240 * tanh(0.7 * (i - menu->drawdata[0])) }, .color = RGBA(scale, scale, scale, scale), .scale.both = scale, diff --git a/src/menu/mainmenu.c b/src/menu/mainmenu.c index 1c507562..54c6fdbf 100644 --- a/src/menu/mainmenu.c +++ b/src/menu/mainmenu.c @@ -164,9 +164,9 @@ void draw_main_menu(MenuData *menu) { float rotfac = (1 - pow(menu_fade(menu), 2.0)); r_draw_sprite(&(SpriteParams) { - .sprite = "menu/logo", + .sprite_ptr = res_sprite("menu/logo"), + .shader_ptr = res_shader("sprite_default"), .pos = { SCREEN_W/2, SCREEN_H/2 }, - .shader = "sprite_default", .rotation.vector = { 0, -1, 0 }, .rotation.angle = max(0, M_PI/1.5 - min(M_PI/1.5, rot) * rotfac), .color = color_mul_scalar(RGBA(1, 1, 1, 1), min(1, rot) * rotfac), @@ -220,7 +220,7 @@ void draw_main_menu(MenuData *menu) { continue; r_draw_sprite(&(SpriteParams) { - .sprite = "part/petal", + .sprite_ptr = res_sprite("part/petal"), .color = RGBA(1, 1, 1, 0), .pos = { posx, posy }, .scale.both = 0.2, @@ -237,7 +237,7 @@ void draw_main_menu(MenuData *menu) { .align = ALIGN_RIGHT, .pos = { SCREEN_W-5, SCREEN_H-10 }, .font = "small", - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(1, 1, 1, 1), }); @@ -256,7 +256,7 @@ void draw_loading_screen(void) { .align = ALIGN_CENTER, .pos = { SCREEN_W/2, SCREEN_H-20 }, .font = "standard", - .shader = "text_default", + .shader_ptr = res_shader("text_default"), .color = RGBA(0.35, 0.35, 0.35, 0.35), }); diff --git a/src/player.c b/src/player.c index 35a679b5..7c37e5eb 100644 --- a/src/player.c +++ b/src/player.c @@ -263,7 +263,7 @@ static void ent_draw_player(EntityInterface *ent) { if(plr->focus_circle_alpha) { r_draw_sprite(&(SpriteParams) { - .sprite = "fairy_circle", + .sprite_ptr = res_sprite("fairy_circle"), .rotation.angle = DEG2RAD * global.frames * 10, .color = RGBA_MUL_ALPHA(1, 1, 1, 0.2 * plr->focus_circle_alpha), .pos = { re(plr->pos), im(plr->pos) }, diff --git a/src/plrmodes/marisa.c b/src/plrmodes/marisa.c index 67bf1702..e0009a43 100644 --- a/src/plrmodes/marisa.c +++ b/src/plrmodes/marisa.c @@ -84,8 +84,8 @@ static void draw_masterspark_ring(int t, float width) { } r_draw_sprite(&(SpriteParams) { - .sprite = "masterspark_ring", - .shader = "sprite_default", + .sprite_ptr = res_sprite("masterspark_ring"), + .shader_ptr = res_shader("sprite_default"), .pos = { 0, -t*t*0.4 + 2 }, .color = RGBA(0.5, 0.5, 0.5, 0.0), .scale = { .x = sx, .y = sy * sy * 1.5 }, diff --git a/src/portrait.c b/src/portrait.c index 74fd38e0..f4a65742 100644 --- a/src/portrait.c +++ b/src/portrait.c @@ -89,7 +89,7 @@ void portrait_render(Sprite *s_base, Sprite *s_face, Sprite *s_out) { sp.pos.x = spr_w * 0.5f - s_base->padding.offset.x; sp.pos.y = spr_h * 0.5f - s_base->padding.offset.y; sp.color = RGBA(1, 1, 1, 1); - sp.shader_ptr = res_shader("sprite_default"), + sp.shader_ptr = res_shader("sprite_default"); r_draw_sprite(&sp); sp.blend = BLEND_PREMUL_ALPHA; sp.sprite_ptr = s_face; diff --git a/src/renderer/api.h b/src/renderer/api.h index 2560541a..589e2dee 100644 --- a/src/renderer/api.h +++ b/src/renderer/api.h @@ -440,10 +440,10 @@ typedef union ShaderCustomParams { } ShaderCustomParams; typedef struct SpriteStateParams { + ShaderProgram *shader; Texture *primary_texture; Texture *aux_textures[R_NUM_SPRITE_AUX_TEXTURES]; BlendMode blend; - ShaderProgram *shader; } SpriteStateParams; typedef union SpriteScaleParams { @@ -470,12 +470,8 @@ typedef struct SpriteFlipParams { } SpriteFlipParams; typedef struct SpriteParams { - const char *sprite; Sprite *sprite_ptr; - - const char *shader; ShaderProgram *shader_ptr; - Texture *aux_textures[R_NUM_SPRITE_AUX_TEXTURES]; // TODO: maybe embed these by value and get rid of SpriteParamsBuffer? diff --git a/src/renderer/common/sprite_batch.c b/src/renderer/common/sprite_batch.c index 7a21984a..205f706f 100644 --- a/src/renderer/common/sprite_batch.c +++ b/src/renderer/common/sprite_batch.c @@ -259,12 +259,8 @@ INLINE void _r_sprite_batch_process_params( SpriteStateParams *restrict state_params, Sprite *restrict *sprite ) { - assert(!(sprite_params->shader && sprite_params->shader_ptr)); - assert(!(sprite_params->sprite && sprite_params->sprite_ptr)); - - if((*sprite = sprite_params->sprite_ptr) == NULL) { - *sprite = res_sprite(NOT_NULL(sprite_params->sprite)); - } + assert(sprite_params->sprite_ptr != NULL); + *sprite = sprite_params->sprite_ptr; state_params->primary_texture = (*sprite)->tex; memcpy(&state_params->aux_textures, &sprite_params->aux_textures, sizeof(sprite_params->aux_textures)); @@ -275,11 +271,7 @@ INLINE void _r_sprite_batch_process_params( } if((state_params->shader = sprite_params->shader_ptr) == NULL) { - if(sprite_params->shader != NULL) { - state_params->shader = res_shader(sprite_params->shader); - } else { - state_params->shader = r_shader_current(); - } + state_params->shader = r_shader_current(); } } diff --git a/src/stagedraw.c b/src/stagedraw.c index 3e951cc7..534c2c56 100644 --- a/src/stagedraw.c +++ b/src/stagedraw.c @@ -537,8 +537,8 @@ static void draw_spellbg(int t) { } r_draw_sprite(&(SpriteParams) { - .sprite = "boss_spellcircle0", - .shader = "sprite_default", + .sprite_ptr = res_sprite("boss_spellcircle0"), + .shader_ptr = res_shader("sprite_default"), .pos = { re(b->pos), im(b->pos) }, .rotation.angle = global.frames * 7.0 * DEG2RAD, .rotation.vector = { 0, 0, -1 }, @@ -1740,10 +1740,10 @@ void stage_draw_hud(void) { // Difficulty indicator r_draw_sprite(&(SpriteParams) { - .sprite = difficulty_sprite_name(global.diff), + .sprite_ptr = res_sprite(difficulty_sprite_name(global.diff)), .pos = { HUD_EFFECTIVE_WIDTH * 0.5, 400 }, .scale.both = 0.6, - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), }); // Power/Item/Voltage icons @@ -1752,41 +1752,41 @@ void stage_draw_hud(void) { r_draw_sprite(&(SpriteParams) { .pos = { 2, labels.y.power + 2 }, - .sprite = "item/power", - .shader = "sprite_default", + .sprite_ptr = res_sprite("item/power"), + .shader_ptr = res_shader("sprite_default"), .color = RGBA(0, 0, 0, 0.5), }); r_draw_sprite(&(SpriteParams) { .pos = { 0, labels.y.power }, - .sprite = "item/power", - .shader = "sprite_default", + .sprite_ptr = res_sprite("item/power"), + .shader_ptr = res_shader("sprite_default"), }); r_draw_sprite(&(SpriteParams) { .pos = { 2, labels.y.value + 2 }, - .sprite = "item/point", - .shader = "sprite_default", + .sprite_ptr = res_sprite("item/point"), + .shader_ptr = res_shader("sprite_default"), .color = RGBA(0, 0, 0, 0.5), }); r_draw_sprite(&(SpriteParams) { .pos = { 0, labels.y.value }, - .sprite = "item/point", - .shader = "sprite_default", + .sprite_ptr = res_sprite("item/point"), + .shader_ptr = res_shader("sprite_default"), }); r_draw_sprite(&(SpriteParams) { .pos = { 2, labels.y.voltage + 2 }, - .sprite = "item/voltage", - .shader = "sprite_default", + .sprite_ptr = res_sprite("item/voltage"), + .shader_ptr = res_shader("sprite_default"), .color = RGBA(0, 0, 0, 0.5), }); r_draw_sprite(&(SpriteParams) { .pos = { 0, labels.y.voltage }, - .sprite = "item/voltage", - .shader = "sprite_default", + .sprite_ptr = res_sprite("item/voltage"), + .shader_ptr = res_shader("sprite_default"), }); r_mat_mv_pop(); @@ -1828,8 +1828,8 @@ void stage_draw_hud(void) { red = 0; r_draw_sprite(&(SpriteParams) { - .sprite = "boss_indicator", - .shader = "sprite_default", + .sprite_ptr = res_sprite("boss_indicator"), + .shader_ptr = res_shader("sprite_default"), .pos = { VIEWPORT_X+re(global.boss->pos), 590 }, .color = RGBA(1 - red, 1 - red, 1 - red, 1 - red), }); @@ -1874,7 +1874,7 @@ void stage_draw_hud(void) { text_draw("Demo", &(TextParams) { .align = ALIGN_CENTER, .font = "big", - .shader = "text_demo", + .shader_ptr = res_shader("text_demo"), .shader_params = &(ShaderCustomParams) { global.frames / 60.0f }, .pos.as_cmplx = pos, }); diff --git a/src/stages/stage1/draw.c b/src/stages/stage1/draw.c index 457a6d8c..389acd0b 100644 --- a/src/stages/stage1/draw.c +++ b/src/stages/stage1/draw.c @@ -198,7 +198,7 @@ static void stage1_smoke_draw(vec3 pos) { r_mat_mv_scale(3.5*2, 2*1.5, 1); r_mat_mv_rotate(global.frames * spin + M_PI * 2 * sin(pos[1]*321.23), 0, 0, 1); r_draw_sprite(&(SpriteParams) { - .sprite = "stage1/fog", + .sprite_ptr = res_sprite("stage1/fog"), .color = RGBA(0.6 * o, 0.7 * o, 0.8 * o, o * 0.5), }); r_mat_mv_pop(); @@ -260,7 +260,7 @@ static void stage1_waterplants_draw(vec3 pos) { r_mat_tex_translate(tile, 0, 0); r_draw_sprite(&(SpriteParams) { .sprite_ptr = &spr, - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), .flip.x = floathash(pos[1] * 231544.213) & 1, .flip.y = floathash(pos[1] * 941233.513) & 1, .color = RGBA(0.5*a, 0.4*a, 0.5*a, 0.5*a), @@ -316,7 +316,7 @@ static void stage1_snow_draw(vec3 pos) { r_mat_mv_translate(pos[0] + 2200 * sawtooth(h1), pos[1] + 10 * sawtooth(h2), 1200 - 1200 * height); r_mat_mv_rotate(M_PI/2, -1, 0, 0); r_draw_sprite(&(SpriteParams) { - .sprite = "part/smoothdot", + .sprite_ptr = res_sprite("part/smoothdot"), .color = RGBA(o, o, o, 0), }); r_mat_mv_pop(); diff --git a/src/stages/stage2/hina.c b/src/stages/stage2/hina.c index 9219ec0b..63c202a5 100644 --- a/src/stages/stage2/hina.c +++ b/src/stages/stage2/hina.c @@ -17,18 +17,17 @@ void stage2_draw_hina_spellbg(Boss *h, int time) { sp.pos.y = VIEWPORT_H/2; sp.scale.both = 0.6; sp.shader_ptr = res_shader("sprite_default"); + sp.sprite_ptr = res_sprite("stage2/spellbg1"); sp.blend = BLEND_PREMUL_ALPHA; - sp.sprite = "stage2/spellbg1"; r_draw_sprite(&sp); sp.scale.both = 1; sp.blend = BLEND_MOD; - sp.sprite = "stage2/spellbg2"; + sp.sprite_ptr = res_sprite("stage2/spellbg2"); sp.rotation = (SpriteRotationParams) { .angle = time * 5 * DEG2RAD, .vector = { 0, 0, 1 } }; r_draw_sprite(&sp); Animation *fireani = res_anim("fire"); sp.sprite_ptr = animation_get_frame(fireani, get_ani_sequence(fireani, "main"), global.frames); - sp.sprite = NULL; sp.pos.x = re(h->pos); sp.pos.y = im(h->pos); sp.scale.both = 1; diff --git a/src/stages/stage2/spells/amulet_of_harm.c b/src/stages/stage2/spells/amulet_of_harm.c index f32da464..9e99d640 100644 --- a/src/stages/stage2/spells/amulet_of_harm.c +++ b/src/stages/stage2/spells/amulet_of_harm.c @@ -18,13 +18,13 @@ TASK(spinner_bullet_redirect, { BoxedProjectile p; MoveParams move; }) { static void amulet_draw(Enemy *e, EnemyDrawParams p) { r_draw_sprite(&(SpriteParams) { .color = RGBA(2, 1, 1, 0), - .sprite = "fairy_circle_big", + .sprite_ptr = res_sprite("fairy_circle_big"), .pos.as_cmplx = p.pos, .rotation.angle = p.time * 5 * DEG2RAD, }); r_draw_sprite(&(SpriteParams) { - .sprite = "enemy/swirl", + .sprite_ptr = res_sprite("enemy/swirl"), .pos.as_cmplx = p.pos, .rotation.angle = p.time * -10 * DEG2RAD, }); diff --git a/src/stages/stage4/spells/vlads_army.c b/src/stages/stage4/spells/vlads_army.c index 0f9a7bd5..6eb92688 100644 --- a/src/stages/stage4/spells/vlads_army.c +++ b/src/stages/stage4/spells/vlads_army.c @@ -21,10 +21,10 @@ static void kurumi_extra_shield_draw(Enemy *e, EnemyDrawParams p) { 1 + (1 - h), 0.3 + 0.7 * h, 0.2 + 0.8 * h, 1 + 1 - h ), - .sprite = "enemy/swirl", + .sprite_ptr = res_sprite("enemy/swirl"), .pos.as_cmplx = p.pos, .rotation.angle = p.time * -10 * DEG2RAD, - .shader = "sprite_negative", + .shader_ptr = res_shader("sprite_negative"), }); } @@ -179,7 +179,7 @@ TASK(kurumi_vladsarmy_drainer, { BoxedBoss boss; BoxedEnemy enemy; }) { .func = kurumi_extra_drainer_draw, .args[0].as_ptr = &state, }, - .shader = "sprite_default", + .shader_ptr = res_shader("sprite_default"), .flags = PFLAG_NOCLEAR | PFLAG_NOCOLLISION, .layer = LAYER_BOSS - 1, )); diff --git a/src/stages/stage6/draw.c b/src/stages/stage6/draw.c index 120a0b1f..84108c5f 100644 --- a/src/stages/stage6/draw.c +++ b/src/stages/stage6/draw.c @@ -155,7 +155,7 @@ static void stage6_skysphere_draw(vec3 pos) { r_mat_mv_rotate(acos(p[2]), -p[1], p[0], 0); r_mat_mv_scale(3e-4, 3e-4, 3e-4); r_draw_sprite(&(SpriteParams) { - .sprite = "part/smoothdot", + .sprite_ptr = res_sprite("part/smoothdot"), .color = RGBA_MUL_ALPHA(1, 1, 1, sqrt(p[2])), }); r_mat_mv_pop(); diff --git a/src/stages/stage6/spells/toe.c b/src/stages/stage6/spells/toe.c index 887503a8..e75d020c 100644 --- a/src/stages/stage6/spells/toe.c +++ b/src/stages/stage6/spells/toe.c @@ -19,7 +19,7 @@ void elly_spellbg_toe(Boss *b, int t) { .pos = { VIEWPORT_W / 2.0, VIEWPORT_H / 2.0 }, .scale.both = 0.75 + 0.0005 * t, .rotation.angle = t * 0.1 * DEG2RAD, - .sprite = "stage6/spellbg_toe", + .sprite_ptr = res_sprite("stage6/spellbg_toe"), .color = RGB(0.6, 0.6, 0.6), }); @@ -56,7 +56,7 @@ void elly_spellbg_toe(Boss *b, int t) { SpriteParams sp = { .color = &color, - .sprite = texname, + .sprite_ptr = res_sprite(texname), .pos = { VIEWPORT_W / 2.0 + positions[i][0] + cos(wobble + i) * wobble, VIEWPORT_H / 2.0 - 150 + positions[i][1] + sin(i + wobble) * wobble,