mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
(Lakka) Handles cores that support no games
This commit is contained in:
parent
8ff86d8fe5
commit
dee1890d9a
@ -184,6 +184,9 @@ core_info_list_t *core_info_list_new(const char *modules_path)
|
|||||||
&core_info[i].notes) &&
|
&core_info[i].notes) &&
|
||||||
core_info[i].notes)
|
core_info[i].notes)
|
||||||
core_info[i].note_list = string_split(core_info[i].notes, "|");
|
core_info[i].note_list = string_split(core_info[i].notes, "|");
|
||||||
|
|
||||||
|
config_get_bool(core_info[i].data, "supports_no_game",
|
||||||
|
&core_info[i].supports_no_game);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!core_info[i].display_name)
|
if (!core_info[i].display_name)
|
||||||
|
@ -55,6 +55,7 @@ typedef struct
|
|||||||
|
|
||||||
core_info_firmware_t *firmware;
|
core_info_firmware_t *firmware;
|
||||||
size_t firmware_count;
|
size_t firmware_count;
|
||||||
|
bool supports_no_game;
|
||||||
} core_info_t;
|
} core_info_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -963,48 +963,9 @@ static void lakka_context_reset(void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lakka_init_items(int i, menu_category_t *category,
|
static void lakka_init_subitems(menu_item_t *item)
|
||||||
core_info_t *info, const char* path)
|
|
||||||
{
|
{
|
||||||
int num_items, j, n, k;
|
int k;
|
||||||
struct string_list *list;
|
|
||||||
|
|
||||||
if (category == NULL || info == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
list = (struct string_list*)dir_list_new(path, info->supported_extensions, true);
|
|
||||||
|
|
||||||
dir_list_sort(list, true);
|
|
||||||
|
|
||||||
num_items = list ? list->size : 0;
|
|
||||||
|
|
||||||
for (j = 0; j < num_items; j++)
|
|
||||||
{
|
|
||||||
if (list->elems[j].attr.i == RARCH_DIRECTORY) // is a directory
|
|
||||||
lakka_init_items(i, category, info, list->elems[j].data);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
menu_item_t *item;
|
|
||||||
|
|
||||||
n = category->num_items;
|
|
||||||
|
|
||||||
category->num_items++;
|
|
||||||
category->items = (menu_item_t*)realloc(category->items,
|
|
||||||
category->num_items * sizeof(menu_item_t));
|
|
||||||
item = (menu_item_t*)&category->items[n];
|
|
||||||
|
|
||||||
strlcpy(item->name, path_basename(list->elems[j].data),
|
|
||||||
sizeof(item->name));
|
|
||||||
strlcpy(item->rom, list->elems[j].data, sizeof(item->rom));
|
|
||||||
item->alpha = i != menu_active_category ? 0 : n ? 0.5 : 1;
|
|
||||||
item->zoom = n ? i_passive_zoom : i_active_zoom;
|
|
||||||
item->y = n ? vspacing*(under_item_offset+n) :
|
|
||||||
vspacing*active_item_factor;
|
|
||||||
item->active_subitem = 0;
|
|
||||||
item->num_subitems = 5;
|
|
||||||
item->subitems = (menu_subitem_t*)
|
|
||||||
calloc(item->num_subitems, sizeof(menu_subitem_t));
|
|
||||||
|
|
||||||
for (k = 0; k < item->num_subitems; k++)
|
for (k = 0; k < item->num_subitems; k++)
|
||||||
{
|
{
|
||||||
menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k];
|
menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k];
|
||||||
@ -1035,6 +996,58 @@ static void lakka_init_items(int i, menu_category_t *category,
|
|||||||
subitem->y = k ? vspacing * (k+under_item_offset) :
|
subitem->y = k ? vspacing * (k+under_item_offset) :
|
||||||
vspacing * active_item_factor;
|
vspacing * active_item_factor;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lakka_init_item(int i, int j, menu_category_t *category,
|
||||||
|
core_info_t *info, struct string_list *list, const char * name)
|
||||||
|
{
|
||||||
|
menu_item_t *item;
|
||||||
|
|
||||||
|
int n = category->num_items;
|
||||||
|
|
||||||
|
category->num_items++;
|
||||||
|
category->items = (menu_item_t*)realloc(category->items,
|
||||||
|
category->num_items * sizeof(menu_item_t));
|
||||||
|
item = (menu_item_t*)&category->items[n];
|
||||||
|
|
||||||
|
strlcpy(item->name, name, sizeof(item->name));
|
||||||
|
if (list != NULL)
|
||||||
|
strlcpy(item->rom, list->elems[j].data, sizeof(item->rom));
|
||||||
|
item->alpha = i != menu_active_category ? 0 : n ? 0.5 : 1;
|
||||||
|
item->zoom = n ? i_passive_zoom : i_active_zoom;
|
||||||
|
item->y = n ? vspacing*(under_item_offset+n) :
|
||||||
|
vspacing*active_item_factor;
|
||||||
|
item->active_subitem = 0;
|
||||||
|
item->num_subitems = 5;
|
||||||
|
item->subitems = (menu_subitem_t*)
|
||||||
|
calloc(item->num_subitems, sizeof(menu_subitem_t));
|
||||||
|
|
||||||
|
lakka_init_subitems(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lakka_init_items(int i, menu_category_t *category,
|
||||||
|
core_info_t *info, const char* path)
|
||||||
|
{
|
||||||
|
int num_items, j;
|
||||||
|
struct string_list *list;
|
||||||
|
|
||||||
|
if (category == NULL || info == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
list = (struct string_list*)dir_list_new(path, info->supported_extensions, true);
|
||||||
|
|
||||||
|
dir_list_sort(list, true);
|
||||||
|
|
||||||
|
num_items = list ? list->size : 0;
|
||||||
|
|
||||||
|
for (j = 0; j < num_items; j++)
|
||||||
|
{
|
||||||
|
if (list->elems[j].attr.i == RARCH_DIRECTORY) // is a directory
|
||||||
|
lakka_init_items(i, category, info, list->elems[j].data);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lakka_init_item(i, j, category, info, list,
|
||||||
|
path_basename(list->elems[j].data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1133,7 +1146,11 @@ static void *lakka_init(void)
|
|||||||
category->items = (menu_item_t*)
|
category->items = (menu_item_t*)
|
||||||
calloc(category->num_items + 1, sizeof(menu_item_t));
|
calloc(category->num_items + 1, sizeof(menu_item_t));
|
||||||
|
|
||||||
|
if (! info->supports_no_game)
|
||||||
lakka_init_items(i, category, info, g_settings.content_directory);
|
lakka_init_items(i, category, info, g_settings.content_directory);
|
||||||
|
else
|
||||||
|
lakka_init_item(i, 0, category, info, NULL,
|
||||||
|
info->display_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return menu;
|
return menu;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user