From 70b58f26fdf750e17d01dac5323b80de16b0160c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 2 Jun 2014 16:34:17 +0200 Subject: [PATCH] (Lakka) Display some fake settings --- frontend/menu/backend/menu_lakka_backend.c | 14 +- frontend/menu/disp/lakka.c | 156 ++++++++++++++++++--- media/lakka/resume.png | Bin 900 -> 857 bytes media/lakka/subsetting.png | Bin 0 -> 1780 bytes 4 files changed, 149 insertions(+), 21 deletions(-) create mode 100644 media/lakka/subsetting.png diff --git a/frontend/menu/backend/menu_lakka_backend.c b/frontend/menu/backend/menu_lakka_backend.c index f623b4f059..659d167fa7 100644 --- a/frontend/menu/backend/menu_lakka_backend.c +++ b/frontend/menu/backend/menu_lakka_backend.c @@ -86,10 +86,10 @@ static int menu_lakka_iterate(unsigned action) active_category->active_item++; lakka_switch_items(); } - if (depth == 1 && - (active_item->active_subitem < active_item->num_subitems -1) && - (g_extern.main_is_init && !g_extern.libretro_dummy) && - strcmp(g_extern.fullpath, active_item->rom) == 0) + if (depth == 1 // if we are on subitems level + && active_item->active_subitem < active_item->num_subitems -1 // and we do not exceed the number of subitems + && (menu_active_category == 0 // and we are in settings or a rom is launched + || (active_item->active_subitem < active_item->num_subitems -1) && (g_extern.main_is_init && !g_extern.libretro_dummy) && strcmp(g_extern.fullpath, active_item->rom) == 0)) { active_item->active_subitem++; lakka_switch_subitems(); @@ -153,11 +153,15 @@ static int menu_lakka_iterate(unsigned action) break; } } - else if (depth == 0 && active_category->num_items) + else if (depth == 0 && active_item->num_subitems) { lakka_open_submenu(); depth = 1; } + else if (depth == 0 && menu_active_category == 0 && active_item->active_subitem == 1) // Hardcoded "Quit" item index + { + printf("EXIT\n"); + } break; case RGUI_ACTION_CANCEL: diff --git a/frontend/menu/disp/lakka.c b/frontend/menu/disp/lakka.c index c3e9c75446..c7a35cd4aa 100644 --- a/frontend/menu/disp/lakka.c +++ b/frontend/menu/disp/lakka.c @@ -85,6 +85,8 @@ GLfloat font_color_dark[16]; GLuint texture; GLuint settings_icon; +GLuint setting_icon; +GLuint subsetting_icon; GLuint arrow_icon; GLuint run_icon; GLuint resume_icon; @@ -838,22 +840,24 @@ static void lakka_frame(void) else if (k == 0) { lakka_draw_icon(gl, - run_icon, + subitem->icon, 156 + HSPACING*(i+2) + all_categories_x - dim/2.0, 300 + subitem->y + dim/2.0, subitem->alpha, 0, subitem->zoom); lakka_draw_text(gl, - &run_label, - 156 + HSPACING*(i+2) + all_categories_x + dim/2.0, + &subitem->out, + 156 + HSPACING * (i+2) + all_categories_x + dim/2.0, 300 + subitem->y + 15, 1, subitem->alpha); } - else if (g_extern.main_is_init && + else if ( // if we are in settings or a rom is launched + menu_active_category == 0 || + (g_extern.main_is_init && !g_extern.libretro_dummy && - strcmp(g_extern.fullpath, active_category->items[active_category->active_item].rom) == 0) + strcmp(g_extern.fullpath, active_category->items[active_category->active_item].rom) == 0)) { lakka_draw_icon(gl, subitem->icon, @@ -868,7 +872,6 @@ static void lakka_frame(void) 300 + subitem->y + 15, 1, subitem->alpha); - /*end*/ } } } @@ -1106,17 +1109,132 @@ void lakka_init_settings(void) menu_category_t *category = (menu_category_t*)&categories[0]; strlcpy(category->name, "Settings", sizeof(category->name)); - category->icon = settings_icon; category->alpha = 1.0; category->zoom = C_ACTIVE_ZOOM; category->active_item = 0; category->num_items = 0; category->items = (menu_item_t*)calloc(category->num_items, sizeof(menu_item_t)); + int j, k; + + // General options item + + j = 0; + category->num_items++; + category->items = (menu_item_t*)realloc(category->items, category->num_items * sizeof(menu_item_t)); + + menu_item_t *item0 = (menu_item_t*)&category->items[j]; + + strlcpy(item0->name, "General Options", sizeof(item0->name)); + item0->alpha = j ? 0.5 : 1.0; + item0->zoom = j ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM; + item0->y = j ? VSPACING*(3+j) : VSPACING*2.4; + item0->active_subitem = 0; + item0->num_subitems = 0; + + // General options subitems + + k = 0; + item0->num_subitems++; + //item0->subitems = (menu_subitem_t*)realloc(item0->subitems, item0->num_subitems * sizeof(menu_subitem_t)); + item0->subitems = (menu_subitem_t*)calloc(item0->num_subitems, sizeof(menu_subitem_t)); + + menu_subitem_t *subitem0 = (menu_subitem_t*)&item0->subitems[k]; + + strlcpy(subitem0->name, "Libretro Logging Level", sizeof(subitem0->name)); + subitem0->alpha = k ? 1.0 : 0.5; + subitem0->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM; + subitem0->y = k ? VSPACING * (3+k) : VSPACING * 2.4; + + k = 1; + item0->num_subitems++; + item0->subitems = (menu_subitem_t*)realloc(item0->subitems, item0->num_subitems * sizeof(menu_subitem_t)); + //item0->subitems = (menu_subitem_t*)calloc(item0->num_subitems, sizeof(menu_subitem_t)); + + menu_subitem_t *subitem1 = (menu_subitem_t*)&item0->subitems[k]; + + strlcpy(subitem1->name, "Logging Verbosity", sizeof(subitem1->name)); + subitem1->alpha = k ? 1.0 : 0.5; + subitem1->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM; + subitem1->y = k ? VSPACING * (3+k) : VSPACING * 2.4; + + k = 2; + item0->num_subitems++; + item0->subitems = (menu_subitem_t*)realloc(item0->subitems, item0->num_subitems * sizeof(menu_subitem_t)); + //item0->subitems = (menu_subitem_t*)calloc(item0->num_subitems, sizeof(menu_subitem_t)); + + menu_subitem_t *subitem2 = (menu_subitem_t*)&item0->subitems[k]; + + strlcpy(subitem2->name, "Configuration Save On Exit", sizeof(subitem2->name)); + subitem2->alpha = k ? 1.0 : 0.5; + subitem2->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM; + subitem2->y = k ? VSPACING * (3+k) : VSPACING * 2.4; + + // Quit item + + j = 1; + category->num_items++; + category->items = (menu_item_t*)realloc(category->items, category->num_items * sizeof(menu_item_t)); + + menu_item_t *item1 = (menu_item_t*)&category->items[j]; + + strlcpy(item1->name, "Quit RetroArch", sizeof(item1->name)); + item1->alpha = j ? 0.5 : 1.0; + item1->zoom = j ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM; + item1->y = j ? VSPACING*(3+j) : VSPACING*2.4; + item1->active_subitem = 0; + item1->num_subitems = 0; +} + +void lakka_settings_context_reset(void) +{ + menu_category_t *category = (menu_category_t*)&categories[0]; + category->icon = settings_icon; if (font_driver) font_driver->render_msg(font, category->name, &category->out); + + int j, k; + + // General options item + + j = 0; + menu_item_t *item0; + item0 = (menu_item_t*)&category->items[j]; + item0->icon = setting_icon; + if (font_driver) + font_driver->render_msg(font, item0->name, &item0->out); + + // General options subitems + + k = 0; + menu_subitem_t *subitem0 = (menu_subitem_t*)&item0->subitems[k]; + subitem0->icon = subsetting_icon; + if (font_driver) + font_driver->render_msg(font, subitem0->name, &subitem0->out); + + k = 1; + menu_subitem_t *subitem1 = (menu_subitem_t*)&item0->subitems[k]; + subitem1->icon = subsetting_icon; + if (font_driver) + font_driver->render_msg(font, subitem1->name, &subitem1->out); + + k = 2; + menu_subitem_t *subitem2 = (menu_subitem_t*)&item0->subitems[k]; + subitem2->icon = subsetting_icon; + if (font_driver) + font_driver->render_msg(font, subitem2->name, &subitem2->out); + + // Quit item + + j = 1; + menu_item_t *item1; + item1 = (menu_item_t*)&category->items[j]; + item1->icon = setting_icon; + if (font_driver) + font_driver->render_msg(font, item1->name, &item1->out); } + static void lakka_context_reset(void *data) { int i, j, k; @@ -1132,6 +1250,10 @@ static void lakka_context_reset(void *data) fill_pathname_join(path, dirpath, "settings.png", sizeof(path)); settings_icon = png_texture_load(path, &dim, &dim); + fill_pathname_join(path, dirpath, "setting.png", sizeof(path)); + setting_icon = png_texture_load(path, &dim, &dim); + fill_pathname_join(path, dirpath, "subsetting.png", sizeof(path)); + subsetting_icon = png_texture_load(path, &dim, &dim); fill_pathname_join(path, dirpath, "arrow.png", sizeof(path)); arrow_icon = png_texture_load(path, &dim, &dim); fill_pathname_join(path, dirpath, "run.png", sizeof(path)); @@ -1153,7 +1275,7 @@ static void lakka_context_reset(void *data) font_driver->render_msg(font, "Resume", &resume_label); } - lakka_init_settings(); + lakka_settings_context_reset(); for (i = 1; i < num_categories; i++) { menu_category_t *category = (menu_category_t*)&categories[i]; @@ -1209,9 +1331,9 @@ static void lakka_context_reset(void *data) { case 0: subitem->icon = run_icon; break; case 1: subitem->icon = savestate_icon; break; - case 2: item->subitems[k].icon = loadstate_icon; break; - case 3: item->subitems[k].icon = screenshot_icon; break; - case 4: item->subitems[k].icon = reload_icon; break; + case 2: subitem->icon = loadstate_icon; break; + case 3: subitem->icon = screenshot_icon; break; + case 4: subitem->icon = reload_icon; break; } if (font_driver) @@ -1267,18 +1389,18 @@ static void lakka_init_items(int i, menu_category_t *category, core_info_t *info strlcpy(subitem->name, "Save State", sizeof(subitem->name)); break; case 2: - strlcpy(item->subitems[k].name, "Load State", sizeof(item->subitems[k].name)); + strlcpy(subitem->name, "Load State", sizeof(subitem->name)); break; case 3: - strlcpy(item->subitems[k].name, "Take Screenshot", sizeof(item->subitems[k].name)); + strlcpy(subitem->name, "Take Screenshot", sizeof(subitem->name)); break; case 4: - strlcpy(item->subitems[k].name, "Reset", sizeof(item->subitems[k].name)); + strlcpy(subitem->name, "Reset", sizeof(subitem->name)); break; } subitem->alpha = 0; - subitem->zoom = k == item->active_subitem ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM; - subitem->y = k == 0 ? VSPACING * 2.4 : VSPACING * (3 + k); + subitem->zoom = k ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM; + subitem->y = k ? VSPACING * (3+k) : VSPACING * 2.4; if (font_driver) font_driver->render_msg(font, subitem->name, &subitem->out); @@ -1340,6 +1462,8 @@ static void *lakka_init(void) lakka_init_core_info(rgui); categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t)); + lakka_init_settings(); + for (i = 1; i < num_categories; i++) { core_info_t *info; diff --git a/media/lakka/resume.png b/media/lakka/resume.png index 398043479b1950beb0b33a04b899e670b9cb7eee..b713715764d63618b0f9ab5744789629709efa2c 100644 GIT binary patch delta 405 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 V-)xU}Bft*@`1|0`)OnGw{R4z95#Im+ literal 0 HcmV?d00001