Skip to content

Commit

Permalink
Fix some leaks and do some cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Vagabond committed Nov 25, 2024
1 parent d4fa6db commit bd1fd57
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 41 deletions.
1 change: 0 additions & 1 deletion src/engine.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ void engine_run(engine_init_flags *init_flags) {
// Handle other events
switch(e.type) {
case SDL_QUIT:
assert(false);
run = 0;
break;
case SDL_KEYDOWN:
Expand Down
7 changes: 3 additions & 4 deletions src/game/gui/textinput.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ typedef struct {

textinput_done_cb done_cb;
void *userdata;
text_object text_cache[3];
text_object text_cache[2];
} textinput;

static void textinput_render(component *c) {
Expand Down Expand Up @@ -56,13 +56,13 @@ static void textinput_render(component *c) {
text_render(&tb->text_cache[0], &tb->tconf, TEXT_DEFAULT, start_x + offset, c->y, c->w, c->h, "\x7F");
tb->tconf.halign = TEXT_CENTER;
} else {
text_render(&tb->text_cache[1], &tb->tconf, TEXT_DEFAULT, start_x + offset, c->y, c->w, c->h, "\x7F");
text_render(&tb->text_cache[0], &tb->tconf, TEXT_DEFAULT, start_x + offset, c->y, c->w, c->h, "\x7F");
}
} else if(component_is_disabled(c)) {
mode = TEXT_DISABLED;
}

text_render(&tb->text_cache[2], &tb->tconf, mode, c->x, c->y, c->w, c->h, str_c(&tb->text));
text_render(&tb->text_cache[1], &tb->tconf, mode, c->x, c->y, c->w, c->h, str_c(&tb->text));
}

// Start from ' '. Support 0-9, ' ', and A-Z.
Expand Down Expand Up @@ -266,6 +266,5 @@ component *textinput_create(const text_settings *tconf, int max_chars, const cha
widget_set_free_cb(c, textinput_free);
tb->text_cache[0].dynamic = true;
tb->text_cache[1].dynamic = true;
tb->text_cache[2].dynamic = true;
return c;
}
4 changes: 0 additions & 4 deletions src/game/scenes/mainmenu/menu_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,6 @@ component *menu_main_create(scene *s) {
menu_attach(menu, textbutton_create(&tconf, "HELP", NULL, COM_DISABLED, NULL, NULL));
menu_attach(menu, textbutton_create(&tconf, "DEMO", NULL, COM_ENABLED, mainmenu_demo, s));
menu_attach(menu, textbutton_create(&tconf, "SCOREBOARD", NULL, COM_ENABLED, mainmenu_soreboard, s));
#ifdef N64_BUILD
menu_attach(menu, textbutton_create(&tconf, "CREDITS", NULL, COM_ENABLED, mainmenu_quit, s));
#else
menu_attach(menu, textbutton_create(&tconf, "QUIT", NULL, COM_ENABLED, mainmenu_quit, s));
#endif
return menu;
}
55 changes: 27 additions & 28 deletions src/game/scenes/melee.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ typedef struct {
#define CURSORS_DONE(local) (local->cursor[0].done && local->cursor[1].done)
#define CURSOR_NOVA_SELECT(local, player) (local->cursor[player].row == 1 && local->cursor[player].column == 2)

static const char *p1_bio_prev = NULL;
static const char *p2_bio_prev = NULL;
static text_object text_cache[18];

typedef enum
{
PILOT_SELECT = 0,
Expand Down Expand Up @@ -94,6 +90,8 @@ typedef struct {
str wins_text_a;
str wins_text_b;

text_object text_cache[18];

// nova selection cheat
unsigned char har_selected[2][10];
unsigned char katana_down_count[2];
Expand All @@ -105,6 +103,8 @@ void melee_free(scene *scene) {
melee_local *local = scene_get_userdata(scene);
game_player *player2 = game_state_get_player(scene->gs, 1);

text_objects_free(local->text_cache, 18);

surface_free(&local->bg_player_stats);
surface_free(&local->bg_player_bio);
surface_free(&local->select_hilight);
Expand Down Expand Up @@ -424,9 +424,8 @@ void melee_input_tick(scene *scene) {
local->cursor[1].done = 0;
local->page = PILOT_SELECT;
// Invalidate texture objects.
text_objects_invalidate(text_cache, sizeof(text_cache) / sizeof(text_cache[0]));
p1_bio_prev = NULL;
p2_bio_prev = NULL;
text_objects_invalidate(local->text_cache,
sizeof(local->text_cache) / sizeof(local->text_cache[0]));
} else {
game_state_set_next(scene->gs, SCENE_MENU);
}
Expand Down Expand Up @@ -510,45 +509,45 @@ static void render_pilot_select(melee_local *local, bool player2_is_selectable)
tconf_black.cshadow = TEXT_SHADOW_BLACK;

// player bio
text_render(&text_cache[0], &tconf_green, TEXT_DEFAULT, 4, 66, 156, 34, lang_get(135 + current_a));
text_render(&local->text_cache[0], &tconf_green, TEXT_DEFAULT, 4, 66, 156, 34, lang_get(135 + current_a));

// player stats
text_render(&text_cache[1], &tconf_green, TEXT_DEFAULT, 74, 4, 85, 6, lang_get(216));
text_render(&text_cache[2], &tconf_green, TEXT_DEFAULT, 74, 22, 85, 6, lang_get(217));
text_render(&text_cache[3], &tconf_green, TEXT_DEFAULT, 74, 40, 85, 6, lang_get(218));
text_render(&local->text_cache[1], &tconf_green, TEXT_DEFAULT, 74, 4, 85, 6, lang_get(216));
text_render(&local->text_cache[2], &tconf_green, TEXT_DEFAULT, 74, 22, 85, 6, lang_get(217));
text_render(&local->text_cache[3], &tconf_green, TEXT_DEFAULT, 74, 40, 85, 6, lang_get(218));
component_render(local->bar_power[0]);
component_render(local->bar_agility[0]);
component_render(local->bar_endurance[0]);

object_render(&local->player2_placeholder);
if(player2_is_selectable) {
// player 2 name
text_render(&text_cache[4], &tconf_black, TEXT_DEFAULT, 320 - 66, 52, 66, 6, lang_get(20 + current_b));
text_render(&local->text_cache[4], &tconf_black, TEXT_DEFAULT, 320 - 66, 52, 66, 6, lang_get(20 + current_b));

video_draw(&local->bg_player_stats, 320 - 70 - local->bg_player_stats.w, 0);
video_draw(&local->bg_player_bio, 320 - local->bg_player_bio.w, 62);
// player bio
text_render(&text_cache[5], &tconf_green, TEXT_DEFAULT, 320 - local->bg_player_bio.w + 4, 66, 156, 34,
text_render(&local->text_cache[5], &tconf_green, TEXT_DEFAULT, 320 - local->bg_player_bio.w + 4, 66, 156, 34,
lang_get(135 + current_b));

// player stats
text_render(&text_cache[6], &tconf_green, TEXT_DEFAULT, 320 - 66 - local->bg_player_stats.w, 4, 85, 6,
text_render(&local->text_cache[6], &tconf_green, TEXT_DEFAULT, 320 - 66 - local->bg_player_stats.w, 4, 85, 6,
lang_get(216));
text_render(&text_cache[7], &tconf_green, TEXT_DEFAULT, 320 - 66 - local->bg_player_stats.w, 22, 85, 6,
text_render(&local->text_cache[7], &tconf_green, TEXT_DEFAULT, 320 - 66 - local->bg_player_stats.w, 22, 85, 6,
lang_get(217));
text_render(&text_cache[8], &tconf_green, TEXT_DEFAULT, 320 - 66 - local->bg_player_stats.w, 40, 85, 6,
text_render(&local->text_cache[8], &tconf_green, TEXT_DEFAULT, 320 - 66 - local->bg_player_stats.w, 40, 85, 6,
lang_get(218));

component_render(local->bar_power[1]);
component_render(local->bar_agility[1]);
component_render(local->bar_endurance[1]);
} else {
// 'choose your pilot'
text_render(&text_cache[9], &tconf_green, TEXT_DEFAULT, 160, 97, 160, 6, lang_get(187));
text_render(&local->text_cache[9], &tconf_green, TEXT_DEFAULT, 160, 97, 160, 6, lang_get(187));
}

// player 1 name
text_render(&text_cache[10], &tconf_black, TEXT_DEFAULT, 0, 52, 66, 6, lang_get(20 + current_a));
text_render(&local->text_cache[10], &tconf_black, TEXT_DEFAULT, 0, 52, 66, 6, lang_get(20 + current_a));

render_highlights(local, player2_is_selectable);
render_disabled_portraits(local->pilot_portraits);
Expand Down Expand Up @@ -592,11 +591,12 @@ static void render_har_select(melee_local *local, bool player2_is_selectable) {
tconf_black.cshadow = TEXT_SHADOW_BLACK;

// player 1 name
text_render(&text_cache[11], &tconf_black, TEXT_DEFAULT, 0, 52, 66, 6, lang_get(20 + local->pilot_id_a));
text_render(&local->text_cache[11], &tconf_black, TEXT_DEFAULT, 0, 52, 66, 6, lang_get(20 + local->pilot_id_a));

if(player2_is_selectable) {
// player 2 name
text_render(&text_cache[12], &tconf_black, TEXT_DEFAULT, 320 - 66, 52, 66, 6, lang_get(20 + local->pilot_id_b));
text_render(&local->text_cache[12], &tconf_black, TEXT_DEFAULT, 320 - 66, 52, 66, 6,
lang_get(20 + local->pilot_id_b));

// currently selected player
object_render(&local->big_portrait_2);
Expand All @@ -606,13 +606,14 @@ static void render_har_select(melee_local *local, bool player2_is_selectable) {
object_render(&local->har_player2);

// render HAR name (Har1 VS. Har2)
text_render(&text_cache[13], &tconf_black, TEXT_DEFAULT, 80, 107, 150, 6, str_c(&local->vs_text));
text_render(&local->text_cache[13], &tconf_black, TEXT_DEFAULT, 80, 107, 150, 6, str_c(&local->vs_text));
} else {
// 'choose your Robot'
text_render(&text_cache[14], &tconf_green, TEXT_DEFAULT, 160, 97, 160, 6, lang_get(186));
text_render(&local->text_cache[14], &tconf_green, TEXT_DEFAULT, 160, 97, 160, 6, lang_get(186));

// render HAR name
text_render(&text_cache[15], &tconf_black, TEXT_DEFAULT, 120, 107, 60, 6, har_get_name(CURSOR_INDEX(local, 0)));
text_render(&local->text_cache[15], &tconf_black, TEXT_DEFAULT, 120, 107, 60, 6,
har_get_name(CURSOR_INDEX(local, 0)));
}
}

Expand All @@ -635,9 +636,9 @@ void melee_render(scene *scene) {

if(player2->selectable) {
int text_x = 8;
text_render(&text_cache[16], &tconf_black, TEXT_DEFAULT, text_x, 107, 50, 6, str_c(&local->wins_text_a));
text_render(&local->text_cache[16], &tconf_black, TEXT_DEFAULT, text_x, 107, 50, 6, str_c(&local->wins_text_a));
text_x = 312 - text_width(&tconf_black, str_c(&local->wins_text_b));
text_render(&text_cache[17], &tconf_black, TEXT_DEFAULT, text_x, 107, 50, 6, str_c(&local->wins_text_b));
text_render(&local->text_cache[17], &tconf_black, TEXT_DEFAULT, text_x, 107, 50, 6, str_c(&local->wins_text_b));
}
}

Expand Down Expand Up @@ -718,11 +719,9 @@ static void load_hars(scene *scene, melee_local *local, bool player2_is_selectab

int melee_create(scene *scene) {
// Init local data
p1_bio_prev = NULL;
p2_bio_prev = NULL;
melee_local *local = omf_calloc(1, sizeof(melee_local));
scene_set_userdata(scene, local);
memset(text_cache, 0, sizeof(text_cache));
memset(local->text_cache, 0, sizeof(local->text_cache));

local->cursor[1].row = 0;
local->cursor[1].column = 4;
Expand Down
1 change: 1 addition & 0 deletions src/game/scenes/scoreboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ typedef struct scoreboard_local_t {

void scoreboard_free(scene *scene) {
scoreboard_local *local = scene_get_userdata(scene);
text_objects_free(local->text_cache, 22);
omf_free(local);
scene_set_userdata(scene, local);
}
Expand Down
5 changes: 1 addition & 4 deletions src/game/scenes/vs.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,8 @@ void cb_vs_destroy_object(object *parent, int id, void *userdata) {

void vs_free(scene *scene) {
vs_local *local = scene_get_userdata(scene);
size_t cache_size = sizeof(local->text_cache) / sizeof(local->text_cache[0]);
for(size_t i = 0; i < cache_size; i++) {
local->text_cache[i].dirty = true;
}

text_objects_free(local->text_cache, 34);
dialog_free(&local->quit_dialog);
dialog_free(&local->too_pathetic_dialog);
surface_free(&local->arena_select_bg);
Expand Down

0 comments on commit bd1fd57

Please sign in to comment.