Establish more-or-less consistent resource getter functions
Deprecate old ad-hoc stuff like get_sprite, r_texture_get, etc.
This commit is contained in:
parent
642bdfd2d7
commit
89ecc0c55e
55 changed files with 246 additions and 222 deletions
|
@ -11,6 +11,8 @@
|
|||
#include "audio.h"
|
||||
#include "backend.h"
|
||||
#include "resource/resource.h"
|
||||
#include "resource/bgm.h"
|
||||
#include "resource/sfx.h"
|
||||
#include "global.h"
|
||||
|
||||
#define B (_a_backend.funcs)
|
||||
|
@ -47,7 +49,7 @@ static SoundID play_sound_internal(const char *name, bool is_ui, int cooldown, b
|
|||
return 0;
|
||||
}
|
||||
|
||||
Sound *snd = get_sound(name);
|
||||
Sound *snd = res_sfx(name);
|
||||
|
||||
if(!snd || (!is_ui && snd->lastplayframe + 3 + cooldown >= global.frames)) {
|
||||
return 0;
|
||||
|
@ -116,7 +118,7 @@ void play_loop(const char *name) {
|
|||
return;
|
||||
}
|
||||
|
||||
Sound *snd = get_sound(name);
|
||||
Sound *snd = res_sfx(name);
|
||||
|
||||
if(!snd) {
|
||||
return;
|
||||
|
@ -183,14 +185,6 @@ void stop_sounds(void) {
|
|||
B.sound_stop_all(SNDGROUP_MAIN);
|
||||
}
|
||||
|
||||
Sound* get_sound(const char *name) {
|
||||
return get_resource_data(RES_SFX, name, RESF_OPTIONAL);
|
||||
}
|
||||
|
||||
Music* get_music(const char *name) {
|
||||
return get_resource_data(RES_BGM, name, RESF_OPTIONAL);
|
||||
}
|
||||
|
||||
static bool store_sfx_volume(const char *key, const char *val, void *data) {
|
||||
int vol = atoi(val);
|
||||
|
||||
|
@ -285,7 +279,7 @@ void start_bgm(const char *name) {
|
|||
|
||||
stralloc(¤t_bgm.name, name);
|
||||
|
||||
if((current_bgm.music = get_music(name)) == NULL) {
|
||||
if((current_bgm.music = res_bgm(name)) == NULL) {
|
||||
log_warn("BGM '%s' does not exist", current_bgm.name);
|
||||
stop_bgm(true);
|
||||
free(current_bgm.name);
|
||||
|
|
|
@ -72,8 +72,8 @@ void update_sounds(void); // checks if loops need to be stopped
|
|||
|
||||
int get_default_sfx_volume(const char *sfx);
|
||||
|
||||
Sound* get_sound(const char *name) attr_nonnull(1);
|
||||
Music* get_music(const char *music) attr_nonnull(1);
|
||||
DEFINE_DEPRECATED_RESOURCE_GETTER(Sound, get_sound, res_sfx)
|
||||
DEFINE_DEPRECATED_RESOURCE_GETTER(Music, get_music, res_bgm)
|
||||
|
||||
void start_bgm(const char *name);
|
||||
void stop_bgm(bool force);
|
||||
|
|
14
src/boss.c
14
src/boss.c
|
@ -41,7 +41,7 @@ Boss* create_boss(char *name, char *ani, cmplx pos) {
|
|||
|
||||
char strbuf[strlen(ani) + sizeof("boss/")];
|
||||
snprintf(strbuf, sizeof(strbuf), "boss/%s", ani);
|
||||
aniplayer_create(&boss->ani, get_ani(strbuf), "main");
|
||||
aniplayer_create(&boss->ani, res_anim(strbuf), "main");
|
||||
|
||||
boss->birthtime = global.frames;
|
||||
boss->zoomcolor = *RGBA(0.1, 0.2, 0.3, 1.0);
|
||||
|
@ -412,7 +412,7 @@ static void draw_spell_warning(Font *font, float y_pos, float f, float opacity)
|
|||
}
|
||||
|
||||
static void draw_spell_name(Boss *b, int time, bool healthbar_radial) {
|
||||
Font *font = get_font("standard");
|
||||
Font *font = res_font("standard");
|
||||
|
||||
cmplx x0 = VIEWPORT_W/2+I*VIEWPORT_H/3.5;
|
||||
float f = clamp((time - 40.0) / 60.0, 0, 1);
|
||||
|
@ -469,7 +469,7 @@ static void draw_spell_name(Boss *b, int time, bool healthbar_radial) {
|
|||
if(p) {
|
||||
char buf[32];
|
||||
float a = clamp((global.frames - b->current->starttime - 60) / 60.0, 0, 1);
|
||||
font = get_font("small");
|
||||
font = res_font("small");
|
||||
|
||||
float bonus_ofs = 220;
|
||||
|
||||
|
@ -707,7 +707,7 @@ void draw_boss_overlay(Boss *boss) {
|
|||
float o = boss->hud.global_opacity * boss->hud.plrproximity_opacity;
|
||||
|
||||
if(o > 0) {
|
||||
draw_boss_text(ALIGN_LEFT, 10, 20 + 8 * !radial_style, boss->name, get_font("standard"), RGBA(o, o, o, o));
|
||||
draw_boss_text(ALIGN_LEFT, 10, 20 + 8 * !radial_style, boss->name, res_font("standard"), RGBA(o, o, o, o));
|
||||
|
||||
if(ATTACK_IS_SPELL(boss->current->type)) {
|
||||
int t_portrait, t_spell;
|
||||
|
@ -737,8 +737,8 @@ void draw_boss_overlay(Boss *boss) {
|
|||
color_mul_scalar(&clr_int, o);
|
||||
clr_fract = *RGBA(clr_int.r * 0.5, clr_int.g * 0.5, clr_int.b * 0.5, clr_int.a);
|
||||
|
||||
Font *f_int = get_font("standard");
|
||||
Font *f_fract = get_font("small");
|
||||
Font *f_int = res_font("standard");
|
||||
Font *f_fract = res_font("small");
|
||||
double pos_x, pos_y;
|
||||
|
||||
Alignment align;
|
||||
|
@ -761,7 +761,7 @@ void draw_boss_overlay(Boss *boss) {
|
|||
|
||||
// remaining spells
|
||||
Color *clr = RGBA(0.7 * o, 0.7 * o, 0.7 * o, 0.7 * o);
|
||||
Sprite *star = get_sprite("star");
|
||||
Sprite *star = res_sprite("star");
|
||||
float x = 10 + star->w * 0.5;
|
||||
bool spell_found = false;
|
||||
|
||||
|
|
|
@ -1015,8 +1015,8 @@ void coroutines_draw_stats(void) {
|
|||
TextParams tp = {
|
||||
.pos = { SCREEN_W },
|
||||
.color = RGB(1, 1, 1),
|
||||
.shader_ptr = r_shader_get("text_default"),
|
||||
.font_ptr = get_font("monotiny"),
|
||||
.shader_ptr = res_shader("text_default"),
|
||||
.font_ptr = res_font("monotiny"),
|
||||
.align = ALIGN_RIGHT,
|
||||
};
|
||||
|
||||
|
|
|
@ -256,13 +256,13 @@ static double entry_height(CreditsEntry *e, double *head, double *body) {
|
|||
|
||||
if(e->lines > 0) {
|
||||
if(*(e->data[0]) == '*') {
|
||||
total += *head = sprite_padded_height(get_sprite("kyoukkuri"));
|
||||
total += *head = sprite_padded_height(res_sprite("kyoukkuri"));
|
||||
} else {
|
||||
total += *head = font_get_lineskip(get_font("big"));
|
||||
total += *head = font_get_lineskip(res_font("big"));
|
||||
}
|
||||
|
||||
if(e->lines > 1) {
|
||||
total += *body += (e->lines - 0.5) * font_get_lineskip(get_font("standard"));
|
||||
total += *body += (e->lines - 0.5) * font_get_lineskip(res_font("standard"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -323,7 +323,7 @@ static void credits_draw_entry(CreditsEntry *e) {
|
|||
Sprite *yukkuri_spr = NULL;
|
||||
|
||||
if(*e->data[0] == '*') {
|
||||
yukkuri_spr = get_sprite("kyoukkuri");
|
||||
yukkuri_spr = res_sprite("kyoukkuri");
|
||||
}
|
||||
|
||||
r_state_push();
|
||||
|
@ -355,7 +355,7 @@ static void credits_draw_entry(CreditsEntry *e) {
|
|||
|
||||
r_mat_mv_translate(0, halfheight, 0);
|
||||
} else {
|
||||
Font *font = get_font(i ? "standard" : "big");
|
||||
Font *font = res_font(i ? "standard" : "big");
|
||||
r_shader("text_default");
|
||||
text_draw(e->data[i], &(TextParams) {
|
||||
.align = ALIGN_CENTER,
|
||||
|
|
|
@ -330,7 +330,7 @@ void dialog_draw(Dialog *dialog) {
|
|||
r_draw_quad();
|
||||
r_mat_mv_pop();
|
||||
|
||||
Font *font = get_font("standard");
|
||||
Font *font = res_font("standard");
|
||||
|
||||
r_mat_tex_push();
|
||||
|
||||
|
@ -344,7 +344,7 @@ void dialog_draw(Dialog *dialog) {
|
|||
|
||||
text_draw_wrapped(dialog->text.fading_out->text, dialog_bg_rect.w, &(TextParams) {
|
||||
.shader = "text_dialog",
|
||||
.aux_textures = { r_texture_get("cell_noise") },
|
||||
.aux_textures = { res_texture("cell_noise") },
|
||||
.shader_params = &(ShaderCustomParams) {{ o * (1.0 - (0.2 + 0.8 * (1 - dialog->text.fading_out->opacity))), 1 }},
|
||||
.color = &clr,
|
||||
.pos = { VIEWPORT_W/2, VIEWPORT_H-110 + font_get_lineskip(font) },
|
||||
|
@ -360,7 +360,7 @@ void dialog_draw(Dialog *dialog) {
|
|||
|
||||
text_draw_wrapped(dialog->text.current->text, dialog_bg_rect.w, &(TextParams) {
|
||||
.shader = "text_dialog",
|
||||
.aux_textures = { r_texture_get("cell_noise") },
|
||||
.aux_textures = { res_texture("cell_noise") },
|
||||
.shader_params = &(ShaderCustomParams) {{ o * dialog->text.current->opacity, 0 }},
|
||||
.color = &clr,
|
||||
.pos = { VIEWPORT_W/2, VIEWPORT_H-110 + font_get_lineskip(font) },
|
||||
|
|
|
@ -43,7 +43,7 @@ static void add_ending_entry(Ending *e, int dur, const char *msg, const char *sp
|
|||
entry->msg = msg;
|
||||
|
||||
if(sprite) {
|
||||
entry->sprite = get_sprite(sprite);
|
||||
entry->sprite = res_sprite(sprite);
|
||||
} else {
|
||||
entry->sprite = NULL;
|
||||
}
|
||||
|
|
|
@ -287,7 +287,7 @@ void BigFairy(Enemy *e, int t, bool render) {
|
|||
});
|
||||
|
||||
const char *seqname = !e->moving ? "main" : (e->dir ? "left" : "right");
|
||||
Animation *ani = get_ani("enemy/bigfairy");
|
||||
Animation *ani = res_anim("enemy/bigfairy");
|
||||
Sprite *spr = animation_get_frame(ani,get_ani_sequence(ani, seqname),global.frames);
|
||||
|
||||
r_draw_sprite(&(SpriteParams) {
|
||||
|
@ -314,7 +314,7 @@ void Fairy(Enemy *e, int t, bool render) {
|
|||
});
|
||||
|
||||
const char *seqname = !e->moving ? "main" : (e->dir ? "left" : "right");
|
||||
Animation *ani = get_ani("enemy/fairy");
|
||||
Animation *ani = res_anim("enemy/fairy");
|
||||
Sprite *spr = animation_get_frame(ani,get_ani_sequence(ani, seqname),global.frames);
|
||||
|
||||
r_draw_sprite(&(SpriteParams) {
|
||||
|
|
|
@ -54,7 +54,7 @@ static const char* item_indicator_sprite_name(ItemType type) {
|
|||
}
|
||||
|
||||
static Sprite* item_sprite(ItemType type) {
|
||||
return get_sprite(item_sprite_name(type));
|
||||
return res_sprite(item_sprite_name(type));
|
||||
}
|
||||
|
||||
static Sprite* item_indicator_sprite(ItemType type) {
|
||||
|
@ -62,7 +62,7 @@ static Sprite* item_indicator_sprite(ItemType type) {
|
|||
if(name == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return get_sprite(name);
|
||||
return res_sprite(name);
|
||||
}
|
||||
|
||||
static void ent_draw_item(EntityInterface *ent) {
|
||||
|
|
16
src/laser.c
16
src/laser.c
|
@ -123,7 +123,7 @@ void lasers_preload(void) {
|
|||
lasers.quad_generic.primitive = PRIM_TRIANGLE_STRIP;
|
||||
lasers.quad_generic.vertex_array = lasers.varr;
|
||||
|
||||
lasers.shader_generic = r_shader_get("laser_generic");
|
||||
lasers.shader_generic = res_shader("laser_generic");
|
||||
|
||||
lasers.force_generic = env_get_int("TAISEI_FORCE_GENERIC_LASER_SHADER", false);
|
||||
}
|
||||
|
@ -589,7 +589,7 @@ bool laser_intersects_circle(Laser *l, Circle circle) {
|
|||
|
||||
cmplx las_linear(Laser *l, float t) {
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/linear");
|
||||
l->shader = res_shader_optional("lasers/linear");
|
||||
l->collision_step = fmax(3, l->timespan/10);
|
||||
return 0;
|
||||
}
|
||||
|
@ -599,7 +599,7 @@ cmplx las_linear(Laser *l, float t) {
|
|||
|
||||
cmplx las_accel(Laser *l, float t) {
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/accelerated");
|
||||
l->shader = res_shader_optional("lasers/accelerated");
|
||||
l->collision_step = fmax(3, l->timespan/10);
|
||||
return 0;
|
||||
}
|
||||
|
@ -612,7 +612,7 @@ cmplx las_weird_sine(Laser *l, float t) { // [0] = velocity; [1] = s
|
|||
// do we even still need this?
|
||||
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/weird_sine");
|
||||
l->shader = res_shader_optional("lasers/weird_sine");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -624,7 +624,7 @@ cmplx las_sine(Laser *l, float t) { // [0] = velocity; [1] = sine
|
|||
// this is actually shaped like a sine wave
|
||||
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/sine");
|
||||
l->shader = res_shader_optional("lasers/sine");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -643,7 +643,7 @@ cmplx las_sine_expanding(Laser *l, float t) { // [0] = velocity; [1] = sine ampl
|
|||
// XXX: this is also a "weird" one
|
||||
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/sine_expanding");
|
||||
l->shader = res_shader_optional("lasers/sine_expanding");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -661,7 +661,7 @@ cmplx las_sine_expanding(Laser *l, float t) { // [0] = velocity; [1] = sine ampl
|
|||
|
||||
cmplx las_turning(Laser *l, float t) { // [0] = vel0; [1] = vel1; [2] r: turn begin time, i: turn end time
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/turning");
|
||||
l->shader = res_shader_optional("lasers/turning");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -681,7 +681,7 @@ cmplx las_turning(Laser *l, float t) { // [0] = vel0; [1] = vel1; [2] r: turn be
|
|||
|
||||
cmplx las_circle(Laser *l, float t) {
|
||||
if(t == EVENT_BIRTH) {
|
||||
l->shader = r_shader_get_optional("lasers/circle");
|
||||
l->shader = res_shader_optional("lasers/circle");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ static void update_char_menu(MenuData *menu) {
|
|||
PlayerMode *m = plrmode_find(pchar->id, SELECTED_SUBSHOT(menu));
|
||||
assume(m != NULL);
|
||||
|
||||
Font *font = get_font("standard");
|
||||
Font *font = res_font("standard");
|
||||
char buf[256] = { 0 };
|
||||
text_wrap(font, m->description, DESCRIPTION_WIDTH, buf, sizeof(buf));
|
||||
double height = text_height(font, buf, 0) + font_get_lineskip(font) * 2;
|
||||
|
@ -213,7 +213,7 @@ void draw_char_menu(MenuData *menu) {
|
|||
};
|
||||
|
||||
r_draw_sprite(&portrait_params);
|
||||
portrait_params.sprite_ptr = get_sprite(face);
|
||||
portrait_params.sprite_ptr = res_sprite(face);
|
||||
r_draw_sprite(&portrait_params);
|
||||
|
||||
r_mat_mv_push();
|
||||
|
@ -257,7 +257,7 @@ void draw_char_menu(MenuData *menu) {
|
|||
ShotModeID current_subshot = SELECTED_SUBSHOT(menu);
|
||||
|
||||
float f = menu->drawdata[0]-PLR_SHOT_A;
|
||||
float selbg_ofs = 200 + (100-70)*f-20*f - font_get_lineskip(get_font("standard")) * 0.7;
|
||||
float selbg_ofs = 200 + (100-70)*f-20*f - font_get_lineskip(res_font("standard")) * 0.7;
|
||||
|
||||
r_color4(0, 0, 0, 0.5);
|
||||
r_shader_standard_notex();
|
||||
|
|
|
@ -183,7 +183,7 @@ void start_game_no_difficulty_menu(MenuData *m, void *arg) {
|
|||
}
|
||||
|
||||
void draw_menu_selector(float x, float y, float w, float h, float t) {
|
||||
Sprite *bg = get_sprite("part/smoke");
|
||||
Sprite *bg = res_sprite("part/smoke");
|
||||
r_mat_mv_push();
|
||||
r_mat_mv_translate(x, y, 0);
|
||||
r_mat_mv_scale(w / bg->w, h / bg->h, 1);
|
||||
|
@ -198,7 +198,7 @@ void draw_menu_selector(float x, float y, float w, float h, float t) {
|
|||
|
||||
void draw_menu_title(MenuData *m, const char *title) {
|
||||
text_draw(title, &(TextParams) {
|
||||
.pos = { (text_width(get_font("big"), title, 0) + 10) * (1.0 - menu_fade(m)), 30 },
|
||||
.pos = { (text_width(res_font("big"), title, 0) + 10) * (1.0 - menu_fade(m)), 30 },
|
||||
.align = ALIGN_RIGHT,
|
||||
.font = "big",
|
||||
.color = RGB(1, 1, 1),
|
||||
|
@ -212,7 +212,7 @@ void draw_menu_list(MenuData *m, float x, float y, void (*draw)(MenuEntry*, int,
|
|||
r_mat_mv_translate(x, y + offset, 0);
|
||||
|
||||
draw_menu_selector(m->drawdata[0], m->drawdata[2], m->drawdata[1], 34, m->frames);
|
||||
ShaderProgram *text_shader = r_shader_get("text_default");
|
||||
ShaderProgram *text_shader = res_shader("text_default");
|
||||
|
||||
dynarray_foreach(&m->entries, int i, MenuEntry *e, {
|
||||
float p = offset + 20*i;
|
||||
|
@ -260,7 +260,7 @@ void animate_menu_list_entries(MenuData *m) {
|
|||
|
||||
void animate_menu_list(MenuData *m) {
|
||||
MenuEntry *s = dynarray_get_ptr(&m->entries, m->cursor);
|
||||
int w = text_width(get_font("standard"), s->name, 0);
|
||||
int w = text_width(res_font("standard"), s->name, 0);
|
||||
|
||||
fapproach_asymptotic_p(&m->drawdata[0], 10 + w * 0.5, 0.1, 1e-5);
|
||||
fapproach_asymptotic_p(&m->drawdata[1], w * 2, 0.1, 1e-5);
|
||||
|
|
|
@ -170,7 +170,7 @@ void draw_ingame_menu_bg(MenuData *menu, float f) {
|
|||
|
||||
void update_ingame_menu(MenuData *menu) {
|
||||
menu->drawdata[0] += (menu->cursor*35 - menu->drawdata[0])/7.0;
|
||||
menu->drawdata[1] += (text_width(get_font("standard"), dynarray_get(&menu->entries, menu->cursor).name, 0) - menu->drawdata[1])/10.0;
|
||||
menu->drawdata[1] += (text_width(res_font("standard"), dynarray_get(&menu->entries, menu->cursor).name, 0) - menu->drawdata[1])/10.0;
|
||||
}
|
||||
|
||||
void draw_ingame_menu(MenuData *menu) {
|
||||
|
|
|
@ -97,7 +97,7 @@ static void musicroom_draw_item(MenuEntry *e, int i, int cnt) {
|
|||
TextParams tparams = {
|
||||
.pos = { 20 - e->drawdata, 20 * i },
|
||||
.shader_ptr = p->text_shader,
|
||||
.font_ptr = get_font("standard"),
|
||||
.font_ptr = res_font("standard"),
|
||||
.color = &clr,
|
||||
};
|
||||
bool kerning_saved = font_get_kerning_enabled(tparams.font_ptr);
|
||||
|
@ -149,8 +149,8 @@ static void musicroom_draw(MenuData *m) {
|
|||
r_mat_mv_pop();
|
||||
r_state_pop();
|
||||
|
||||
Font *const text_font = get_font("standard");
|
||||
ShaderProgram *const text_shader = r_shader_get("text_default");
|
||||
Font *const text_font = res_font("standard");
|
||||
ShaderProgram *const text_shader = res_shader("text_default");
|
||||
const float text_x = 50;
|
||||
const float text_y = SCREEN_H - comment_height + font_get_lineskip(text_font) * 1.5 + comment_offset;
|
||||
|
||||
|
@ -225,7 +225,7 @@ static void add_bgm(MenuData *m, const char *bgm) {
|
|||
MusicEntryParam *p = calloc(1, sizeof(*p));
|
||||
p->bgm = bgm;
|
||||
p->bgm_meta = meta;
|
||||
p->text_shader = r_shader_get("text_default");
|
||||
p->text_shader = res_shader("text_default");
|
||||
|
||||
if(progress_is_bgm_unlocked(bgm)) {
|
||||
p->state |= MSTATE_UNLOCKED;
|
||||
|
|
|
@ -1019,8 +1019,8 @@ static void draw_options_menu(MenuData *menu) {
|
|||
int val = bind_getvalue(bind);
|
||||
|
||||
if(bind->configentry == CONFIG_PRACTICE_POWER) {
|
||||
Font *fnt_int = get_font("standard");
|
||||
Font *fnt_fract = get_font("small");
|
||||
Font *fnt_int = res_font("standard");
|
||||
Font *fnt_fract = res_font("small");
|
||||
|
||||
draw_fraction(
|
||||
val,
|
||||
|
@ -1036,7 +1036,7 @@ static void draw_options_menu(MenuData *menu) {
|
|||
} else if(bind->values) {
|
||||
for(j = bind->displaysingle? val : bind->valrange_max; (j+1) && (!bind->displaysingle || j == val); --j) {
|
||||
if(j != bind->valrange_max && !bind->displaysingle) {
|
||||
origin -= text_width(get_font("standard"), bind->values[j+1], 0) + 5;
|
||||
origin -= text_width(res_font("standard"), bind->values[j+1], 0) + 5;
|
||||
}
|
||||
|
||||
if(val == j) {
|
||||
|
|
|
@ -172,8 +172,8 @@ static void replayview_draw_messagebox(MenuData* m) {
|
|||
ReplayviewContext *ctx = m->context;
|
||||
MenuEntry *e = dynarray_get_ptr(&m->entries, 0);
|
||||
float alpha = 1 - ctx->sub_fade;
|
||||
float height = font_get_lineskip(get_font("standard")) * 2;
|
||||
float width = text_width(get_font("standard"), e->name, 0) + 64;
|
||||
float height = font_get_lineskip(res_font("standard")) * 2;
|
||||
float width = text_width(res_font("standard"), e->name, 0) + 64;
|
||||
replayview_draw_submenu_bg(width, height, alpha);
|
||||
|
||||
text_draw(e->name, &(TextParams) {
|
||||
|
@ -290,8 +290,8 @@ static void replayview_drawitem(MenuEntry *e, int item, int cnt) {
|
|||
}
|
||||
|
||||
switch(a) {
|
||||
case ALIGN_CENTER: o += csize * 0.5 - text_width(get_font("standard"), tmp, 0) * 0.5; break;
|
||||
case ALIGN_RIGHT: o += csize - text_width(get_font("standard"), tmp, 0); break;
|
||||
case ALIGN_CENTER: o += csize * 0.5 - text_width(res_font("standard"), tmp, 0) * 0.5; break;
|
||||
case ALIGN_RIGHT: o += csize - text_width(res_font("standard"), tmp, 0); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
18
src/player.c
18
src/player.c
|
@ -103,7 +103,7 @@ void player_free(Player *plr) {
|
|||
|
||||
static void player_full_power(Player *plr) {
|
||||
stage_clear_hazards(CLEAR_HAZARDS_ALL);
|
||||
stagetext_add("Full Power!", VIEWPORT_W * 0.5 + VIEWPORT_H * 0.33 * I, ALIGN_CENTER, get_font("big"), RGB(1, 1, 1), 0, 60, 20, 20);
|
||||
stagetext_add("Full Power!", VIEWPORT_W * 0.5 + VIEWPORT_H * 0.33 * I, ALIGN_CENTER, res_font("big"), RGB(1, 1, 1), 0, 60, 20, 20);
|
||||
}
|
||||
|
||||
bool player_set_power(Player *plr, short npow) {
|
||||
|
@ -196,7 +196,7 @@ void player_draw_overlay(Player *plr) {
|
|||
float spell_x = 128 * (1 - pow(1 - spell_in, 5)) + (VIEWPORT_W + 256) * pow(1 - spell_in, 3);
|
||||
float spell_y = VIEWPORT_H - 128 * sqrt(a);
|
||||
|
||||
Sprite *spell_spr = get_sprite("spell");
|
||||
Sprite *spell_spr = res_sprite("spell");
|
||||
|
||||
r_draw_sprite(&(SpriteParams) {
|
||||
.sprite_ptr = spell_spr,
|
||||
|
@ -205,7 +205,7 @@ void player_draw_overlay(Player *plr) {
|
|||
.scale.both = 3 - 2 * (1 - pow(1 - spell_in, 3)) + 2 * (1 - spell_out),
|
||||
});
|
||||
|
||||
Font *font = get_font("standard");
|
||||
Font *font = res_font("standard");
|
||||
|
||||
r_mat_mv_push();
|
||||
r_mat_mv_translate(spell_x - spell_spr->w * 0.5 + 10, spell_y + 5 - font_get_metrics(font)->descent, 0);
|
||||
|
@ -316,7 +316,7 @@ static void player_draw_indicators(EntityInterface *ent) {
|
|||
|
||||
char buf[64];
|
||||
format_huge_num(0, plr->powersurge.bonus.baseline, sizeof(buf), buf);
|
||||
Font *fnt = get_font("monotiny");
|
||||
Font *fnt = res_font("monotiny");
|
||||
|
||||
float x = crealf(pos);
|
||||
float y = cimagf(pos) + 80;
|
||||
|
@ -352,7 +352,7 @@ DEFINE_TASK(player_indicators) {
|
|||
indicators->plr = TASK_BIND(ARGS.plr);
|
||||
indicators->ent.draw_layer = LAYER_PLAYER_FOCUS;
|
||||
indicators->ent.draw_func = player_draw_indicators;
|
||||
indicators->sprites.focus = get_sprite("focus");
|
||||
indicators->sprites.focus = res_sprite("focus");
|
||||
|
||||
Player *plr = indicators->plr;
|
||||
|
||||
|
@ -520,7 +520,7 @@ static void player_powersurge_logic(Player *plr) {
|
|||
);
|
||||
|
||||
if(!(global.frames % 6) && plr->powersurge.bonus.discharge_range > 0) {
|
||||
Sprite *spr = get_sprite("part/powersurge_field");
|
||||
Sprite *spr = res_sprite("part/powersurge_field");
|
||||
double scale = 2 * plr->powersurge.bonus.discharge_range / spr->w;
|
||||
double angle = rng_angle();
|
||||
|
||||
|
@ -695,7 +695,7 @@ static bool player_powersurge(Player *plr) {
|
|||
play_sound("powersurge_start");
|
||||
|
||||
collect_all_items(1);
|
||||
stagetext_add("Power Surge!", plr->pos - 64 * I, ALIGN_CENTER, get_font("standard"), RGBA(0.75, 0.75, 0.75, 0.75), 0, 45, 10, 20);
|
||||
stagetext_add("Power Surge!", plr->pos - 64 * I, ALIGN_CENTER, res_font("standard"), RGBA(0.75, 0.75, 0.75, 0.75), 0, 45, 10, 20);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -766,7 +766,7 @@ static void player_powersurge_expired(Player *plr) {
|
|||
PowerSurgeBonus bonus;
|
||||
player_powersurge_calc_bonus(plr, &bonus);
|
||||
|
||||
Sprite *blast = get_sprite("part/blast_huge_halo");
|
||||
Sprite *blast = res_sprite("part/blast_huge_halo");
|
||||
float scale = 2 * bonus.discharge_range / blast->w;
|
||||
|
||||
play_sound("powersurge_end");
|
||||
|
@ -1534,7 +1534,7 @@ static void add_score_text(Player *plr, cmplx location, uint points, bool is_piv
|
|||
}
|
||||
|
||||
stxt = stagetext_add(
|
||||
NULL, location, ALIGN_CENTER, get_font("small"), &c,
|
||||
NULL, location, ALIGN_CENTER, res_font("small"), &c,
|
||||
timings.delay, timings.lifetime, timings.fadeintime, timings.fadeouttime
|
||||
);
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ int plrchar_player_anim_name(PlayerCharacter *pc, size_t bufsize, char buf[bufsi
|
|||
Animation *plrchar_player_anim(PlayerCharacter *pc) {
|
||||
char buf[64];
|
||||
plrchar_player_anim_name(pc, sizeof(buf), buf);
|
||||
return get_ani(buf);
|
||||
return res_anim(buf);
|
||||
}
|
||||
|
||||
int plrmode_repr(char *out, size_t outsize, PlayerMode *mode, bool internal) {
|
||||
|
|
|
@ -50,7 +50,7 @@ double marisa_common_property(Player *plr, PlrProperty prop) {
|
|||
|
||||
DEFINE_EXTERN_TASK(marisa_common_shot_forward) {
|
||||
Player *plr = TASK_BIND(ARGS.plr);
|
||||
ShaderProgram *bolt_shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *bolt_shader = res_shader("sprite_particle");
|
||||
|
||||
real damage = ARGS.damage;
|
||||
int delay = ARGS.delay;
|
||||
|
|
|
@ -190,15 +190,15 @@ static void marisa_laser_draw_lasers(EntityInterface *ent) {
|
|||
MarisaAController *ctrl = ENT_CAST(ent, MarisaAController);
|
||||
real t = global.frames;
|
||||
|
||||
ShaderProgram *shader = r_shader_get("marisa_laser");
|
||||
ShaderProgram *shader = res_shader("marisa_laser");
|
||||
Uniform *u_clr0 = r_shader_uniform(shader, "color0");
|
||||
Uniform *u_clr1 = r_shader_uniform(shader, "color1");
|
||||
Uniform *u_clr_phase = r_shader_uniform(shader, "color_phase");
|
||||
Uniform *u_clr_freq = r_shader_uniform(shader, "color_freq");
|
||||
Uniform *u_alpha = r_shader_uniform(shader, "alphamod");
|
||||
Uniform *u_length = r_shader_uniform(shader, "laser_length");
|
||||
Texture *tex0 = r_texture_get("part/marisa_laser0");
|
||||
Texture *tex1 = r_texture_get("part/marisa_laser1");
|
||||
Texture *tex0 = res_texture("part/marisa_laser0");
|
||||
Texture *tex1 = res_texture("part/marisa_laser1");
|
||||
FBPair *fbp_aux = stage_get_fbpair(FBPAIR_FG_AUX);
|
||||
Framebuffer *target_fb = r_framebuffer_current();
|
||||
|
||||
|
@ -260,8 +260,8 @@ static void marisa_laser_draw_lasers(EntityInterface *ent) {
|
|||
}
|
||||
|
||||
SpriteParams sp = {
|
||||
.sprite_ptr = get_sprite("part/smoothdot"),
|
||||
.shader_ptr = r_shader_get("sprite_default"),
|
||||
.sprite_ptr = res_sprite("part/smoothdot"),
|
||||
.shader_ptr = res_shader("sprite_default"),
|
||||
};
|
||||
|
||||
for(MarisaALaser *laser = ctrl->lasers.first; laser; laser = laser->next) {
|
||||
|
@ -339,7 +339,7 @@ TASK(marisa_laser_slave_shot, {
|
|||
Player *plr = ctrl->plr;
|
||||
MarisaASlave *slave = TASK_BIND(ARGS.slave);
|
||||
|
||||
Animation *fire_anim = get_ani("fire");
|
||||
Animation *fire_anim = res_anim("fire");
|
||||
AniSequence *fire_anim_seq = get_ani_sequence(fire_anim, "main");
|
||||
|
||||
MarisaALaser *active_laser = NULL;
|
||||
|
@ -402,8 +402,8 @@ TASK(marisa_laser_slave, {
|
|||
slave->ent.draw_func = marisa_laser_draw_slave;
|
||||
slave->ent.draw_layer = LAYER_PLAYER_SLAVE;
|
||||
slave->pos = plr->pos;
|
||||
slave->shader = r_shader_get("sprite_hakkero");
|
||||
slave->sprite = get_sprite("hakkero");
|
||||
slave->shader = res_shader("sprite_hakkero");
|
||||
slave->sprite = res_sprite("hakkero");
|
||||
|
||||
INVOKE_SUBTASK_WHEN(&ctrl->events.slaves_expired, common_set_bitflags,
|
||||
.pflags = &slave->alive,
|
||||
|
@ -521,8 +521,8 @@ TASK(marisa_laser_masterspark, { MarisaAController *ctrl; }) {
|
|||
|
||||
int t = 0;
|
||||
|
||||
Sprite *star_spr = get_sprite("part/maristar_orbit");
|
||||
Sprite *smoke_spr = get_sprite("part/smoke");
|
||||
Sprite *star_spr = res_sprite("part/maristar_orbit");
|
||||
Sprite *smoke_spr = res_sprite("part/smoke");
|
||||
|
||||
do {
|
||||
real bomb_progress = player_get_bomb_progress(plr);
|
||||
|
|
|
@ -180,7 +180,7 @@ TASK(marisa_star_slave_shot, {
|
|||
Player *plr = ctrl->plr;
|
||||
MarisaBSlave *slave = TASK_BIND(ARGS.slave);
|
||||
|
||||
ShaderProgram *shot_shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *shot_shader = res_shader("sprite_particle");
|
||||
real nphase = ARGS.phase / M_TAU;
|
||||
real damage = SHOT_SLAVE_DAMAGE;
|
||||
|
||||
|
@ -220,8 +220,8 @@ TASK(marisa_star_slave, {
|
|||
MarisaBSlave *slave = TASK_HOST_ENT(MarisaBSlave);
|
||||
slave->alive = 1;
|
||||
slave->pos = plr->pos;
|
||||
slave->shader = r_shader_get("sprite_hakkero");
|
||||
slave->sprite = get_sprite("hakkero");
|
||||
slave->shader = res_shader("sprite_hakkero");
|
||||
slave->sprite = res_sprite("hakkero");
|
||||
|
||||
slave->ent.draw_func = marisa_star_draw_slave;
|
||||
slave->ent.draw_layer = LAYER_PLAYER_SLAVE;
|
||||
|
@ -397,11 +397,11 @@ TASK(marisa_star_bomb_background, { MarisaBController *ctrl; }) {
|
|||
MarisaBController *ctrl = ARGS.ctrl;
|
||||
Player *plr = ctrl->plr;
|
||||
|
||||
ShaderProgram *bg_shader = r_shader_get("maristar_bombbg");
|
||||
ShaderProgram *bg_shader = res_shader("maristar_bombbg");
|
||||
Uniform *u_t = r_shader_uniform(bg_shader, "t");
|
||||
Uniform *u_decay = r_shader_uniform(bg_shader, "decay");
|
||||
Uniform *u_plrpos = r_shader_uniform(bg_shader, "plrpos");
|
||||
Texture *bg_tex = r_texture_get("marisa_bombbg");
|
||||
Texture *bg_tex = res_texture("marisa_bombbg");
|
||||
|
||||
do {
|
||||
WAIT_EVENT_OR_DIE(&stage_get_draw_events()->background_drawn);
|
||||
|
@ -476,10 +476,10 @@ TASK(marisa_star_controller, { BoxedPlayer plr; }) {
|
|||
ctrl->plr = TASK_BIND(ARGS.plr);
|
||||
TASK_HOST_EVENTS(ctrl->events);
|
||||
|
||||
ctrl->sprites.fairy_circle = get_sprite("fairy_circle");
|
||||
ctrl->sprites.lightningball = get_sprite("part/lightningball");
|
||||
ctrl->sprites.maristar_orbit = get_sprite("part/maristar_orbit");
|
||||
ctrl->sprites.stardust = get_sprite("part/stardust");
|
||||
ctrl->sprites.fairy_circle = res_sprite("fairy_circle");
|
||||
ctrl->sprites.lightningball = res_sprite("part/lightningball");
|
||||
ctrl->sprites.maristar_orbit = res_sprite("part/maristar_orbit");
|
||||
ctrl->sprites.stardust = res_sprite("part/stardust");
|
||||
|
||||
INVOKE_SUBTASK(marisa_star_power_handler, ctrl);
|
||||
INVOKE_SUBTASK(marisa_star_bomb_handler, ctrl);
|
||||
|
|
|
@ -62,7 +62,7 @@ TASK(reimu_ofuda_trail, { BoxedProjectile trail; }) {
|
|||
Projectile *reimu_common_ofuda_swawn_trail(Projectile *p) {
|
||||
Projectile *trail = PARTICLE(
|
||||
// .sprite_ptr = p->sprite,
|
||||
.sprite_ptr = get_sprite("proj/hghost"),
|
||||
.sprite_ptr = res_sprite("proj/hghost"),
|
||||
.color = &p->color,
|
||||
.timeout = 12,
|
||||
.pos = p->pos + p->move.velocity * 0.3,
|
||||
|
|
|
@ -197,7 +197,7 @@ static void reimu_spirit_bomb_impact_balls(cmplx pos, int count) {
|
|||
|
||||
for(int i = 0; i < count; i++) {
|
||||
PARTICLE(
|
||||
.sprite_ptr = get_sprite("proj/glowball"),
|
||||
.sprite_ptr = res_sprite("proj/glowball"),
|
||||
.shader = "sprite_bullet",
|
||||
.color = HSLA(3 * (float)i / count + offset, 1, 0.5, 0),
|
||||
.timeout = 60,
|
||||
|
@ -292,8 +292,8 @@ TASK(reimu_spirit_bomb_orb_visual, { BoxedProjectile orb; }) {
|
|||
Projectile *orb = TASK_BIND(ARGS.orb);
|
||||
DECLARE_ENT_ARRAY(Projectile, components, 3);
|
||||
|
||||
Sprite *glowball = get_sprite("proj/glowball");
|
||||
ShaderProgram *shader = r_shader_get("sprite_bullet");
|
||||
Sprite *glowball = res_sprite("proj/glowball");
|
||||
ShaderProgram *shader = res_shader("sprite_bullet");
|
||||
|
||||
for(int i = 0; i < components.capacity; ++i) {
|
||||
ENT_ARRAY_ADD(&components, PARTICLE(
|
||||
|
@ -377,7 +377,7 @@ TASK(reimu_spirit_bomb_orb, { BoxedPlayer plr; int index; real angle; }) {
|
|||
trail_vel *= 3 * circlestrength / cabs(trail_vel);
|
||||
|
||||
PARTICLE(
|
||||
.sprite_ptr = get_sprite("part/stain"),
|
||||
.sprite_ptr = res_sprite("part/stain"),
|
||||
// .color = reimu_spirit_orb_color(&(Color){0}, i),
|
||||
.color = HSLA(t/orb->timeout, 0.3, 0.3, 0.0),
|
||||
.pos = trail_pos,
|
||||
|
@ -468,8 +468,8 @@ static void reimu_spirit_draw_slave(EntityInterface *ent) {
|
|||
static ReimuASlave *reimu_spirit_create_slave(ReimuAController *ctrl, const Color *color) {
|
||||
Player *plr = ctrl->plr;
|
||||
ReimuASlave *slave = TASK_HOST_ENT(ReimuASlave);
|
||||
slave->sprite = get_sprite("yinyang");
|
||||
slave->shader = r_shader_get("sprite_yinyang");
|
||||
slave->sprite = res_sprite("yinyang");
|
||||
slave->shader = res_shader("sprite_yinyang");
|
||||
slave->pos = plr->pos;
|
||||
slave->color = *color;
|
||||
slave->ent.draw_layer = LAYER_PLAYER_SLAVE;
|
||||
|
@ -526,8 +526,8 @@ TASK(reimu_spirit_slave_needle_shot, {
|
|||
Player *plr = ARGS.ctrl->plr;
|
||||
ReimuASlave *slave = TASK_BIND(ARGS.slave);
|
||||
|
||||
ShaderProgram *shader = r_shader_get("sprite_particle");
|
||||
Sprite *particle_spr = get_sprite("part/stain");
|
||||
ShaderProgram *shader = res_shader("sprite_particle");
|
||||
Sprite *particle_spr = res_sprite("part/stain");
|
||||
|
||||
real damage = SHOT_SLAVE_NEEDLE_DMG;
|
||||
real delay = SHOT_SLAVE_NEEDLE_DELAY;
|
||||
|
@ -593,8 +593,8 @@ TASK(reimu_spirit_slave_homing_shot, {
|
|||
Player *plr = ARGS.ctrl->plr;
|
||||
ReimuASlave *slave = TASK_BIND(ARGS.slave);
|
||||
|
||||
ShaderProgram *shader = r_shader_get("sprite_particle");
|
||||
Sprite *particle_spr = get_sprite("part/stain");
|
||||
ShaderProgram *shader = res_shader("sprite_particle");
|
||||
Sprite *particle_spr = res_sprite("part/stain");
|
||||
cmplx vel = ARGS.vel;
|
||||
cmplx pdir = cnormalize(vel);
|
||||
|
||||
|
@ -766,7 +766,7 @@ TASK(reimu_spirit_shot_forward, { ReimuAController *ctrl; }) {
|
|||
ReimuAController *ctrl = ARGS.ctrl;
|
||||
Player *plr = ctrl->plr;
|
||||
real dir = 1;
|
||||
ShaderProgram *shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *shader = res_shader("sprite_particle");
|
||||
|
||||
for(;;) {
|
||||
WAIT_EVENT_OR_DIE(&plr->events.shoot);
|
||||
|
@ -798,7 +798,7 @@ TASK(reimu_spirit_shot_volley_bullet, { Player *plr; cmplx offset; cmplx vel; re
|
|||
|
||||
TASK(reimu_spirit_shot_volley, { ReimuAController *ctrl; }) {
|
||||
Player *plr = ARGS.ctrl->plr;
|
||||
ShaderProgram *shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *shader = res_shader("sprite_particle");
|
||||
|
||||
for(;;) {
|
||||
WAIT_EVENT_OR_DIE(&plr->events.shoot);
|
||||
|
|
|
@ -152,8 +152,8 @@ TASK(reimu_dream_bomb_barrage, { ReimuBController *ctrl; }) {
|
|||
ReimuBController *ctrl = ARGS.ctrl;
|
||||
Player *plr = ctrl->plr;
|
||||
|
||||
Sprite *spr_proj = get_sprite("proj/glowball");
|
||||
Sprite *spr_impact = get_sprite("part/blast");
|
||||
Sprite *spr_proj = res_sprite("proj/glowball");
|
||||
Sprite *spr_impact = res_sprite("part/blast");
|
||||
|
||||
int t = 0;
|
||||
|
||||
|
@ -424,7 +424,7 @@ TASK(reimu_dream_slave_shot, {
|
|||
Player *plr = ctrl->plr;
|
||||
ReimuBSlave *slave = TASK_BIND(ARGS.slave);
|
||||
cmplx vel = ARGS.vel;
|
||||
ShaderProgram *shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *shader = res_shader("sprite_particle");
|
||||
|
||||
for(;;) {
|
||||
WAIT_EVENT_OR_DIE(&plr->events.shoot);
|
||||
|
@ -450,8 +450,8 @@ TASK(reimu_dream_slave, {
|
|||
ReimuBSlave *slave = TASK_HOST_ENT(ReimuBSlave);
|
||||
slave->ent.draw_layer = LAYER_PLAYER_SLAVE;
|
||||
slave->ent.draw_func = reimu_dream_draw_slave;
|
||||
slave->sprite = get_sprite("yinyang"),
|
||||
slave->shader = r_shader_get("sprite_yinyang"),
|
||||
slave->sprite = res_sprite("yinyang"),
|
||||
slave->shader = res_shader("sprite_yinyang"),
|
||||
slave->pos = plr->pos;
|
||||
slave->alive = 1;
|
||||
|
||||
|
@ -564,7 +564,7 @@ TASK(reimu_dream_ofuda, { ReimuBController *ctrl; cmplx pos; cmplx vel; ShaderPr
|
|||
TASK(reimu_dream_shot_forward, { ReimuBController *ctrl; }) {
|
||||
ReimuBController *ctrl = ARGS.ctrl;
|
||||
Player *plr = ctrl->plr;
|
||||
ShaderProgram *ofuda_shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *ofuda_shader = res_shader("sprite_particle");
|
||||
|
||||
for(;;) {
|
||||
WAIT_EVENT_OR_DIE(&plr->events.shoot);
|
||||
|
@ -626,8 +626,8 @@ TASK(reimu_dream_controller, { BoxedPlayer plr; }) {
|
|||
ctrl->plr = TASK_BIND(ARGS.plr);
|
||||
TASK_HOST_EVENTS(ctrl->events);
|
||||
|
||||
ctrl->yinyang_shader = r_shader_get("sprite_yinyang");
|
||||
ctrl->yinyang_sprite = get_sprite("yinyang");
|
||||
ctrl->yinyang_shader = res_shader("sprite_yinyang");
|
||||
ctrl->yinyang_sprite = res_sprite("yinyang");
|
||||
|
||||
ctrl->ent.draw_func = reimu_dream_draw_gaps;
|
||||
ctrl->ent.draw_layer = LAYER_PLAYER_FOCUS;
|
||||
|
|
|
@ -71,10 +71,10 @@ void youmu_common_init_bomb_background(YoumuBombBGData *bg_data) {
|
|||
cfg.tex_params.wrap.t = TEX_WRAP_MIRROR;
|
||||
|
||||
bg_data->buffer = stage_add_background_framebuffer("Youmu bomb FB", 0.25, 1, 1, &cfg);
|
||||
bg_data->shader = r_shader_get("youmu_bomb_bg");
|
||||
bg_data->shader = res_shader("youmu_bomb_bg");
|
||||
bg_data->uniforms.petals = r_shader_uniform(bg_data->shader, "petals");
|
||||
bg_data->uniforms.time = r_shader_uniform(bg_data->shader, "time");
|
||||
bg_data->texture = r_texture_get("youmu_bombbg1");
|
||||
bg_data->texture = res_texture("youmu_bombbg1");
|
||||
}
|
||||
|
||||
static void capture_frame(Framebuffer *dest, Framebuffer *src) {
|
||||
|
|
|
@ -176,7 +176,7 @@ TASK(youmu_mirror_myon_proj, { cmplx pos; cmplx vel; real dmg; const Color *clr;
|
|||
trail_color.a = 0;
|
||||
color_mul_scalar(&trail_color, 0.075);
|
||||
|
||||
Sprite *trail_sprite = get_sprite("part/boss_shadow");
|
||||
Sprite *trail_sprite = res_sprite("part/boss_shadow");
|
||||
MoveParams trail_move = move_linear(ARGS.vel * 0.8);
|
||||
|
||||
for(int t = 1;; ++t) {
|
||||
|
@ -232,7 +232,7 @@ TASK(youmu_mirror_myon_shot, { YoumuAController *ctrl; }) {
|
|||
YoumuAController *ctrl = ARGS.ctrl;
|
||||
YoumuAMyon *myon = &ctrl->myon;
|
||||
Player *plr = ctrl->plr;
|
||||
ShaderProgram *shader = r_shader_get("sprite_youmu_myon_shot");
|
||||
ShaderProgram *shader = res_shader("sprite_youmu_myon_shot");
|
||||
|
||||
for(;;) {
|
||||
WAIT_EVENT_OR_DIE(&plr->events.shoot);
|
||||
|
@ -291,9 +291,9 @@ TASK(youmu_mirror_myon, { YoumuAController *ctrl; }) {
|
|||
YoumuAMyon *myon = &ctrl->myon;
|
||||
Player *plr = ctrl->plr;
|
||||
|
||||
myon->sprites.trail = get_sprite("part/myon");
|
||||
myon->sprites.smoke = get_sprite("part/smoke");
|
||||
myon->sprites.stardust = get_sprite("part/stardust");
|
||||
myon->sprites.trail = res_sprite("part/myon");
|
||||
myon->sprites.smoke = res_sprite("part/smoke");
|
||||
myon->sprites.stardust = res_sprite("part/stardust");
|
||||
|
||||
const real distance = 40;
|
||||
const real focus_rate = 1.0/30.0;
|
||||
|
@ -470,7 +470,7 @@ TASK(youmu_mirror_bomb_controller, { YoumuAController *ctrl; }) {
|
|||
ProjFlags pflags = PFLAG_MANUALANGLE | PFLAG_NOREFLECT;
|
||||
int t = 0;
|
||||
|
||||
ShaderProgram *silhouette_shader = r_shader_get("sprite_silhouette");
|
||||
ShaderProgram *silhouette_shader = res_shader("sprite_silhouette");
|
||||
|
||||
do {
|
||||
pos += vel;
|
||||
|
@ -515,7 +515,7 @@ TASK(youmu_mirror_bomb_postprocess, { YoumuAController *ctrl; }) {
|
|||
YoumuAMyon *myon = &ctrl->myon;
|
||||
CoEvent *pp_event = &stage_get_draw_events()->postprocess_before_overlay;
|
||||
|
||||
ShaderProgram *shader = r_shader_get("youmua_bomb");
|
||||
ShaderProgram *shader = res_shader("youmua_bomb");
|
||||
Uniform *u_tbomb = r_shader_uniform(shader, "tbomb");
|
||||
Uniform *u_myon = r_shader_uniform(shader, "myon");
|
||||
Uniform *u_fill_overlay = r_shader_uniform(shader, "fill_overlay");
|
||||
|
@ -558,7 +558,7 @@ TASK(youmu_mirror_bomb_handler, { YoumuAController *ctrl; }) {
|
|||
TASK(youmu_mirror_shot_forward, { YoumuAController *ctrl; }) {
|
||||
YoumuAController *ctrl = ARGS.ctrl;
|
||||
Player *plr = ctrl->plr;
|
||||
ShaderProgram *shader = r_shader_get("sprite_particle");
|
||||
ShaderProgram *shader = res_shader("sprite_particle");
|
||||
|
||||
for(int t = 0;;) {
|
||||
WAIT_EVENT_OR_DIE(&plr->events.shoot);
|
||||
|
@ -596,10 +596,10 @@ TASK(youmu_mirror_shot_forward, { YoumuAController *ctrl; }) {
|
|||
TASK(youmu_mirror_controller, { BoxedPlayer plr; }) {
|
||||
YoumuAController *ctrl = TASK_MALLOC(sizeof(*ctrl));
|
||||
ctrl->plr = TASK_BIND(ARGS.plr);
|
||||
ctrl->sprites.arc = get_sprite("part/arc");
|
||||
ctrl->sprites.stain = get_sprite("part/stain");
|
||||
ctrl->sprites.petal = get_sprite("part/petal");
|
||||
ctrl->sprites.blast_huge_halo = get_sprite("part/blast_huge_halo");
|
||||
ctrl->sprites.arc = res_sprite("part/arc");
|
||||
ctrl->sprites.stain = res_sprite("part/stain");
|
||||
ctrl->sprites.petal = res_sprite("part/petal");
|
||||
ctrl->sprites.blast_huge_halo = res_sprite("part/blast_huge_halo");
|
||||
|
||||
youmu_common_init_bomb_background(&ctrl->bomb_bg);
|
||||
|
||||
|
|
|
@ -561,13 +561,13 @@ TASK(youmu_haunting_bomb_handler, { YoumuBController *ctrl; }) {
|
|||
TASK(youmu_haunting_controller, { BoxedPlayer plr; }) {
|
||||
YoumuBController *ctrl = TASK_MALLOC(sizeof(*ctrl));
|
||||
ctrl->plr = TASK_BIND(ARGS.plr);
|
||||
ctrl->sprites.blast_huge_halo = get_sprite("part/blast_huge_halo");
|
||||
ctrl->sprites.blast_huge_rays = get_sprite("part/blast_huge_rays");
|
||||
ctrl->sprites.petal = get_sprite("part/petal");
|
||||
ctrl->sprites.smoothdot = get_sprite("part/smoothdot");
|
||||
ctrl->sprites.stardust = get_sprite("part/stardust");
|
||||
ctrl->sprites.youmu_slice = get_sprite("part/youmu_slice");
|
||||
ctrl->shot_shader = r_shader_get("sprite_particle");
|
||||
ctrl->sprites.blast_huge_halo = res_sprite("part/blast_huge_halo");
|
||||
ctrl->sprites.blast_huge_rays = res_sprite("part/blast_huge_rays");
|
||||
ctrl->sprites.petal = res_sprite("part/petal");
|
||||
ctrl->sprites.smoothdot = res_sprite("part/smoothdot");
|
||||
ctrl->sprites.stardust = res_sprite("part/stardust");
|
||||
ctrl->sprites.youmu_slice = res_sprite("part/youmu_slice");
|
||||
ctrl->shot_shader = res_shader("sprite_particle");
|
||||
|
||||
youmu_common_init_bomb_background(&ctrl->bomb_bg);
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ int portrait_get_base_sprite_name(const char *charname, const char *variant, siz
|
|||
Sprite *portrait_get_base_sprite(const char *charname, const char *variant) {
|
||||
char buf[BUFFER_SIZE];
|
||||
portrait_get_base_sprite_name(charname, variant, sizeof(buf), buf);
|
||||
return get_sprite(buf);
|
||||
return res_sprite(buf);
|
||||
}
|
||||
|
||||
void portrait_preload_base_sprite(const char *charname, const char *variant, ResourceFlags rflags) {
|
||||
|
@ -45,7 +45,7 @@ int portrait_get_face_sprite_name(const char *charname, const char *face, size_t
|
|||
Sprite *portrait_get_face_sprite(const char *charname, const char *face) {
|
||||
char buf[BUFFER_SIZE];
|
||||
portrait_get_face_sprite_name(charname, face, sizeof(buf), buf);
|
||||
return get_sprite(buf);
|
||||
return res_sprite(buf);
|
||||
}
|
||||
|
||||
void portrait_preload_face_sprite(const char *charname, const char *face, ResourceFlags rflags) {
|
||||
|
@ -91,7 +91,7 @@ void portrait_render(Sprite *s_base, Sprite *s_face, Sprite *s_out) {
|
|||
sp.pos.x = spr_w * 0.5f - sprite_padded_offset_x(s_base);
|
||||
sp.pos.y = spr_h * 0.5f - sprite_padded_offset_y(s_base);
|
||||
sp.color = RGBA(1, 1, 1, 1);
|
||||
sp.shader_ptr = r_shader_get("sprite_default"),
|
||||
sp.shader_ptr = res_shader("sprite_default"),
|
||||
r_draw_sprite(&sp);
|
||||
sp.blend = BLEND_PREMUL_ALPHA;
|
||||
sp.sprite_ptr = s_face;
|
||||
|
|
|
@ -53,7 +53,7 @@ static void process_projectile_args(ProjArgs *args, ProjArgs *defaults) {
|
|||
|
||||
if(!args->shader_ptr) {
|
||||
if(args->shader) {
|
||||
args->shader_ptr = r_shader_get(args->shader);
|
||||
args->shader_ptr = res_shader(args->shader);
|
||||
} else {
|
||||
args->shader_ptr = defaults->shader_ptr;
|
||||
}
|
||||
|
@ -859,7 +859,7 @@ Projectile *spawn_projectile_clear_effect(Projectile *proj) {
|
|||
v = proj->pos - proj->prevpos;
|
||||
}
|
||||
|
||||
Animation *ani = get_ani("part/bullet_clear");
|
||||
Animation *ani = res_anim("part/bullet_clear");
|
||||
AniSequence *seq = get_ani_sequence(ani, "main");
|
||||
|
||||
Sprite *sprite_ref = animation_get_frame(ani, seq, 0);
|
||||
|
@ -1226,11 +1226,11 @@ void projectiles_preload(void) {
|
|||
ht_create(&shader_sublayer_map);
|
||||
|
||||
for(uint i = 0; i < num_shaders; ++i) {
|
||||
ht_set(&shader_sublayer_map, r_shader_get(shaders[i |