mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 07:13:35 +00:00
(Lakka) Responsive menu
This commit is contained in:
parent
828edc3ec6
commit
0b52bd86f0
@ -84,9 +84,9 @@ static void lakka_switch_items(void)
|
|||||||
|
|
||||||
ia = (j == active_category->active_item) ? 1.0 : 0.5;
|
ia = (j == active_category->active_item) ? 1.0 : 0.5;
|
||||||
iz = (j == active_category->active_item) ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
iz = (j == active_category->active_item) ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
||||||
iy = (j == active_category->active_item) ? VSPACING*2.4 :
|
iy = (j == active_category->active_item) ? VSPACING*ACTIVE_ITEM_FACTOR :
|
||||||
(j < active_category->active_item) ? VSPACING*(j - active_category->active_item - 1) :
|
(j < active_category->active_item) ? VSPACING*(j - active_category->active_item + ABOVE_ITEM_OFFSET) :
|
||||||
VSPACING*(j - active_category->active_item + 3);
|
VSPACING*(j - active_category->active_item + UNDER_ITEM_OFFSET);
|
||||||
|
|
||||||
add_tween(DELAY, ia, &active_item->alpha, &inOutQuad, NULL);
|
add_tween(DELAY, ia, &active_item->alpha, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, iz, &active_item->zoom, &inOutQuad, NULL);
|
add_tween(DELAY, iz, &active_item->zoom, &inOutQuad, NULL);
|
||||||
@ -111,21 +111,21 @@ static void lakka_switch_subitems(void)
|
|||||||
{
|
{
|
||||||
// Above items
|
// Above items
|
||||||
add_tween(DELAY, 0.5, &subitem->alpha, &inOutQuad, NULL);
|
add_tween(DELAY, 0.5, &subitem->alpha, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, VSPACING*(k - item->active_subitem + 2), &subitem->y, &inOutQuad, NULL);
|
add_tween(DELAY, VSPACING*(k - item->active_subitem + ABOVE_SUBITEM_OFFSET), &subitem->y, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, I_PASSIVE_ZOOM, &subitem->zoom, &inOutQuad, NULL);
|
add_tween(DELAY, I_PASSIVE_ZOOM, &subitem->zoom, &inOutQuad, NULL);
|
||||||
}
|
}
|
||||||
else if (k == item->active_subitem)
|
else if (k == item->active_subitem)
|
||||||
{
|
{
|
||||||
// Active item
|
// Active item
|
||||||
add_tween(DELAY, 1.0, &subitem->alpha, &inOutQuad, NULL);
|
add_tween(DELAY, 1.0, &subitem->alpha, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, VSPACING*2.4, &subitem->y, &inOutQuad, NULL);
|
add_tween(DELAY, VSPACING*ACTIVE_ITEM_FACTOR, &subitem->y, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, I_ACTIVE_ZOOM, &subitem->zoom, &inOutQuad, NULL);
|
add_tween(DELAY, I_ACTIVE_ZOOM, &subitem->zoom, &inOutQuad, NULL);
|
||||||
}
|
}
|
||||||
else if (k > item->active_subitem)
|
else if (k > item->active_subitem)
|
||||||
{
|
{
|
||||||
// Under items
|
// Under items
|
||||||
add_tween(DELAY, 0.5, &subitem->alpha, &inOutQuad, NULL);
|
add_tween(DELAY, 0.5, &subitem->alpha, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, VSPACING*(k - item->active_subitem + 3), &subitem->y, &inOutQuad, NULL);
|
add_tween(DELAY, VSPACING*(k - item->active_subitem + UNDER_ITEM_OFFSET), &subitem->y, &inOutQuad, NULL);
|
||||||
add_tween(DELAY, I_PASSIVE_ZOOM, &subitem->zoom, &inOutQuad, NULL);
|
add_tween(DELAY, I_PASSIVE_ZOOM, &subitem->zoom, &inOutQuad, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -162,7 +162,7 @@ static void lakka_reset_submenu(void)
|
|||||||
|
|
||||||
subitem->alpha = 0;
|
subitem->alpha = 0;
|
||||||
subitem->zoom = k == category->items[j].active_subitem ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
subitem->zoom = k == category->items[j].active_subitem ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
||||||
subitem->y = k == 0 ? VSPACING * 2.4 : VSPACING * (3+k);
|
subitem->y = k == 0 ? VSPACING * ACTIVE_ITEM_FACTOR : VSPACING * (3+k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,27 @@ menu_category_t *categories;
|
|||||||
int depth = 0;
|
int depth = 0;
|
||||||
int num_categories = 0;
|
int num_categories = 0;
|
||||||
int menu_active_category = 0;
|
int menu_active_category = 0;
|
||||||
int dim = 192;
|
|
||||||
float all_categories_x = 0;
|
float all_categories_x = 0;
|
||||||
float global_alpha = 0;
|
float global_alpha = 0;
|
||||||
|
float HSPACING;
|
||||||
|
float VSPACING;
|
||||||
|
float C_ACTIVE_ZOOM;
|
||||||
|
float C_PASSIVE_ZOOM;
|
||||||
|
float I_ACTIVE_ZOOM;
|
||||||
|
float I_PASSIVE_ZOOM;
|
||||||
|
float FONT_SIZE;
|
||||||
|
float MARGIN_LEFT;
|
||||||
|
float MARGIN_TOP;
|
||||||
|
float TITLE_MARGIN_LEFT;
|
||||||
|
float TITLE_MARGIN_TOP;
|
||||||
|
float LABEL_MARGIN_LEFT;
|
||||||
|
float LABEL_MARGIN_TOP;
|
||||||
|
int ICON_SIZE;
|
||||||
|
char ICON_DIR[3];
|
||||||
|
int ABOVE_SUBITEM_OFFSET;
|
||||||
|
int ABOVE_ITEM_OFFSET;
|
||||||
|
float ACTIVE_ITEM_FACTOR;
|
||||||
|
int UNDER_ITEM_OFFSET;
|
||||||
|
|
||||||
// Font variables
|
// Font variables
|
||||||
void *font;
|
void *font;
|
||||||
@ -92,6 +110,105 @@ struct lakka_texture_item textures[TEXTURE_LAST];
|
|||||||
static tween_t* tweens = NULL;
|
static tween_t* tweens = NULL;
|
||||||
int numtweens = 0;
|
int numtweens = 0;
|
||||||
|
|
||||||
|
static void lakka_responsive(void)
|
||||||
|
{
|
||||||
|
gl_t *gl = (gl_t*)driver.video_data;
|
||||||
|
if (!gl)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (gl->win_width >= 2560)
|
||||||
|
{
|
||||||
|
ICON_SIZE = 256;
|
||||||
|
HSPACING = 400;
|
||||||
|
VSPACING = 100;
|
||||||
|
C_ACTIVE_ZOOM = 1.0;
|
||||||
|
C_PASSIVE_ZOOM = 0.5;
|
||||||
|
I_ACTIVE_ZOOM = 0.75;
|
||||||
|
I_PASSIVE_ZOOM = 0.35;
|
||||||
|
FONT_SIZE = 42.0;
|
||||||
|
MARGIN_LEFT = 200.0;
|
||||||
|
MARGIN_TOP = 400.0;
|
||||||
|
TITLE_MARGIN_LEFT = 20.0;
|
||||||
|
TITLE_MARGIN_TOP = 50.0;
|
||||||
|
LABEL_MARGIN_LEFT = 128;
|
||||||
|
LABEL_MARGIN_TOP = 15;
|
||||||
|
strcpy(ICON_DIR, "256");
|
||||||
|
ABOVE_SUBITEM_OFFSET = 2;
|
||||||
|
ABOVE_ITEM_OFFSET = -1;
|
||||||
|
ACTIVE_ITEM_FACTOR = 2.4;
|
||||||
|
UNDER_ITEM_OFFSET = 3;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gl->win_width >= 1920)
|
||||||
|
{
|
||||||
|
ICON_SIZE = 192;
|
||||||
|
HSPACING = 300;
|
||||||
|
VSPACING = 75;
|
||||||
|
C_ACTIVE_ZOOM = 1.0;
|
||||||
|
C_PASSIVE_ZOOM = 0.5;
|
||||||
|
I_ACTIVE_ZOOM = 0.75;
|
||||||
|
I_PASSIVE_ZOOM = 0.35;
|
||||||
|
FONT_SIZE = 32.0;
|
||||||
|
MARGIN_LEFT = 156.0;
|
||||||
|
MARGIN_TOP = 300.0;
|
||||||
|
TITLE_MARGIN_LEFT = 15.0;
|
||||||
|
TITLE_MARGIN_TOP = 40.0;
|
||||||
|
LABEL_MARGIN_LEFT = 96;
|
||||||
|
LABEL_MARGIN_TOP = 11;
|
||||||
|
strcpy(ICON_DIR, "192");
|
||||||
|
ABOVE_SUBITEM_OFFSET = 2;
|
||||||
|
ABOVE_ITEM_OFFSET = -1;
|
||||||
|
ACTIVE_ITEM_FACTOR = 2.4;
|
||||||
|
UNDER_ITEM_OFFSET = 3;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gl->win_width <= 640)
|
||||||
|
{
|
||||||
|
ICON_SIZE = 64;
|
||||||
|
HSPACING = 100.0;
|
||||||
|
VSPACING = 32.0;
|
||||||
|
C_ACTIVE_ZOOM = 1.0;
|
||||||
|
C_PASSIVE_ZOOM = 0.5;
|
||||||
|
I_ACTIVE_ZOOM = 1.0;
|
||||||
|
I_PASSIVE_ZOOM = 0.5;
|
||||||
|
FONT_SIZE = 16;
|
||||||
|
MARGIN_LEFT = 60.0;
|
||||||
|
MARGIN_TOP = 100.0;
|
||||||
|
TITLE_MARGIN_LEFT = 10.0;
|
||||||
|
TITLE_MARGIN_TOP = 24.0;
|
||||||
|
LABEL_MARGIN_LEFT = 35.0;
|
||||||
|
LABEL_MARGIN_TOP = 6.0;
|
||||||
|
strcpy(ICON_DIR, "64");
|
||||||
|
ABOVE_SUBITEM_OFFSET = 2;
|
||||||
|
ABOVE_ITEM_OFFSET = -1;
|
||||||
|
ACTIVE_ITEM_FACTOR = 2.25;
|
||||||
|
UNDER_ITEM_OFFSET = 3;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ICON_SIZE = 128;
|
||||||
|
HSPACING = 200.0;
|
||||||
|
VSPACING = 50.0;
|
||||||
|
C_ACTIVE_ZOOM = 1.0;
|
||||||
|
C_PASSIVE_ZOOM = 0.5;
|
||||||
|
I_ACTIVE_ZOOM = 0.75;
|
||||||
|
I_PASSIVE_ZOOM = 0.35;
|
||||||
|
FONT_SIZE = 24;
|
||||||
|
MARGIN_LEFT = 120.0;
|
||||||
|
MARGIN_TOP = 200.0;
|
||||||
|
TITLE_MARGIN_LEFT = 15.0;
|
||||||
|
TITLE_MARGIN_TOP = 35.0;
|
||||||
|
LABEL_MARGIN_LEFT = 70.0;
|
||||||
|
LABEL_MARGIN_TOP = 11.0;
|
||||||
|
strcpy(ICON_DIR, "128");
|
||||||
|
ABOVE_SUBITEM_OFFSET = 2;
|
||||||
|
ABOVE_ITEM_OFFSET = -1;
|
||||||
|
ACTIVE_ITEM_FACTOR = 2.4;
|
||||||
|
UNDER_ITEM_OFFSET = 3;
|
||||||
|
}
|
||||||
|
|
||||||
static char *str_replace (const char *string, const char *substr, const char *replacement)
|
static char *str_replace (const char *string, const char *substr, const char *replacement)
|
||||||
{
|
{
|
||||||
char *tok, *newstr, *oldstr, *head;
|
char *tok, *newstr, *oldstr, *head;
|
||||||
@ -281,7 +398,7 @@ void lakka_draw_icon(GLuint texture, float x, float y, float alpha, float rotati
|
|||||||
if (!gl)
|
if (!gl)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
glViewport(x, gl->win_height - y, dim, dim);
|
glViewport(x, gl->win_height - y, ICON_SIZE, ICON_SIZE);
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
|
|
||||||
@ -334,14 +451,14 @@ static void lakka_draw_subitems(int i, int j)
|
|||||||
&& strcmp(g_extern.fullpath, &active_item->rom) == 0)
|
&& strcmp(g_extern.fullpath, &active_item->rom) == 0)
|
||||||
{
|
{
|
||||||
lakka_draw_icon(textures[TEXTURE_RESUME].id,
|
lakka_draw_icon(textures[TEXTURE_RESUME].id,
|
||||||
156 + HSPACING*(i+2) + all_categories_x - dim/2.0,
|
MARGIN_LEFT + HSPACING*(i+2) + all_categories_x - ICON_SIZE/2.0,
|
||||||
300 + subitem->y + dim/2.0,
|
MARGIN_TOP + subitem->y + ICON_SIZE/2.0,
|
||||||
subitem->alpha,
|
subitem->alpha,
|
||||||
0,
|
0,
|
||||||
subitem->zoom);
|
subitem->zoom);
|
||||||
lakka_draw_text("Resume",
|
lakka_draw_text("Resume",
|
||||||
156 + HSPACING*(i+2) + all_categories_x + dim/2.0,
|
MARGIN_LEFT + HSPACING*(i+2) + all_categories_x + LABEL_MARGIN_LEFT,
|
||||||
300 + subitem->y + 11,
|
MARGIN_TOP + subitem->y + LABEL_MARGIN_TOP,
|
||||||
1,
|
1,
|
||||||
subitem->alpha);
|
subitem->alpha);
|
||||||
}
|
}
|
||||||
@ -352,14 +469,14 @@ static void lakka_draw_subitems(int i, int j)
|
|||||||
strcmp(g_extern.fullpath, &active_item->rom) == 0))
|
strcmp(g_extern.fullpath, &active_item->rom) == 0))
|
||||||
{
|
{
|
||||||
lakka_draw_icon(subitem->icon,
|
lakka_draw_icon(subitem->icon,
|
||||||
156 + HSPACING*(i+2) + all_categories_x - dim/2.0,
|
MARGIN_LEFT + HSPACING*(i+2) + all_categories_x - ICON_SIZE/2.0,
|
||||||
300 + subitem->y + dim/2.0,
|
MARGIN_TOP + subitem->y + ICON_SIZE/2.0,
|
||||||
subitem->alpha,
|
subitem->alpha,
|
||||||
0,
|
0,
|
||||||
subitem->zoom);
|
subitem->zoom);
|
||||||
lakka_draw_text(subitem->name,
|
lakka_draw_text(subitem->name,
|
||||||
156 + HSPACING * (i+2) + all_categories_x + dim/2.0,
|
MARGIN_LEFT + HSPACING * (i+2) + all_categories_x + LABEL_MARGIN_LEFT,
|
||||||
300 + subitem->y + 11,
|
MARGIN_TOP + subitem->y + LABEL_MARGIN_TOP,
|
||||||
1,
|
1,
|
||||||
subitem->alpha);
|
subitem->alpha);
|
||||||
}
|
}
|
||||||
@ -386,16 +503,16 @@ static void lakka_draw_items(int i)
|
|||||||
j < active_category->active_item + 10) // performance improvement
|
j < active_category->active_item + 10) // performance improvement
|
||||||
{
|
{
|
||||||
lakka_draw_icon(category->item_icon,
|
lakka_draw_icon(category->item_icon,
|
||||||
156 + HSPACING*(i+1) + all_categories_x - dim/2.0,
|
MARGIN_LEFT + HSPACING*(i+1) + all_categories_x - ICON_SIZE/2.0,
|
||||||
300 + item->y + dim/2.0,
|
MARGIN_TOP + item->y + ICON_SIZE/2.0,
|
||||||
item->alpha,
|
item->alpha,
|
||||||
0,
|
0,
|
||||||
item->zoom);
|
item->zoom);
|
||||||
|
|
||||||
if (depth == 0)
|
if (depth == 0)
|
||||||
lakka_draw_text(item->name,
|
lakka_draw_text(item->name,
|
||||||
156 + HSPACING * (i+1) + all_categories_x + dim/2.0,
|
MARGIN_LEFT + HSPACING * (i+1) + all_categories_x + LABEL_MARGIN_LEFT,
|
||||||
300 + item->y + 11,
|
MARGIN_TOP + item->y + LABEL_MARGIN_TOP,
|
||||||
1,
|
1,
|
||||||
item->alpha);
|
item->alpha);
|
||||||
}
|
}
|
||||||
@ -421,8 +538,8 @@ static void lakka_draw_categories(void)
|
|||||||
|
|
||||||
// draw category icon
|
// draw category icon
|
||||||
lakka_draw_icon(category->icon,
|
lakka_draw_icon(category->icon,
|
||||||
156 + (HSPACING*(i+1)) + all_categories_x - dim/2.0,
|
MARGIN_LEFT + (HSPACING*(i+1)) + all_categories_x - ICON_SIZE/2.0,
|
||||||
300 + dim/2.0,
|
MARGIN_TOP + ICON_SIZE/2.0,
|
||||||
category->alpha,
|
category->alpha,
|
||||||
0,
|
0,
|
||||||
category->zoom);
|
category->zoom);
|
||||||
@ -452,16 +569,16 @@ static void lakka_frame(void)
|
|||||||
if (depth == 0)
|
if (depth == 0)
|
||||||
{
|
{
|
||||||
if (active_category)
|
if (active_category)
|
||||||
lakka_draw_text(active_category->name, 15.0, 40.0, 1, 1.0);
|
lakka_draw_text(active_category->name, TITLE_MARGIN_LEFT, TITLE_MARGIN_TOP, 1, 1.0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (active_item)
|
if (active_item)
|
||||||
lakka_draw_text(active_item->name, 15.0, 40.0, 1, 1.0);
|
lakka_draw_text(active_item->name, TITLE_MARGIN_LEFT, TITLE_MARGIN_TOP, 1, 1.0);
|
||||||
|
|
||||||
lakka_draw_icon(textures[TEXTURE_ARROW].id,
|
lakka_draw_icon(textures[TEXTURE_ARROW].id,
|
||||||
156 + HSPACING*(menu_active_category+1) + all_categories_x + 150 +-dim/2.0,
|
MARGIN_LEFT + HSPACING*(menu_active_category+1) + all_categories_x + ICON_SIZE/2.0,
|
||||||
300 + VSPACING*2.4 + (dim/2.0), 1, 0, I_ACTIVE_ZOOM);
|
MARGIN_TOP + VSPACING*ACTIVE_ITEM_FACTOR + ICON_SIZE/2.0, 1, 0, I_ACTIVE_ZOOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
gl_set_viewport(gl, gl->win_width, gl->win_height, false, false);
|
gl_set_viewport(gl, gl->win_width, gl->win_height, false, false);
|
||||||
@ -691,7 +808,7 @@ void lakka_init_settings(void)
|
|||||||
strlcpy(item0->name, "General Options", sizeof(item0->name));
|
strlcpy(item0->name, "General Options", sizeof(item0->name));
|
||||||
item0->alpha = j ? 0.5 : 1.0;
|
item0->alpha = j ? 0.5 : 1.0;
|
||||||
item0->zoom = j ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
item0->zoom = j ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
||||||
item0->y = j ? VSPACING*(3+j) : VSPACING*2.4;
|
item0->y = j ? VSPACING*(UNDER_ITEM_OFFSET+j) : VSPACING * ACTIVE_ITEM_FACTOR;
|
||||||
item0->active_subitem = 0;
|
item0->active_subitem = 0;
|
||||||
item0->num_subitems = 0;
|
item0->num_subitems = 0;
|
||||||
|
|
||||||
@ -707,7 +824,7 @@ void lakka_init_settings(void)
|
|||||||
strlcpy(subitem0->name, "Libretro Logging Level", sizeof(subitem0->name));
|
strlcpy(subitem0->name, "Libretro Logging Level", sizeof(subitem0->name));
|
||||||
subitem0->alpha = k ? 1.0 : 0.5;
|
subitem0->alpha = k ? 1.0 : 0.5;
|
||||||
subitem0->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
subitem0->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
||||||
subitem0->y = k ? VSPACING * (3+k) : VSPACING * 2.4;
|
subitem0->y = k ? VSPACING * (3+k) : VSPACING * ACTIVE_ITEM_FACTOR;
|
||||||
|
|
||||||
k = 1;
|
k = 1;
|
||||||
item0->num_subitems++;
|
item0->num_subitems++;
|
||||||
@ -719,7 +836,7 @@ void lakka_init_settings(void)
|
|||||||
strlcpy(subitem1->name, "Logging Verbosity", sizeof(subitem1->name));
|
strlcpy(subitem1->name, "Logging Verbosity", sizeof(subitem1->name));
|
||||||
subitem1->alpha = k ? 1.0 : 0.5;
|
subitem1->alpha = k ? 1.0 : 0.5;
|
||||||
subitem1->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
subitem1->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
||||||
subitem1->y = k ? VSPACING * (3+k) : VSPACING * 2.4;
|
subitem1->y = k ? VSPACING * (3+k) : VSPACING * ACTIVE_ITEM_FACTOR;
|
||||||
|
|
||||||
k = 2;
|
k = 2;
|
||||||
item0->num_subitems++;
|
item0->num_subitems++;
|
||||||
@ -731,7 +848,7 @@ void lakka_init_settings(void)
|
|||||||
strlcpy(subitem2->name, "Configuration Save On Exit", sizeof(subitem2->name));
|
strlcpy(subitem2->name, "Configuration Save On Exit", sizeof(subitem2->name));
|
||||||
subitem2->alpha = k ? 1.0 : 0.5;
|
subitem2->alpha = k ? 1.0 : 0.5;
|
||||||
subitem2->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
subitem2->zoom = k ? I_ACTIVE_ZOOM : I_PASSIVE_ZOOM;
|
||||||
subitem2->y = k ? VSPACING * (3+k) : VSPACING * 2.4;
|
subitem2->y = k ? VSPACING * (3+k) : VSPACING * ACTIVE_ITEM_FACTOR;
|
||||||
|
|
||||||
// Quit item
|
// Quit item
|
||||||
|
|
||||||
@ -744,7 +861,7 @@ void lakka_init_settings(void)
|
|||||||
strlcpy(item1->name, "Quit RetroArch", sizeof(item1->name));
|
strlcpy(item1->name, "Quit RetroArch", sizeof(item1->name));
|
||||||
item1->alpha = j ? 0.5 : 1.0;
|
item1->alpha = j ? 0.5 : 1.0;
|
||||||
item1->zoom = j ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
item1->zoom = j ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
||||||
item1->y = j ? VSPACING*(3+j) : VSPACING*2.4;
|
item1->y = j ? VSPACING*(UNDER_ITEM_OFFSET+j) : VSPACING * ACTIVE_ITEM_FACTOR;
|
||||||
item1->active_subitem = 0;
|
item1->active_subitem = 0;
|
||||||
item1->num_subitems = 0;
|
item1->num_subitems = 0;
|
||||||
}
|
}
|
||||||
@ -781,7 +898,7 @@ void lakka_settings_context_reset(void)
|
|||||||
static void lakka_context_reset(void *data)
|
static void lakka_context_reset(void *data)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
char path[256], mediapath[256], themepath[256];
|
char path[256], mediapath[256], themepath[256], iconpath[256];
|
||||||
menu_handle_t *menu = (menu_handle_t*)data;
|
menu_handle_t *menu = (menu_handle_t*)data;
|
||||||
gl_t *gl = (gl_t*)driver.video_data;
|
gl_t *gl = (gl_t*)driver.video_data;
|
||||||
|
|
||||||
@ -790,26 +907,27 @@ static void lakka_context_reset(void *data)
|
|||||||
|
|
||||||
fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath));
|
fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath));
|
||||||
fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath));
|
fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath));
|
||||||
fill_pathname_slash(themepath, sizeof(themepath));
|
fill_pathname_join(iconpath, themepath, ICON_DIR, sizeof(iconpath));
|
||||||
|
fill_pathname_slash(iconpath, sizeof(iconpath));
|
||||||
|
|
||||||
fill_pathname_join(font_path, themepath, "font.ttf", sizeof(font_path));
|
fill_pathname_join(font_path, themepath, "font.ttf", sizeof(font_path));
|
||||||
|
|
||||||
gl_font_init_first(&font_driver, &font, gl, font_path, 32);
|
gl_font_init_first(&font_driver, &font, gl, font_path, FONT_SIZE);
|
||||||
|
|
||||||
fill_pathname_join(textures[TEXTURE_BG].path, themepath, "bg.png", sizeof(textures[TEXTURE_BG].path));
|
fill_pathname_join(textures[TEXTURE_BG].path, iconpath, "bg.png", sizeof(textures[TEXTURE_BG].path));
|
||||||
fill_pathname_join(textures[TEXTURE_SETTINGS].path, themepath, "settings.png", sizeof(textures[TEXTURE_SETTINGS].path));
|
fill_pathname_join(textures[TEXTURE_SETTINGS].path, iconpath, "settings.png", sizeof(textures[TEXTURE_SETTINGS].path));
|
||||||
fill_pathname_join(textures[TEXTURE_SETTING].path, themepath, "setting.png", sizeof(textures[TEXTURE_SETTING].path));
|
fill_pathname_join(textures[TEXTURE_SETTING].path, iconpath, "setting.png", sizeof(textures[TEXTURE_SETTING].path));
|
||||||
fill_pathname_join(textures[TEXTURE_SUBSETTING].path, themepath, "subsetting.png", sizeof(textures[TEXTURE_SUBSETTING].path));
|
fill_pathname_join(textures[TEXTURE_SUBSETTING].path, iconpath, "subsetting.png", sizeof(textures[TEXTURE_SUBSETTING].path));
|
||||||
fill_pathname_join(textures[TEXTURE_ARROW].path, themepath, "arrow.png", sizeof(textures[TEXTURE_ARROW].path));
|
fill_pathname_join(textures[TEXTURE_ARROW].path, iconpath, "arrow.png", sizeof(textures[TEXTURE_ARROW].path));
|
||||||
fill_pathname_join(textures[TEXTURE_RUN].path, themepath, "run.png", sizeof(textures[TEXTURE_RUN].path));
|
fill_pathname_join(textures[TEXTURE_RUN].path, iconpath, "run.png", sizeof(textures[TEXTURE_RUN].path));
|
||||||
fill_pathname_join(textures[TEXTURE_RESUME].path, themepath, "resume.png", sizeof(textures[TEXTURE_RESUME].path));
|
fill_pathname_join(textures[TEXTURE_RESUME].path, iconpath, "resume.png", sizeof(textures[TEXTURE_RESUME].path));
|
||||||
fill_pathname_join(textures[TEXTURE_SAVESTATE].path, themepath, "savestate.png", sizeof(textures[TEXTURE_SAVESTATE].path));
|
fill_pathname_join(textures[TEXTURE_SAVESTATE].path, iconpath, "savestate.png", sizeof(textures[TEXTURE_SAVESTATE].path));
|
||||||
fill_pathname_join(textures[TEXTURE_LOADSTATE].path, themepath, "loadstate.png", sizeof(textures[TEXTURE_LOADSTATE].path));
|
fill_pathname_join(textures[TEXTURE_LOADSTATE].path, iconpath, "loadstate.png", sizeof(textures[TEXTURE_LOADSTATE].path));
|
||||||
fill_pathname_join(textures[TEXTURE_SCREENSHOT].path, themepath, "screenshot.png", sizeof(textures[TEXTURE_SCREENSHOT].path));
|
fill_pathname_join(textures[TEXTURE_SCREENSHOT].path, iconpath, "screenshot.png", sizeof(textures[TEXTURE_SCREENSHOT].path));
|
||||||
fill_pathname_join(textures[TEXTURE_RELOAD].path, themepath, "reload.png", sizeof(textures[TEXTURE_RELOAD].path));
|
fill_pathname_join(textures[TEXTURE_RELOAD].path, iconpath, "reload.png", sizeof(textures[TEXTURE_RELOAD].path));
|
||||||
|
|
||||||
for (k = 0; k < TEXTURE_LAST; k++)
|
for (k = 0; k < TEXTURE_LAST; k++)
|
||||||
textures[k].id = png_texture_load(textures[k].path, &dim, &dim);
|
textures[k].id = png_texture_load(textures[k].path, &ICON_SIZE, &ICON_SIZE);
|
||||||
|
|
||||||
lakka_settings_context_reset();
|
lakka_settings_context_reset();
|
||||||
for (i = 1; i < num_categories; i++)
|
for (i = 1; i < num_categories; i++)
|
||||||
@ -822,7 +940,8 @@ static void lakka_context_reset(void *data)
|
|||||||
|
|
||||||
fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath));
|
fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath));
|
||||||
fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath));
|
fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath));
|
||||||
fill_pathname_slash(themepath, sizeof(themepath));
|
fill_pathname_join(iconpath, themepath, ICON_DIR, sizeof(iconpath));
|
||||||
|
fill_pathname_slash(iconpath, sizeof(iconpath));
|
||||||
|
|
||||||
info_list = (core_info_list_t*)menu->core_info;
|
info_list = (core_info_list_t*)menu->core_info;
|
||||||
info = NULL;
|
info = NULL;
|
||||||
@ -837,16 +956,16 @@ static void lakka_context_reset(void *data)
|
|||||||
strlcpy(core_id, "default", sizeof(core_id));
|
strlcpy(core_id, "default", sizeof(core_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
strlcpy(texturepath, themepath, sizeof(texturepath));
|
strlcpy(texturepath, iconpath, sizeof(texturepath));
|
||||||
strlcat(texturepath, core_id, sizeof(texturepath));
|
strlcat(texturepath, core_id, sizeof(texturepath));
|
||||||
strlcat(texturepath, ".png", sizeof(texturepath));
|
strlcat(texturepath, ".png", sizeof(texturepath));
|
||||||
|
|
||||||
strlcpy(content_texturepath, themepath, sizeof(content_texturepath));
|
strlcpy(content_texturepath, iconpath, sizeof(content_texturepath));
|
||||||
strlcat(content_texturepath, core_id, sizeof(content_texturepath));
|
strlcat(content_texturepath, core_id, sizeof(content_texturepath));
|
||||||
strlcat(content_texturepath, "-content.png", sizeof(content_texturepath));
|
strlcat(content_texturepath, "-content.png", sizeof(content_texturepath));
|
||||||
|
|
||||||
category->icon = png_texture_load(texturepath, &dim, &dim);
|
category->icon = png_texture_load(texturepath, &ICON_SIZE, &ICON_SIZE);
|
||||||
category->item_icon = png_texture_load(content_texturepath, &dim, &dim);
|
category->item_icon = png_texture_load(content_texturepath, &ICON_SIZE, &ICON_SIZE);
|
||||||
|
|
||||||
for (j = 0; j < category->num_items; j++)
|
for (j = 0; j < category->num_items; j++)
|
||||||
{
|
{
|
||||||
@ -906,7 +1025,7 @@ static void lakka_init_items(int i, menu_category_t *category, core_info_t *info
|
|||||||
strlcpy(item->rom, list->elems[j].data, sizeof(item->rom));
|
strlcpy(item->rom, list->elems[j].data, sizeof(item->rom));
|
||||||
item->alpha = i != menu_active_category ? 0 : n ? 0.5 : 1;
|
item->alpha = i != menu_active_category ? 0 : n ? 0.5 : 1;
|
||||||
item->zoom = n ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
item->zoom = n ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
||||||
item->y = n ? VSPACING*(3+n) : VSPACING*2.4;
|
item->y = n ? VSPACING*(UNDER_ITEM_OFFSET+n) : VSPACING*ACTIVE_ITEM_FACTOR;
|
||||||
item->active_subitem = 0;
|
item->active_subitem = 0;
|
||||||
item->num_subitems = 5;
|
item->num_subitems = 5;
|
||||||
item->subitems = (menu_subitem_t*)calloc(item->num_subitems, sizeof(menu_subitem_t));
|
item->subitems = (menu_subitem_t*)calloc(item->num_subitems, sizeof(menu_subitem_t));
|
||||||
@ -938,7 +1057,7 @@ static void lakka_init_items(int i, menu_category_t *category, core_info_t *info
|
|||||||
}
|
}
|
||||||
subitem->alpha = 0;
|
subitem->alpha = 0;
|
||||||
subitem->zoom = k ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
subitem->zoom = k ? I_PASSIVE_ZOOM : I_ACTIVE_ZOOM;
|
||||||
subitem->y = k ? VSPACING * (3+k) : VSPACING * 2.4;
|
subitem->y = k ? VSPACING * (3+k) : VSPACING * ACTIVE_ITEM_FACTOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -994,6 +1113,8 @@ static void *lakka_init(void)
|
|||||||
if (!menu || !gl)
|
if (!menu || !gl)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
lakka_responsive();
|
||||||
|
|
||||||
lakka_init_core_info(menu);
|
lakka_init_core_info(menu);
|
||||||
categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t));
|
categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t));
|
||||||
|
|
||||||
|
@ -23,18 +23,22 @@
|
|||||||
|
|
||||||
#define THEME "flatui" // flatui or monochrome themes are available
|
#define THEME "flatui" // flatui or monochrome themes are available
|
||||||
#define DELAY 0.02
|
#define DELAY 0.02
|
||||||
#define HSPACING 300
|
|
||||||
#define VSPACING 75
|
|
||||||
#define C_ACTIVE_ZOOM 1.0
|
|
||||||
#define C_PASSIVE_ZOOM 0.5
|
|
||||||
#define I_ACTIVE_ZOOM 0.75
|
|
||||||
#define I_PASSIVE_ZOOM 0.35
|
|
||||||
|
|
||||||
extern int depth;
|
extern int depth;
|
||||||
extern int num_categories;
|
extern int num_categories;
|
||||||
extern float all_categories_x;
|
extern float all_categories_x;
|
||||||
extern int menu_active_category;
|
extern int menu_active_category;
|
||||||
extern float global_alpha;
|
extern float global_alpha;
|
||||||
|
extern float HSPACING;
|
||||||
|
extern float VSPACING;
|
||||||
|
extern float C_ACTIVE_ZOOM;
|
||||||
|
extern float C_PASSIVE_ZOOM;
|
||||||
|
extern float I_ACTIVE_ZOOM;
|
||||||
|
extern float I_PASSIVE_ZOOM;
|
||||||
|
extern int ABOVE_SUBITEM_OFFSET;
|
||||||
|
extern int ABOVE_ITEM_OFFSET;
|
||||||
|
extern float ACTIVE_ITEM_FACTOR;
|
||||||
|
extern int UNDER_ITEM_OFFSET;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user