void print_inventory(struct Message *message) { int i = get_pindex(message->sender_nick); int j; char out[MAX_MESSAGE_BUFFER]; char temp[100]; sprintf(out, "PRIVMSG %s :", message->receiver); for (j = 0; j < (MAX_INVENTORY_SLOTS - dawn->players[i].available_slots); j++) { if (j % 9 == 0) { strcat(out, "\r\n"); add_msg(out, strlen(out)); sprintf(out, "PRIVMSG %s :", message->receiver); } temp[0] = '\0'; sprintf(temp, "[%s%d%s%s] - %s%s%s ", is_equipped(i, j) ? IRC_GREEN : IRC_RED, j, IRC_NORMAL, is_favorite(i, j) ? IRC_PURPLE"*"IRC_NORMAL : "", is_new(i, j) ? IRC_RED"["IRC_NORMAL : "", dawn->players[i].inventory[j].name, is_new(i, j) ? IRC_RED"]"IRC_NORMAL : ""); strcat(out, temp); } sprintf(temp, " - Available slots: %d", dawn->players[i].available_slots); strcat(out, temp); strcat(out, "\r\n"); add_msg(out, strlen(out)); }
int Menu_Boot_Options(struct discHdr *header) { int ret_val = 0; if (CFG.disable_options) return 0; struct Game_CFG_2 *game_cfg2 = NULL; struct Game_CFG *game_cfg = NULL; int opt_saved, opt_ios_reload; int redraw_cover = 0; int rows, cols, win_size; CON_GetMetrics(&cols, &rows); if ((win_size = rows-9) < 3) win_size = 3; Con_Clear(); FgColor(CFG.color_header); printf_x(gt("Selected Game")); printf(":"); __console_flush(0); printf(" (%.6s)\n", header->id); DefaultColor(); printf(" %s %s\n\n", CFG.cursor_space, __Menu_PrintTitle(get_title(header))); __console_flush(0); // load_dolmenu((char*)header->id); game_cfg2 = CFG_get_game(header->id); if (!game_cfg2) { printf(gt("ERROR game opt")); printf("\n"); sleep(5); return 0; } game_cfg = &game_cfg2->curr; struct Menu menu; const int NUM_OPT = 16; char active[NUM_OPT]; menu_init(&menu, NUM_OPT); for (;;) { /* // fat on 249? if (wbfs_part_fs && !disc) { if (!is_ios_idx_mload(game_cfg->ios_idx)) { game_cfg->ios_idx = CFG_IOS_222_MLOAD; } } */ menu_init_active(&menu, active, sizeof(active)); opt_saved = game_cfg2->is_saved; // if not mload disable block ios reload opt opt_ios_reload = game_cfg->block_ios_reload; // if not ocarina and not wiird, deactivate hooks if (!game_cfg->ocarina && !CFG.wiird) { active[11] = 0; } //if admin lock is off or they're not in admin // mode then they can't hide/unhide games if (!CFG.admin_lock || CFG.admin_mode_locked) { active[14] = 0; } //These things shouldn't be changed if using a disc...maybe active[0] = 0; active[8] = 0; active[9] = 0; active[14] = 0; Con_Clear(); FgColor(CFG.color_header); printf_x(gt("Selected Game")); printf(":"); printf(" (%.6s)\n", header->id); DefaultColor(); printf(" %s %s\n\n", CFG.cursor_space, __Menu_PrintTitle(get_title(header))); FgColor(CFG.color_header); printf_x(gt("Game Options: %s"), CFG_is_changed(header->id) ? gt("[ CHANGED ]") : opt_saved ? gt("[ SAVED ]") : ""); printf("\n"); DefaultColor(); char c1 = '<', c2 = '>'; //if (opt_saved) { c1 = '['; c2 = ']'; } const char *str_vpatch[3]; str_vpatch[0] = gt("Off"); str_vpatch[1] = gt("On"); str_vpatch[2] = gt("All"); // start menu draw menu_begin(&menu); menu_jump_active(&menu); #define PRINT_OPT_S(N,V) \ printf("%s%c %s %c\n", con_align(N,18), c1, V, c2) #define PRINT_OPT_A(N,V) \ printf("%s%c%s%c\n", con_align(N,18), c1, V, c2) #define PRINT_OPT_B(N,V) \ PRINT_OPT_S(N,(V?gt("On"):gt("Off"))) menu_window_begin(&menu, win_size, NUM_OPT); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Favorite:"), is_favorite(header->id) ? gt("Yes") : gt("No")); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Language:"), languages[game_cfg->language]); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Video:"), videos[game_cfg->video]); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Video Patch:"), str_vpatch[game_cfg->video_patch]); if (menu_window_mark(&menu)) PRINT_OPT_B("VIDTV:", game_cfg->vidtv); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Country Fix:"), game_cfg->country_patch); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Anti 002 Fix:"), game_cfg->fix_002); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Block IOS Reload:"), opt_ios_reload); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Ocarina (cheats):"), game_cfg->ocarina); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Hook Type:"), hook_name[game_cfg->hooktype]); if (menu_window_mark(&menu)) PRINT_OPT_A(gt("Cheat Codes:"), gt("Manage")); if (menu_window_mark(&menu)) printf("%s%s\n", con_align(gt("Cover Image:"), 18), imageNotFound ? gt("< DOWNLOAD >") : gt("[ FOUND ]")); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Hide Game:"), is_hide_game(header->id) ? gt("Yes") : gt("No")); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Write Playlog:"), game_cfg->write_playlog); DefaultColor(); menu_window_end(&menu, cols); printf_h(gt("Press %s to start game"), (button_names[CFG.button_confirm.num])); printf("\n"); bool need_save = !opt_saved || CFG_is_changed(header->id); if (need_save) printf_h(gt("Press %s to save options"), (button_names[CFG.button_save.num])); else printf_h(gt("Press %s to discard options"), (button_names[CFG.button_save.num])); printf("\n"); printf_h(gt("Press %s for global options"), (button_names[CFG.button_other.num])); DefaultColor(); __console_flush(0); if (redraw_cover) { Gui_DrawCover(header->id); redraw_cover = 0; } u32 buttons = Wpad_WaitButtonsRpt(); int change = 0; menu_move_active(&menu, buttons); if (buttons & WPAD_BUTTON_LEFT) change = -1; if (buttons & WPAD_BUTTON_RIGHT) change = +1; if (change) { switch (menu.current) { case 0: printf("\n\n"); printf_x(gt("Saving Settings... ")); __console_flush(0); if (set_favorite(header->id, change > 0)) { printf(gt("OK")); } else { printf(gt("ERROR")); sleep(1); } __console_flush(0); Gui_DrawCover(header->id); break; case 1: CHANGE(game_cfg->language, CFG_LANG_MAX); break; case 2: CHANGE(game_cfg->video, CFG_VIDEO_MAX); break; case 3: CHANGE(game_cfg->video_patch, 2); break; case 4: CHANGE(game_cfg->vidtv, 1); break; case 5: CHANGE(game_cfg->country_patch, 1); break; case 6: CHANGE(game_cfg->fix_002, 1); break; case 7: CHANGE(game_cfg->block_ios_reload, 1); break; case 8: CHANGE(game_cfg->ocarina, 1); break; case 9: CHANGE(game_cfg->hooktype, NUM_HOOK-1); break; case 10: Menu_Cheats(header); break; case 11: printf("\n\n"); Download_Cover((char*)header->id, change > 0, true); Cache_Invalidate(); Gui_DrawCover(header->id); Menu_PrintWait(); break; case 12: // hide game printf("\n\n"); printf_x(gt("Saving Settings... ")); __console_flush(0); if (set_hide_game(header->id, change > 0)) { printf(gt("OK")); } else { printf(gt("ERROR")); sleep(1); } __console_flush(0); Gui_DrawCover(header->id); break; case 13: CHANGE(game_cfg->write_playlog, 1); break; } } if (buttons & CFG.button_confirm.mask) { CFG.confirm_start = 0; Menu_Boot(); break; } if (buttons & CFG.button_save.mask) { bool ret; printf("\n\n"); if (need_save) { ret = CFG_save_game_opt(header->id); if (ret) { printf_x(gt("Options saved for this game.")); } else printf(gt("Error saving options!")); } else { ret = CFG_discard_game_opt(header->id); if (ret) printf_x(gt("Options discarded for this game.")); else printf(gt("Error discarding options!")); } sleep(1); } // HOME button if (buttons & CFG.button_exit.mask) { Handle_Home(0); } if (buttons & CFG.button_other.mask) { ret_val = 1; break; } if (buttons & CFG.button_cancel.mask) break; } CFG_release_game(game_cfg2); return ret_val; }
void __Menu_ShowList(void) { FgColor(CFG.color_header); if (enable_favorite) { printf_x(gt("Favorite Games")); printf(":\n"); } else { if (!CFG.hide_header) { printf_x(gt("Select the game you want to boot")); printf(":\n"); } } DefaultColor(); if (CFG.console_mark_page && gameStart > 0) { printf(" %s +", CFG.cursor_space); } printf("\n"); /* No game list*/ if (gameCnt) { u32 cnt; /* Print game list */ for (cnt = gameStart; cnt < gameCnt; cnt++) { struct discHdr *header = &gameList[cnt]; /* Entries per page limit reached */ if ((cnt - gameStart) >= ENTRIES_PER_PAGE) break; if (gameSelected == cnt) { FgColor(CFG.color_selected_fg); BgColor(CFG.color_selected_bg); Con_ClearLine(); } else { DefaultColor(); } /* Print entry */ //printf(" %2s %s\n", (gameSelected == cnt) ? ">>" : " ", char *title = __Menu_PrintTitle(get_title(header)); // cursor printf(" %s", (gameSelected == cnt) ? CFG.cursor : CFG.cursor_space); // favorite mark printf("%s", (CFG.console_mark_favorite && is_favorite(header->id)) ? CFG.favorite : " "); // title printf("%s", title); // saved mark if (CFG.console_mark_saved) { printf("%*s", (MAX_CHARACTERS - con_len(title)), (CFG_is_saved(header->id)) ? CFG.saved : " "); } printf("\n"); } DefaultColor(); if (CFG.console_mark_page && cnt < gameCnt) { printf(" %s +", CFG.cursor_space); } else { printf(" %s ", CFG.cursor_space); } //if (CFG.hide_hddinfo) { FgColor(CFG.color_footer); BgColor(CONSOLE_BG_COLOR); int num_page = 1 + (gameCnt - 1) / ENTRIES_PER_PAGE; int cur_page = 1 + gameSelected / ENTRIES_PER_PAGE; printf(" %-*.*s %d/%d", MAX_CHARACTERS - 8, MAX_CHARACTERS - 8, action_string, cur_page, num_page); action_string[0] = 0; //} } else { printf(" "); printf(gt("%s No games found!!"), CFG.cursor); printf("\n"); } /* Print free/used space */ FgColor(CFG.color_footer); BgColor(CONSOLE_BG_COLOR); if (!CFG.hide_footer) { printf("\n"); // (B) GUI (1) Options (2) Favorites // B: GUI 1: Options 2: Favorites //char c_gui = 'B', c_opt = '1'; //if (CFG.buttons == CFG_BTN_OPTIONS_B) { // c_gui = '1'; c_opt = 'B'; //} printf_(""); if (CFG.gui && CFG.button_gui) { printf("%s: GUI ", (button_names[CFG.button_gui])); } if (!CFG.disable_options && CFG.button_opt) { printf("%s: Options ", (button_names[CFG.button_opt])); } if (CFG.button_fav) { printf("%s: Favorites", (button_names[CFG.button_fav])); } } if (CFG.db_show_info) { printf("\n"); //load game info from XML - lustar __Menu_ShowGameInfo(false, gameList[gameSelected].id); } DefaultColor(); __console_flush(0); }