Change signature of get_representation callbacks

This commit is contained in:
LibretroAdmin 2025-02-11 21:01:04 +01:00
parent b0999db885
commit 5372f3fe84
6 changed files with 2883 additions and 3276 deletions

View file

@ -45,55 +45,49 @@
#if HAVE_MENU
bool rcheevos_menu_get_state(unsigned menu_offset, char* buffer, size_t buffer_size)
size_t rcheevos_menu_get_state(unsigned menu_offset, char *s, size_t len)
{
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
if (menu_offset < rcheevos_locals->menuitem_count)
{
const rcheevos_menuitem_t* menuitem = &rcheevos_locals->menuitems[menu_offset];
const rcheevos_menuitem_t* menuitem = &rcheevos_locals->menuitems[menu_offset];
const rc_client_achievement_t* cheevo = menuitem->achievement;
if (cheevo)
{
size_t _len;
if (cheevo->state != RC_CLIENT_ACHIEVEMENT_STATE_ACTIVE)
strlcpy(buffer, msg_hash_to_str(menuitem->state_label_idx), buffer_size);
_len = strlcpy(s, msg_hash_to_str(menuitem->state_label_idx), len);
else
{
const char* missable = cheevo->type == RC_CLIENT_ACHIEVEMENT_TYPE_MISSABLE ? "[m] " : "";
size_t _len = strlcpy(buffer, missable, buffer_size);
_len += strlcpy(buffer + _len, msg_hash_to_str(menuitem->state_label_idx), buffer_size - _len);
const char* missable = (cheevo->type == RC_CLIENT_ACHIEVEMENT_TYPE_MISSABLE) ? "[m] " : "";
_len = strlcpy(s, missable, len);
_len += strlcpy(s + _len, msg_hash_to_str(menuitem->state_label_idx), len - _len);
if (cheevo->measured_progress[0])
{
_len += strlcpy(buffer + _len, " - ", buffer_size - _len);
strlcpy(buffer + _len, cheevo->measured_progress, buffer_size - _len);
_len += strlcpy(s + _len, " - ", len - _len);
_len += strlcpy(s + _len, cheevo->measured_progress, len - _len);
}
}
return true;
return _len;
}
}
if (buffer)
buffer[0] = '\0';
return false;
if (s)
s[0] = '\0';
return 0;
}
bool rcheevos_menu_get_sublabel(unsigned menu_offset, char* buffer, size_t buffer_size)
size_t rcheevos_menu_get_sublabel(unsigned menu_offset, char *s, size_t len)
{
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
if (menu_offset < rcheevos_locals->menuitem_count && buffer)
if (menu_offset < rcheevos_locals->menuitem_count && s)
{
const rcheevos_menuitem_t* menuitem = &rcheevos_locals->menuitems[menu_offset];
if (menuitem->achievement)
{
strlcpy(buffer, menuitem->achievement->description, buffer_size);
return true;
}
return strlcpy(s, menuitem->achievement->description, len);
}
if (buffer)
buffer[0] = '\0';
return false;
if (s)
s[0] = '\0';
return 0;
}
void rcheevos_menu_reset_badges(void)

View file

@ -31,8 +31,8 @@ RETRO_BEGIN_DECLS
void rcheevos_menu_populate(void* data, bool cheevos_enable,
bool cheevos_hardcore_mode_enable);
void rcheevos_menu_populate_hardcore_pause_submenu(void* data, bool cheevos_hardcore_mode_enable);
bool rcheevos_menu_get_state(unsigned menu_offset, char* buffer, size_t buffer_size);
bool rcheevos_menu_get_sublabel(unsigned menu_offset, char* buffer, size_t buffer_size);
size_t rcheevos_menu_get_state(unsigned menu_offset, char *s, size_t len);
size_t rcheevos_menu_get_sublabel(unsigned menu_offset, char *s, size_t len);
uintptr_t rcheevos_menu_get_badge_texture(unsigned menu_offset);
void rcheevos_menu_reset_badges(void);

File diff suppressed because it is too large Load diff

View file

@ -149,7 +149,7 @@ typedef struct menu_file_list_cbs
unsigned type, unsigned i,
const char *label, const char *path,
char *s, size_t len);
void (*action_get_value)(file_list_t* list,
size_t (*action_get_value)(file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label, char *s, size_t len,
const char *path,

File diff suppressed because it is too large Load diff

View file

@ -107,7 +107,7 @@ typedef int (*action_start_handler_t )(rarch_setting_t *setting);
typedef int (*action_cancel_handler_t )(rarch_setting_t *setting);
typedef int (*action_ok_handler_t )(rarch_setting_t *setting, size_t idx, bool wraparound);
typedef int (*action_select_handler_t )(rarch_setting_t *setting, size_t idx, bool wraparound);
typedef void (*get_string_representation_t )(rarch_setting_t *setting, char *s, size_t len);
typedef size_t (*get_string_representation_t )(rarch_setting_t *setting, char *s, size_t len);
struct rarch_setting_group_info
{