void wid_game_map_client_wid_destroy (void) { if (client_level) { LOG("Client: Destroy game level"); level_destroy(&client_level, false /* keep players */); } if (wid_game_map_client_window) { LOG("Client: Destroy game window"); wid_player_info_hide(true /* fast */); wid_player_inventory_hide(true /* fast */); wid_player_action_hide(true /* fast */, true /* player quit */); wid_destroy(&wid_game_map_client_window); } if (wid_scoreline_container_top) { wid_destroy(&wid_scoreline_container_top); } if (wid_scoreline_container_bot) { wid_destroy(&wid_scoreline_container_bot); } }
static void wid_intro_restart_callback_yes (widp wid) { wid_destroy(&wid_intro_restart_popup); LOG("Restart yes selected"); restart(); }
void wid_intro_fini (void) { if (wid_intro_init_done) { wid_intro_init_done = false; if (wid_intro) { wid_destroy(&wid_intro); wid_intro_menu_destroy(); wid_destroy_in(wid_intro_title, wid_hide_delay * 2); } } }
static void wid_intro_menu_destroy (void) { if (!wid_intro_menu) { return; } wid_menu_ctx *ctx = (typeof(ctx)) wid_get_context(wid_intro_menu); verify(ctx); /* * Save the focus so when we remake the menu we are at the same entry. */ saved_focus = ctx->focus; wid_destroy(&wid_intro_menu); }
void wid_game_map_client_hide (void) { if (wid_game_map_client_window) { LOG("Client: Map hide"); wid_player_info_hide(true /* fast */); wid_player_inventory_hide(true /* fast */); wid_player_action_hide(true /* fast */, true /* player quit */); wid_hide(wid_game_map_client_window, 0); wid_detach_from_grid(wid_game_map_client_grid_container); wid_destroy_grid(wid_game_map_client_grid_container); wid_destroy(&wid_game_map_client_grid_container); wid_chat_hide(); } }
void wid_game_map_client_score_update (levelp level, uint8_t redo) { /* * Huge hack - we don't send ping/pong in single player mode, so * we don't get the level name. */ if (single_player_mode) { level = server_level; } if (!player) { return; } if (player->stats.pclass[0]) { wid_player_action_hide(true /* fast */, false /* player quit */); wid_player_action_visible(&player->stats, true /* fast */); } if (redo) { if (wid_scoreline_container_top) { wid_destroy(&wid_scoreline_container_top); } } uint8_t update; if (wid_scoreline_container_top) { update = true; } else { update = false; } /* * Create the area for the scores at the top. */ if (!update) { fpoint tl; fpoint br; tl.x = 0.7; tl.y = 0.0; br.x = 1.0; br.y = 1.0; wid_scoreline_container_top = wid_new_container(wid_game_map_client_window, "scoreline top"); wid_set_no_shape(wid_scoreline_container_top); wid_set_tl_br_pct(wid_scoreline_container_top, tl, br); wid_set_color(wid_scoreline_container_top, WID_COLOR_TL, BLACK); wid_set_color(wid_scoreline_container_top, WID_COLOR_BG, BLACK); wid_set_color(wid_scoreline_container_top, WID_COLOR_BR, BLACK); } double score_x = 0.78; double cash_x = 0.88; double player_y_offset = 0.17; // player start y double next_player_y_delta = 0.1; double score_and_cash_title_offset = 0.025; double score_and_cash_value_offset = 0.055; /* * Print the score. */ for (;;) { msg_player_state *p = client_get_player(); /* * Experience */ char tmp[20]; snprintf(tmp, sizeof(tmp), "%05u", p->stats.xp); static widp wid_score_container; if (!update) { wid_set_no_shape( wid_textbox(wid_scoreline_container_top, &wid_score, tmp, score_x, player_y_offset, med_font)); wid_score_container = wid_score; } else { wid_set_text(wid_score_container, tmp); wid_set_text_outline(wid_score_container, true); } /* * cash */ snprintf(tmp, sizeof(tmp), "%05u", p->stats.cash); static widp wid_cash_container; if (!update) { wid_set_no_shape( wid_textbox(wid_scoreline_container_top, &wid_cash, tmp, cash_x, player_y_offset, med_font)); wid_cash_container = wid_cash; } else { wid_set_text(wid_cash_container, tmp); wid_set_text_outline(wid_cash_container, true); } if (update) { break; } /* * Score title */ widp wid_score_title_container; wid_score_title_container = wid_textbox( wid_scoreline_container_top, &wid_score_title, "XP", score_x, player_y_offset - score_and_cash_title_offset, med_font); wid_set_no_shape(wid_score_title_container); /* * cash title */ widp wid_cash_title_container; wid_cash_title_container = wid_textbox( wid_scoreline_container_top, &wid_cash_title, "$$$", cash_x, player_y_offset - score_and_cash_title_offset, med_font); wid_set_no_shape(wid_cash_title_container); /* * Score title */ widp wid_name_title_container; char *name_title; /* * Just print the name, don't need the class as well. */ if (p->stats.pname[0]) { name_title = dynprintf("%%%%fg=cyan$%s", p->stats.pname); } else { name_title = 0; } wid_name_title_container = wid_textbox( wid_scoreline_container_top, &wid_name_title, name_title ? name_title : "No player", (score_x + cash_x) / 2, player_y_offset - score_and_cash_value_offset, med_font); if (name_title) { myfree(name_title); } wid_set_no_shape(wid_name_title_container); wid_set_color(wid_score, WID_COLOR_TEXT, RED); wid_set_color(wid_cash, WID_COLOR_TEXT, GOLD); wid_set_color(wid_score_title, WID_COLOR_TEXT, RED); wid_set_color(wid_cash_title, WID_COLOR_TEXT, GOLD); player_y_offset += next_player_y_delta; break; } if (update) { if (global_config.server_current_players > 1) { wid_raise(wid_chat_window); wid_visible(wid_chat_window, 0); } return; } /* * Print the level title. */ if (level_get_title(level) && strcasecmp(level_get_title(level), "(null)")) { widp wid_level_container; wid_level_container = wid_textbox(wid_scoreline_container_top, &wid_level, level_get_title(level), (score_x + cash_x) / 2.0, 0.02, med_font); wid_set_no_shape(wid_level_container); wid_set_color(wid_level, WID_COLOR_TEXT, WHITE); } /* * Print the level. */ if (client_level) { level_pos_t level_pos = level_get_level_pos(client_level); char *tmp = dynprintf("%%%%fg=green$Depth %d.%d", level_pos.y, level_pos.x); widp wid_level_container; wid_level_container = wid_textbox(wid_scoreline_container_top, &wid_level, tmp, (score_x + cash_x) / 2.0, 0.05, med_font); myfree(tmp); wid_set_no_shape(wid_level_container); wid_set_color(wid_level, WID_COLOR_TEXT, WHITE); } if (client_level) { uint32_t seed = level_get_seed(client_level); if (seed) { char *tmp = dynprintf("%%%%fg=green$Level %u", seed); widp wid_level_container; wid_level_container = wid_textbox(wid_scoreline_container_top, &wid_level, tmp, (score_x + cash_x) / 2.0, 0.08, med_font); myfree(tmp); wid_set_no_shape(wid_level_container); wid_set_color(wid_level, WID_COLOR_TEXT, WHITE); } } wid_raise(wid_scoreline_container_top); wid_update(wid_scoreline_container_top); wid_update_mouse(); wid_set_focus(wid_game_map_client_grid_container); if (global_config.server_current_players > 1) { wid_raise(wid_chat_window); wid_visible(wid_chat_window, 0); } }
static void wid_intro_restart_callback_no (widp wid) { wid_destroy(&wid_intro_restart_popup); wid_intro_visible(); }
static void wid_intro_help_destroy (void) { wid_destroy(&wid_intro_help); }
static void wid_intro_quit_callback_yes (widp wid) { wid_destroy(&wid_intro_quit_popup); sdl_exit(); }