mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 15:45:19 +00:00
(steam) Introduce Steam Rich Presence (#13798)
This commit is contained in:
parent
fccef557fc
commit
4a1a1e2fa7
@ -2226,6 +2226,7 @@ ifeq ($(HAVE_NETWORKING), 1)
|
|||||||
|
|
||||||
ifeq ($(HAVE_DISCORD), 1)
|
ifeq ($(HAVE_DISCORD), 1)
|
||||||
NEED_CXX_LINKER = 1
|
NEED_CXX_LINKER = 1
|
||||||
|
HAVE_PRESENCE = 1
|
||||||
DEFINES += -DHAVE_DISCORD
|
DEFINES += -DHAVE_DISCORD
|
||||||
INCLUDE_DIRS += -Ideps/discord-rpc/include
|
INCLUDE_DIRS += -Ideps/discord-rpc/include
|
||||||
|
|
||||||
@ -2463,11 +2464,20 @@ endif
|
|||||||
|
|
||||||
### Steam integration using mist
|
### Steam integration using mist
|
||||||
ifeq ($(HAVE_MIST), 1)
|
ifeq ($(HAVE_MIST), 1)
|
||||||
|
HAVE_PRESENCE = 1
|
||||||
|
DEFINES += -DHAVE_MIST
|
||||||
INCLUDE_DIRS += -I$(MIST_PATH)/include
|
INCLUDE_DIRS += -I$(MIST_PATH)/include
|
||||||
LDFLAGS += -L$(MIST_PATH) -lmist
|
LDFLAGS += -L$(MIST_PATH) -lmist
|
||||||
OBJ += steam/steam.o tasks/task_steam.o
|
OBJ += steam/steam.o tasks/task_steam.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
### Shared rich presence code for Discord and Steam
|
||||||
|
|
||||||
|
ifeq ($(HAVE_PRESENCE), 1)
|
||||||
|
DEFINES += -DHAVE_PRESENCE
|
||||||
|
OBJ += network/presence.o
|
||||||
|
endif
|
||||||
|
|
||||||
##################################
|
##################################
|
||||||
### Classic Platform specifics ###
|
### Classic Platform specifics ###
|
||||||
###############WIP################
|
###############WIP################
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
#include "../network/net_http_special.h"
|
#include "../network/net_http_special.h"
|
||||||
#include "../tasks/tasks_internal.h"
|
#include "../tasks/tasks_internal.h"
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
#include "../network/discord.h"
|
#include "../network/presence.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../deps/rcheevos/include/rc_api_runtime.h"
|
#include "../deps/rcheevos/include/rc_api_runtime.h"
|
||||||
@ -1268,9 +1268,8 @@ static retro_time_t rcheevos_client_prepare_ping(
|
|||||||
rcheevos_log_post_url(request->request.url,
|
rcheevos_log_post_url(request->request.url,
|
||||||
request->request.post_data);
|
request->request.post_data);
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (settings->bools.discord_enable && discord_is_ready())
|
presence_update(PRESENCE_RETROACHIEVEMENTS);
|
||||||
discord_update(DISCORD_PRESENCE_RETROACHIEVEMENTS);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Update rich presence every two minutes */
|
/* Update rich presence every two minutes */
|
||||||
|
@ -244,7 +244,7 @@ enum event_command
|
|||||||
CMD_EVENT_MIXER_VOLUME_UP,
|
CMD_EVENT_MIXER_VOLUME_UP,
|
||||||
CMD_EVENT_MIXER_VOLUME_DOWN,
|
CMD_EVENT_MIXER_VOLUME_DOWN,
|
||||||
CMD_EVENT_DISCORD_INIT,
|
CMD_EVENT_DISCORD_INIT,
|
||||||
CMD_EVENT_DISCORD_UPDATE,
|
CMD_EVENT_PRESENCE_UPDATE,
|
||||||
CMD_EVENT_OSK_TOGGLE,
|
CMD_EVENT_OSK_TOGGLE,
|
||||||
CMD_EVENT_RECORDING_TOGGLE,
|
CMD_EVENT_RECORDING_TOGGLE,
|
||||||
CMD_EVENT_STREAMING_TOGGLE,
|
CMD_EVENT_STREAMING_TOGGLE,
|
||||||
|
12
config.def.h
12
config.def.h
@ -53,6 +53,11 @@
|
|||||||
#include "../input/input_overlay.h"
|
#include "../input/input_overlay.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Required for Steam enum settings */
|
||||||
|
#if defined(HAVE_MIST)
|
||||||
|
#include "steam/steam.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HW_RVL)
|
#if defined(HW_RVL)
|
||||||
#define MAX_GAMMA_SETTING 30
|
#define MAX_GAMMA_SETTING 30
|
||||||
#elif defined(GEKKO)
|
#elif defined(GEKKO)
|
||||||
@ -605,6 +610,8 @@
|
|||||||
|
|
||||||
#define DEFAULT_SETTINGS_SHOW_DIRECTORY true
|
#define DEFAULT_SETTINGS_SHOW_DIRECTORY true
|
||||||
|
|
||||||
|
#define DEFAULT_SETTINGS_SHOW_STEAM true
|
||||||
|
|
||||||
#define DEFAULT_QUICK_MENU_SHOW_RESUME_CONTENT true
|
#define DEFAULT_QUICK_MENU_SHOW_RESUME_CONTENT true
|
||||||
|
|
||||||
#define DEFAULT_QUICK_MENU_SHOW_RESTART_CONTENT true
|
#define DEFAULT_QUICK_MENU_SHOW_RESTART_CONTENT true
|
||||||
@ -1518,6 +1525,11 @@ static const enum resampler_quality audio_resampler_quality_level = RESAMPLER_QU
|
|||||||
|
|
||||||
static const unsigned midi_volume = 100;
|
static const unsigned midi_volume = 100;
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
/* Steam */
|
||||||
|
#define DEFAULT_STEAM_RICH_PRESENCE_FORMAT STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Only applies to Android 7.0 (API 24) and up */
|
/* Only applies to Android 7.0 (API 24) and up */
|
||||||
static const bool sustained_performance_mode = false;
|
static const bool sustained_performance_mode = false;
|
||||||
|
|
||||||
|
@ -1752,6 +1752,9 @@ static struct config_bool_setting *populate_settings_bool(
|
|||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, false);
|
SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
SETTING_BOOL("steam_rich_presence_enable", &settings->bools.steam_rich_presence_enable, true, false, false);
|
||||||
|
#endif
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false);
|
SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false);
|
||||||
SETTING_BOOL("menu_throttle_framerate", &settings->bools.menu_throttle_framerate, true, true, false);
|
SETTING_BOOL("menu_throttle_framerate", &settings->bools.menu_throttle_framerate, true, true, false);
|
||||||
@ -1792,6 +1795,9 @@ static struct config_bool_setting *populate_settings_bool(
|
|||||||
SETTING_BOOL("settings_show_playlists", &settings->bools.settings_show_playlists, true, DEFAULT_SETTINGS_SHOW_PLAYLISTS, false);
|
SETTING_BOOL("settings_show_playlists", &settings->bools.settings_show_playlists, true, DEFAULT_SETTINGS_SHOW_PLAYLISTS, false);
|
||||||
SETTING_BOOL("settings_show_user", &settings->bools.settings_show_user, true, DEFAULT_SETTINGS_SHOW_USER, false);
|
SETTING_BOOL("settings_show_user", &settings->bools.settings_show_user, true, DEFAULT_SETTINGS_SHOW_USER, false);
|
||||||
SETTING_BOOL("settings_show_directory", &settings->bools.settings_show_directory, true, DEFAULT_SETTINGS_SHOW_DIRECTORY, false);
|
SETTING_BOOL("settings_show_directory", &settings->bools.settings_show_directory, true, DEFAULT_SETTINGS_SHOW_DIRECTORY, false);
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
SETTING_BOOL("settings_show_steam", &settings->bools.settings_show_steam, true, DEFAULT_SETTINGS_SHOW_STEAM, false);
|
||||||
|
#endif
|
||||||
|
|
||||||
SETTING_BOOL("quick_menu_show_resume_content", &settings->bools.quick_menu_show_resume_content, true, DEFAULT_QUICK_MENU_SHOW_RESUME_CONTENT, false);
|
SETTING_BOOL("quick_menu_show_resume_content", &settings->bools.quick_menu_show_resume_content, true, DEFAULT_QUICK_MENU_SHOW_RESUME_CONTENT, false);
|
||||||
SETTING_BOOL("quick_menu_show_restart_content", &settings->bools.quick_menu_show_restart_content, true, DEFAULT_QUICK_MENU_SHOW_RESTART_CONTENT, false);
|
SETTING_BOOL("quick_menu_show_restart_content", &settings->bools.quick_menu_show_restart_content, true, DEFAULT_QUICK_MENU_SHOW_RESTART_CONTENT, false);
|
||||||
@ -2331,6 +2337,10 @@ static struct config_uint_setting *populate_settings_uint(
|
|||||||
SETTING_UINT("cpu_max_freq", &settings->uints.cpu_max_freq, true, ~0U, false);
|
SETTING_UINT("cpu_max_freq", &settings->uints.cpu_max_freq, true, ~0U, false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
SETTING_UINT("steam_rich_presence_format", &settings->uints.steam_rich_presence_format, true, DEFAULT_STEAM_RICH_PRESENCE_FORMAT, false);
|
||||||
|
#endif
|
||||||
|
|
||||||
*size = count;
|
*size = count;
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
|
@ -339,6 +339,10 @@ typedef struct settings
|
|||||||
unsigned cpu_min_freq;
|
unsigned cpu_min_freq;
|
||||||
unsigned cpu_max_freq;
|
unsigned cpu_max_freq;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
unsigned steam_rich_presence_format;
|
||||||
|
#endif
|
||||||
} uints;
|
} uints;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
@ -740,6 +744,9 @@ typedef struct settings
|
|||||||
bool settings_show_playlists;
|
bool settings_show_playlists;
|
||||||
bool settings_show_user;
|
bool settings_show_user;
|
||||||
bool settings_show_directory;
|
bool settings_show_directory;
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
bool settings_show_steam;
|
||||||
|
#endif
|
||||||
bool quick_menu_show_resume_content;
|
bool quick_menu_show_resume_content;
|
||||||
bool quick_menu_show_restart_content;
|
bool quick_menu_show_restart_content;
|
||||||
bool quick_menu_show_close_content;
|
bool quick_menu_show_close_content;
|
||||||
@ -832,6 +839,11 @@ typedef struct settings
|
|||||||
/* Driver */
|
/* Driver */
|
||||||
bool driver_switch_enable;
|
bool driver_switch_enable;
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
/* Steam */
|
||||||
|
bool steam_rich_presence_enable;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Misc. */
|
/* Misc. */
|
||||||
bool discord_enable;
|
bool discord_enable;
|
||||||
bool threaded_data_runloop_enable;
|
bool threaded_data_runloop_enable;
|
||||||
|
@ -629,6 +629,18 @@ MSG_HASH(
|
|||||||
MENU_ENUM_LABEL_CORE_STEAM_UNINSTALL,
|
MENU_ENUM_LABEL_CORE_STEAM_UNINSTALL,
|
||||||
"core_steam_uninstall"
|
"core_steam_uninstall"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_STEAM_SETTINGS,
|
||||||
|
"steam_settings"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_ENABLE,
|
||||||
|
"steam_rich_presence_enable"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_FORMAT,
|
||||||
|
"steam_rich_presence_format"
|
||||||
|
)
|
||||||
#endif
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_CPU_ARCHITECTURE,
|
MENU_ENUM_LABEL_CPU_ARCHITECTURE,
|
||||||
@ -909,6 +921,10 @@ MSG_HASH(
|
|||||||
"deferred_core_manager_list"
|
"deferred_core_manager_list"
|
||||||
)
|
)
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST,
|
||||||
|
"deferred_steam_settings_list"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST,
|
MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST,
|
||||||
"deferred_core_manager_steam_list"
|
"deferred_core_manager_steam_list"
|
||||||
@ -5206,6 +5222,12 @@ MSG_HASH(
|
|||||||
MENU_ENUM_LABEL_SETTINGS_SHOW_DIRECTORY,
|
MENU_ENUM_LABEL_SETTINGS_SHOW_DIRECTORY,
|
||||||
"settings_show_directory"
|
"settings_show_directory"
|
||||||
)
|
)
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_SETTINGS_SHOW_STEAM,
|
||||||
|
"settings_show_steam"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_FRAME_TIME_COUNTER_RESET_AFTER_FASTFORWARDING,
|
MENU_ENUM_LABEL_FRAME_TIME_COUNTER_RESET_AFTER_FASTFORWARDING,
|
||||||
"frame_time_counter_reset_after_fastforwarding"
|
"frame_time_counter_reset_after_fastforwarding"
|
||||||
|
@ -1289,6 +1289,17 @@ MSG_HASH(
|
|||||||
"Change default directories where files are located."
|
"Change default directories where files are located."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_SETTINGS,
|
||||||
|
"Steam"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_STEAM_SETTINGS,
|
||||||
|
"Change settings related to Steam."
|
||||||
|
)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Drivers */
|
/* Settings > Drivers */
|
||||||
|
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
@ -5249,6 +5260,15 @@ MSG_HASH(
|
|||||||
"Show 'Directory' settings."
|
"Show 'Directory' settings."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_STEAM,
|
||||||
|
"Show 'Steam'"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_SETTINGS_SHOW_STEAM,
|
||||||
|
"Show 'Steam' settings."
|
||||||
|
)
|
||||||
|
|
||||||
/* Settings > User Interface > Appearance */
|
/* Settings > User Interface > Appearance */
|
||||||
|
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
@ -6371,6 +6391,53 @@ MSG_HASH(
|
|||||||
"System event logs are stored in this directory."
|
"System event logs are stored in this directory."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
/* Settings > Steam */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_ENABLE,
|
||||||
|
"Enable Rich Presence"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_ENABLE,
|
||||||
|
"Share your current status within RetroArch on Steam."
|
||||||
|
)
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT,
|
||||||
|
"Rich Presence Content Format"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT,
|
||||||
|
"Decide what information related to the running content will be shared."
|
||||||
|
)
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT,
|
||||||
|
"Content"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CORE,
|
||||||
|
"Core name"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_SYSTEM,
|
||||||
|
"System name"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM,
|
||||||
|
"Content (System name)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_CORE,
|
||||||
|
"Content (Core name)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM_CORE,
|
||||||
|
"Content (System name - Core name)"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Music */
|
/* Music */
|
||||||
|
|
||||||
/* Music > Quick Menu */
|
/* Music > Quick Menu */
|
||||||
|
@ -273,6 +273,7 @@ GENERIC_DEFERRED_PUSH(deferred_push_core_delete_backup_list, DISPLAYLIST_
|
|||||||
GENERIC_DEFERRED_PUSH(deferred_push_core_manager_list, DISPLAYLIST_CORE_MANAGER_LIST)
|
GENERIC_DEFERRED_PUSH(deferred_push_core_manager_list, DISPLAYLIST_CORE_MANAGER_LIST)
|
||||||
|
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
GENERIC_DEFERRED_PUSH(deferred_push_steam_settings_list, DISPLAYLIST_STEAM_SETTINGS_LIST)
|
||||||
GENERIC_DEFERRED_PUSH(deferred_push_core_manager_steam_list, DISPLAYLIST_CORE_MANAGER_STEAM_LIST)
|
GENERIC_DEFERRED_PUSH(deferred_push_core_manager_steam_list, DISPLAYLIST_CORE_MANAGER_STEAM_LIST)
|
||||||
GENERIC_DEFERRED_PUSH(deferred_push_core_information_steam_list, DISPLAYLIST_CORE_INFORMATION_STEAM_LIST)
|
GENERIC_DEFERRED_PUSH(deferred_push_core_information_steam_list, DISPLAYLIST_CORE_INFORMATION_STEAM_LIST)
|
||||||
#endif
|
#endif
|
||||||
@ -888,6 +889,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||||||
{MENU_ENUM_LABEL_DEFERRED_CORE_DELETE_BACKUP_LIST, deferred_push_core_delete_backup_list},
|
{MENU_ENUM_LABEL_DEFERRED_CORE_DELETE_BACKUP_LIST, deferred_push_core_delete_backup_list},
|
||||||
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST, deferred_push_core_manager_list},
|
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST, deferred_push_core_manager_list},
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
{MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST, deferred_push_steam_settings_list},
|
||||||
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST, deferred_push_core_manager_steam_list},
|
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST, deferred_push_core_manager_steam_list},
|
||||||
{MENU_ENUM_LABEL_DEFERRED_CORE_INFORMATION_STEAM_LIST, deferred_push_core_information_steam_list},
|
{MENU_ENUM_LABEL_DEFERRED_CORE_INFORMATION_STEAM_LIST, deferred_push_core_information_steam_list},
|
||||||
#endif
|
#endif
|
||||||
@ -1322,6 +1324,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_manager_list);
|
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_manager_list);
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
case MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST:
|
||||||
|
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_steam_settings_list);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST:
|
case MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST:
|
||||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_manager_steam_list);
|
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_manager_steam_list);
|
||||||
break;
|
break;
|
||||||
|
@ -489,6 +489,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl)
|
|||||||
case ACTION_OK_DL_CORE_MANAGER_LIST:
|
case ACTION_OK_DL_CORE_MANAGER_LIST:
|
||||||
return MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST;
|
return MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST;
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
case ACTION_OK_DL_STEAM_SETTINGS_LIST:
|
||||||
|
return MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST;
|
||||||
case ACTION_OK_DL_CORE_MANAGER_STEAM_LIST:
|
case ACTION_OK_DL_CORE_MANAGER_STEAM_LIST:
|
||||||
return MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST;
|
return MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST;
|
||||||
#endif
|
#endif
|
||||||
@ -1583,6 +1585,7 @@ int generic_action_ok_displaylist_push(const char *path,
|
|||||||
case ACTION_OK_DL_MANUAL_CONTENT_SCAN_LIST:
|
case ACTION_OK_DL_MANUAL_CONTENT_SCAN_LIST:
|
||||||
case ACTION_OK_DL_CORE_MANAGER_LIST:
|
case ACTION_OK_DL_CORE_MANAGER_LIST:
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
case ACTION_OK_DL_STEAM_SETTINGS_LIST:
|
||||||
case ACTION_OK_DL_CORE_MANAGER_STEAM_LIST:
|
case ACTION_OK_DL_CORE_MANAGER_STEAM_LIST:
|
||||||
#endif
|
#endif
|
||||||
case ACTION_OK_DL_CORE_OPTION_OVERRIDE_LIST:
|
case ACTION_OK_DL_CORE_OPTION_OVERRIDE_LIST:
|
||||||
@ -5829,6 +5832,7 @@ DEFAULT_ACTION_OK_FUNC(action_ok_push_manual_content_scan_list, ACTION_OK_DL_MAN
|
|||||||
DEFAULT_ACTION_OK_FUNC(action_ok_manual_content_scan_dat_file, ACTION_OK_DL_MANUAL_CONTENT_SCAN_DAT_FILE)
|
DEFAULT_ACTION_OK_FUNC(action_ok_manual_content_scan_dat_file, ACTION_OK_DL_MANUAL_CONTENT_SCAN_DAT_FILE)
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_push_core_manager_list, ACTION_OK_DL_CORE_MANAGER_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_push_core_manager_list, ACTION_OK_DL_CORE_MANAGER_LIST)
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
DEFAULT_ACTION_OK_FUNC(action_ok_steam_settings_list, ACTION_OK_DL_STEAM_SETTINGS_LIST)
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_push_core_manager_steam_list, ACTION_OK_DL_CORE_MANAGER_STEAM_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_push_core_manager_steam_list, ACTION_OK_DL_CORE_MANAGER_STEAM_LIST)
|
||||||
#endif
|
#endif
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_push_core_option_override_list, ACTION_OK_DL_CORE_OPTION_OVERRIDE_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_push_core_option_override_list, ACTION_OK_DL_CORE_OPTION_OVERRIDE_LIST)
|
||||||
@ -8262,6 +8266,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
|||||||
{MENU_ENUM_LABEL_PLAYLIST_MANAGER_DEFAULT_CORE, action_ok_playlist_default_core},
|
{MENU_ENUM_LABEL_PLAYLIST_MANAGER_DEFAULT_CORE, action_ok_playlist_default_core},
|
||||||
{MENU_ENUM_LABEL_CORE_MANAGER_LIST, action_ok_push_core_manager_list},
|
{MENU_ENUM_LABEL_CORE_MANAGER_LIST, action_ok_push_core_manager_list},
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
{MENU_ENUM_LABEL_STEAM_SETTINGS, action_ok_steam_settings_list},
|
||||||
{MENU_ENUM_LABEL_CORE_MANAGER_STEAM_LIST, action_ok_push_core_manager_steam_list},
|
{MENU_ENUM_LABEL_CORE_MANAGER_STEAM_LIST, action_ok_push_core_manager_steam_list},
|
||||||
{MENU_ENUM_LABEL_CORE_STEAM_INSTALL, action_ok_core_steam_install},
|
{MENU_ENUM_LABEL_CORE_STEAM_INSTALL, action_ok_core_steam_install},
|
||||||
{MENU_ENUM_LABEL_CORE_STEAM_UNINSTALL, action_ok_core_steam_uninstall},
|
{MENU_ENUM_LABEL_CORE_STEAM_UNINSTALL, action_ok_core_steam_uninstall},
|
||||||
|
@ -532,6 +532,9 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_switch_installed_cores_pfd, MENU_
|
|||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_sideload_core_list, MENU_ENUM_SUBLABEL_SIDELOAD_CORE_LIST)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_sideload_core_list, MENU_ENUM_SUBLABEL_SIDELOAD_CORE_LIST)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_manager_list, MENU_ENUM_SUBLABEL_CORE_MANAGER_LIST)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_manager_list, MENU_ENUM_SUBLABEL_CORE_MANAGER_LIST)
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_steam_settings_list, MENU_ENUM_SUBLABEL_STEAM_SETTINGS)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_steam_rich_presence_enable, MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_ENABLE)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_steam_rich_presence_format, MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_manager_steam_list, MENU_ENUM_SUBLABEL_CORE_MANAGER_STEAM_LIST)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_manager_steam_list, MENU_ENUM_SUBLABEL_CORE_MANAGER_STEAM_LIST)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_show_core_manager_steam, MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_MANAGER_STEAM)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_show_core_manager_steam, MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_MANAGER_STEAM)
|
||||||
#endif
|
#endif
|
||||||
@ -914,6 +917,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_network,
|
|||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_playlists, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_PLAYLISTS)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_playlists, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_PLAYLISTS)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_user, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_user, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_directory, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_DIRECTORY)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_directory, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_DIRECTORY)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_settings_show_steam, MENU_ENUM_SUBLABEL_SETTINGS_SHOW_STEAM)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_take_screenshot, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_take_screenshot, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_resume_content, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_RESUME_CONTENT)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_resume_content, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_RESUME_CONTENT)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_restart_content, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_RESTART_CONTENT)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_restart_content, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_RESTART_CONTENT)
|
||||||
@ -2543,6 +2547,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||||||
case MENU_ENUM_LABEL_SETTINGS_SHOW_DIRECTORY:
|
case MENU_ENUM_LABEL_SETTINGS_SHOW_DIRECTORY:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_settings_show_directory);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_settings_show_directory);
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_SETTINGS_SHOW_STEAM:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_settings_show_steam);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_RESUME_CONTENT:
|
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_RESUME_CONTENT:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_show_resume_content);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_show_resume_content);
|
||||||
break;
|
break;
|
||||||
@ -3776,6 +3783,15 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_manager_list);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_manager_list);
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
case MENU_ENUM_LABEL_STEAM_SETTINGS:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_steam_settings_list);
|
||||||
|
break;
|
||||||
|
case MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_ENABLE:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_steam_rich_presence_enable);
|
||||||
|
break;
|
||||||
|
case MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_FORMAT:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_steam_rich_presence_format);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_CORE_MANAGER_STEAM_LIST:
|
case MENU_ENUM_LABEL_CORE_MANAGER_STEAM_LIST:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_manager_steam_list);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_manager_steam_list);
|
||||||
break;
|
break;
|
||||||
|
@ -770,6 +770,7 @@ DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_contentless_cores_li
|
|||||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_updater_list, MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST)
|
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_updater_list, MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST)
|
||||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_manager_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_LIST)
|
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_manager_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_LIST)
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_steam_settings_list, MENU_ENUM_LABEL_VALUE_STEAM_SETTINGS)
|
||||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_manager_steam_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_STEAM_LIST)
|
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_manager_steam_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_STEAM_LIST)
|
||||||
#endif
|
#endif
|
||||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_cheat_options_list, MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS)
|
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_cheat_options_list, MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS)
|
||||||
@ -1160,6 +1161,8 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||||||
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST,
|
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST,
|
||||||
action_get_core_manager_list},
|
action_get_core_manager_list},
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
{MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST,
|
||||||
|
action_get_steam_settings_list},
|
||||||
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST,
|
{MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST,
|
||||||
action_get_core_manager_steam_list},
|
action_get_core_manager_steam_list},
|
||||||
#endif
|
#endif
|
||||||
@ -1487,6 +1490,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||||||
BIND_ACTION_GET_TITLE(cbs, action_get_core_manager_list);
|
BIND_ACTION_GET_TITLE(cbs, action_get_core_manager_list);
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
case MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST:
|
||||||
|
BIND_ACTION_GET_TITLE(cbs, action_get_steam_settings_list);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST:
|
case MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST:
|
||||||
BIND_ACTION_GET_TITLE(cbs, action_get_core_manager_steam_list);
|
BIND_ACTION_GET_TITLE(cbs, action_get_core_manager_steam_list);
|
||||||
break;
|
break;
|
||||||
|
@ -155,6 +155,7 @@ enum
|
|||||||
ACTION_OK_DL_CORE_UPDATER_LIST,
|
ACTION_OK_DL_CORE_UPDATER_LIST,
|
||||||
ACTION_OK_DL_CORE_MANAGER_LIST,
|
ACTION_OK_DL_CORE_MANAGER_LIST,
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
ACTION_OK_DL_STEAM_SETTINGS_LIST,
|
||||||
ACTION_OK_DL_CORE_MANAGER_STEAM_LIST,
|
ACTION_OK_DL_CORE_MANAGER_STEAM_LIST,
|
||||||
#endif
|
#endif
|
||||||
ACTION_OK_DL_THUMBNAILS_UPDATER_LIST,
|
ACTION_OK_DL_THUMBNAILS_UPDATER_LIST,
|
||||||
|
@ -9309,6 +9309,40 @@ unsigned menu_displaylist_build_list(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
case DISPLAYLIST_STEAM_SETTINGS_LIST:
|
||||||
|
{
|
||||||
|
menu_displaylist_build_info_selective_t build_list[] = {
|
||||||
|
{MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_ENABLE, PARSE_ONLY_BOOL, true},
|
||||||
|
{MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_FORMAT, PARSE_ONLY_UINT, false},
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||||
|
{
|
||||||
|
switch (build_list[i].enum_idx)
|
||||||
|
{
|
||||||
|
case MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_FORMAT:
|
||||||
|
if (settings->bools.steam_rich_presence_enable)
|
||||||
|
build_list[i].checked = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||||
|
{
|
||||||
|
if (!build_list[i].checked)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
|
build_list[i].enum_idx, build_list[i].parse_type,
|
||||||
|
false) == 0)
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DISPLAYLIST_SETTINGS_ALL:
|
case DISPLAYLIST_SETTINGS_ALL:
|
||||||
{
|
{
|
||||||
#ifdef HAVE_TRANSLATE
|
#ifdef HAVE_TRANSLATE
|
||||||
@ -9345,6 +9379,9 @@ unsigned menu_displaylist_build_list(
|
|||||||
{MENU_ENUM_LABEL_PLAYLIST_SETTINGS, PARSE_ACTION, true},
|
{MENU_ENUM_LABEL_PLAYLIST_SETTINGS, PARSE_ACTION, true},
|
||||||
{MENU_ENUM_LABEL_USER_SETTINGS, PARSE_ACTION, true},
|
{MENU_ENUM_LABEL_USER_SETTINGS, PARSE_ACTION, true},
|
||||||
{MENU_ENUM_LABEL_DIRECTORY_SETTINGS, PARSE_ACTION, true},
|
{MENU_ENUM_LABEL_DIRECTORY_SETTINGS, PARSE_ACTION, true},
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
{MENU_ENUM_LABEL_STEAM_SETTINGS, PARSE_ACTION, true},
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -9422,6 +9459,11 @@ unsigned menu_displaylist_build_list(
|
|||||||
case MENU_ENUM_LABEL_DIRECTORY_SETTINGS:
|
case MENU_ENUM_LABEL_DIRECTORY_SETTINGS:
|
||||||
build_list[i].checked = settings->bools.settings_show_directory;
|
build_list[i].checked = settings->bools.settings_show_directory;
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
case MENU_ENUM_LABEL_STEAM_SETTINGS:
|
||||||
|
build_list[i].checked = settings->bools.settings_show_steam;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
/* MISSING:
|
/* MISSING:
|
||||||
* MENU_ENUM_LABEL_BLUETOOTH_SETTINGS
|
* MENU_ENUM_LABEL_BLUETOOTH_SETTINGS
|
||||||
* MENU_ENUM_LABEL_WIFI_SETTINGS
|
* MENU_ENUM_LABEL_WIFI_SETTINGS
|
||||||
@ -9574,6 +9616,9 @@ unsigned menu_displaylist_build_list(
|
|||||||
{MENU_ENUM_LABEL_SETTINGS_SHOW_PLAYLISTS, PARSE_ONLY_BOOL},
|
{MENU_ENUM_LABEL_SETTINGS_SHOW_PLAYLISTS, PARSE_ONLY_BOOL},
|
||||||
{MENU_ENUM_LABEL_SETTINGS_SHOW_USER, PARSE_ONLY_BOOL},
|
{MENU_ENUM_LABEL_SETTINGS_SHOW_USER, PARSE_ONLY_BOOL},
|
||||||
{MENU_ENUM_LABEL_SETTINGS_SHOW_DIRECTORY, PARSE_ONLY_BOOL},
|
{MENU_ENUM_LABEL_SETTINGS_SHOW_DIRECTORY, PARSE_ONLY_BOOL},
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
{MENU_ENUM_LABEL_SETTINGS_SHOW_STEAM, PARSE_ONLY_BOOL},
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||||
@ -12580,6 +12625,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
|||||||
case DISPLAYLIST_INPUT_HAPTIC_FEEDBACK_SETTINGS_LIST:
|
case DISPLAYLIST_INPUT_HAPTIC_FEEDBACK_SETTINGS_LIST:
|
||||||
case DISPLAYLIST_PLAYLIST_SETTINGS_LIST:
|
case DISPLAYLIST_PLAYLIST_SETTINGS_LIST:
|
||||||
case DISPLAYLIST_SUBSYSTEM_SETTINGS_LIST:
|
case DISPLAYLIST_SUBSYSTEM_SETTINGS_LIST:
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
case DISPLAYLIST_STEAM_SETTINGS_LIST:
|
||||||
|
#endif
|
||||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||||
count = menu_displaylist_build_list(info->list, settings, type, false);
|
count = menu_displaylist_build_list(info->list, settings, type, false);
|
||||||
|
|
||||||
|
@ -104,6 +104,7 @@ enum menu_displaylist_ctl_state
|
|||||||
DISPLAYLIST_CORES_UPDATER,
|
DISPLAYLIST_CORES_UPDATER,
|
||||||
DISPLAYLIST_CORE_MANAGER_LIST,
|
DISPLAYLIST_CORE_MANAGER_LIST,
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
DISPLAYLIST_STEAM_SETTINGS_LIST,
|
||||||
DISPLAYLIST_CORE_MANAGER_STEAM_LIST,
|
DISPLAYLIST_CORE_MANAGER_STEAM_LIST,
|
||||||
DISPLAYLIST_CORE_INFORMATION_STEAM_LIST,
|
DISPLAYLIST_CORE_INFORMATION_STEAM_LIST,
|
||||||
#endif
|
#endif
|
||||||
|
@ -309,6 +309,9 @@ enum settings_list_type
|
|||||||
SETTINGS_LIST_DIRECTORY,
|
SETTINGS_LIST_DIRECTORY,
|
||||||
SETTINGS_LIST_PRIVACY,
|
SETTINGS_LIST_PRIVACY,
|
||||||
SETTINGS_LIST_MIDI,
|
SETTINGS_LIST_MIDI,
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
SETTINGS_LIST_STEAM,
|
||||||
|
#endif
|
||||||
SETTINGS_LIST_MANUAL_CONTENT_SCAN
|
SETTINGS_LIST_MANUAL_CONTENT_SCAN
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -6860,6 +6863,42 @@ static void setting_get_string_representation_uint_menu_screensaver_animation(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
static void setting_get_string_representation_steam_rich_presence_format(
|
||||||
|
rarch_setting_t *setting,
|
||||||
|
char *s, size_t len)
|
||||||
|
{
|
||||||
|
if (!setting)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (*setting->value.target.unsigned_integer)
|
||||||
|
{
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT), len);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CORE:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CORE), len);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_SYSTEM:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_SYSTEM), len);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM), len);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT_CORE:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_CORE), len);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM_CORE:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM_CORE), len);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_NONE:
|
||||||
|
default:
|
||||||
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NONE), len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
enum setting_type menu_setting_get_browser_selection_type(rarch_setting_t *setting)
|
enum setting_type menu_setting_get_browser_selection_type(rarch_setting_t *setting)
|
||||||
{
|
{
|
||||||
if (!setting)
|
if (!setting)
|
||||||
@ -9888,6 +9927,16 @@ static bool setting_append_list(
|
|||||||
&subgroup_info,
|
&subgroup_info,
|
||||||
parent_group);
|
parent_group);
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
CONFIG_ACTION(
|
||||||
|
list, list_info,
|
||||||
|
MENU_ENUM_LABEL_STEAM_SETTINGS,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_SETTINGS,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (string_is_not_equal(settings->arrays.midi_driver, "null"))
|
if (string_is_not_equal(settings->arrays.midi_driver, "null"))
|
||||||
{
|
{
|
||||||
CONFIG_ACTION(
|
CONFIG_ACTION(
|
||||||
@ -18341,6 +18390,23 @@ static bool setting_append_list(
|
|||||||
general_read_handler,
|
general_read_handler,
|
||||||
SD_FLAG_NONE);
|
SD_FLAG_NONE);
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.settings_show_steam,
|
||||||
|
MENU_ENUM_LABEL_SETTINGS_SHOW_STEAM,
|
||||||
|
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_STEAM,
|
||||||
|
DEFAULT_SETTINGS_SHOW_STEAM,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_NONE);
|
||||||
|
#endif
|
||||||
|
|
||||||
CONFIG_BOOL(
|
CONFIG_BOOL(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
&settings->bools.quick_menu_show_take_screenshot,
|
&settings->bools.quick_menu_show_take_screenshot,
|
||||||
@ -21120,6 +21186,55 @@ static bool setting_append_list(
|
|||||||
END_SUB_GROUP(list, list_info, parent_group);
|
END_SUB_GROUP(list, list_info, parent_group);
|
||||||
END_GROUP(list, list_info, parent_group);
|
END_GROUP(list, list_info, parent_group);
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
case SETTINGS_LIST_STEAM:
|
||||||
|
START_GROUP(list, list_info, &group_info,
|
||||||
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_SETTINGS), parent_group);
|
||||||
|
|
||||||
|
parent_group = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_STEAM_SETTINGS);
|
||||||
|
|
||||||
|
START_SUB_GROUP(list, list_info, "State",
|
||||||
|
&group_info, &subgroup_info, parent_group);
|
||||||
|
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.steam_rich_presence_enable,
|
||||||
|
MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_ENABLE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_ENABLE,
|
||||||
|
false,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_NONE);
|
||||||
|
(*list)[list_info->index - 1].action_ok = &setting_bool_action_left_with_refresh;
|
||||||
|
(*list)[list_info->index - 1].action_left = &setting_bool_action_left_with_refresh;
|
||||||
|
(*list)[list_info->index - 1].action_right = &setting_bool_action_right_with_refresh;
|
||||||
|
|
||||||
|
CONFIG_UINT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->uints.steam_rich_presence_format,
|
||||||
|
MENU_ENUM_LABEL_STEAM_RICH_PRESENCE_FORMAT,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT,
|
||||||
|
DEFAULT_STEAM_RICH_PRESENCE_FORMAT,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX;
|
||||||
|
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||||
|
(*list)[list_info->index - 1].get_string_representation =
|
||||||
|
&setting_get_string_representation_steam_rich_presence_format;
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0, (STEAM_RICH_PRESENCE_FORMAT_LAST-1), 1, true, true);
|
||||||
|
|
||||||
|
END_SUB_GROUP(list, list_info, parent_group);
|
||||||
|
END_GROUP(list, list_info, parent_group);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case SETTINGS_LIST_NONE:
|
case SETTINGS_LIST_NONE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -21268,6 +21383,9 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
|
|||||||
SETTINGS_LIST_DIRECTORY,
|
SETTINGS_LIST_DIRECTORY,
|
||||||
SETTINGS_LIST_PRIVACY,
|
SETTINGS_LIST_PRIVACY,
|
||||||
SETTINGS_LIST_MIDI,
|
SETTINGS_LIST_MIDI,
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
SETTINGS_LIST_STEAM,
|
||||||
|
#endif
|
||||||
SETTINGS_LIST_MANUAL_CONTENT_SCAN
|
SETTINGS_LIST_MANUAL_CONTENT_SCAN
|
||||||
};
|
};
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
15
msg_hash.h
15
msg_hash.h
@ -1301,6 +1301,7 @@ enum msg_hash_enums
|
|||||||
MENU_LABEL(SETTINGS_SHOW_PLAYLISTS),
|
MENU_LABEL(SETTINGS_SHOW_PLAYLISTS),
|
||||||
MENU_LABEL(SETTINGS_SHOW_USER),
|
MENU_LABEL(SETTINGS_SHOW_USER),
|
||||||
MENU_LABEL(SETTINGS_SHOW_DIRECTORY),
|
MENU_LABEL(SETTINGS_SHOW_DIRECTORY),
|
||||||
|
MENU_LABEL(SETTINGS_SHOW_STEAM),
|
||||||
MENU_LABEL(QUICK_MENU_SHOW_RESUME_CONTENT),
|
MENU_LABEL(QUICK_MENU_SHOW_RESUME_CONTENT),
|
||||||
MENU_LABEL(QUICK_MENU_SHOW_RESTART_CONTENT),
|
MENU_LABEL(QUICK_MENU_SHOW_RESTART_CONTENT),
|
||||||
MENU_LABEL(QUICK_MENU_SHOW_CLOSE_CONTENT),
|
MENU_LABEL(QUICK_MENU_SHOW_CLOSE_CONTENT),
|
||||||
@ -1592,6 +1593,7 @@ enum msg_hash_enums
|
|||||||
MENU_ENUM_LABEL_DEFERRED_CORE_UPDATER_LIST,
|
MENU_ENUM_LABEL_DEFERRED_CORE_UPDATER_LIST,
|
||||||
MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST,
|
MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST,
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
MENU_ENUM_LABEL_DEFERRED_STEAM_SETTINGS_LIST,
|
||||||
MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST,
|
MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_STEAM_LIST,
|
||||||
#endif
|
#endif
|
||||||
MENU_ENUM_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST,
|
MENU_ENUM_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST,
|
||||||
@ -2310,6 +2312,19 @@ enum msg_hash_enums
|
|||||||
MENU_LABEL(CORE_UPDATER_LIST),
|
MENU_LABEL(CORE_UPDATER_LIST),
|
||||||
MENU_LABEL(CORE_MANAGER_LIST),
|
MENU_LABEL(CORE_MANAGER_LIST),
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
|
/* Steam settings */
|
||||||
|
MENU_LABEL(STEAM_SETTINGS),
|
||||||
|
MENU_LABEL(STEAM_RICH_PRESENCE_ENABLE),
|
||||||
|
MENU_LABEL(STEAM_RICH_PRESENCE_FORMAT),
|
||||||
|
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CORE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_SYSTEM,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_CORE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM_CORE,
|
||||||
|
|
||||||
|
/* Steam Core Manager */
|
||||||
MENU_LABEL(CORE_MANAGER_STEAM_LIST),
|
MENU_LABEL(CORE_MANAGER_STEAM_LIST),
|
||||||
MENU_LABEL(CORE_STEAM_INSTALL),
|
MENU_LABEL(CORE_STEAM_INSTALL),
|
||||||
MENU_LABEL(CORE_STEAM_UNINSTALL),
|
MENU_LABEL(CORE_STEAM_UNINSTALL),
|
||||||
|
@ -187,7 +187,7 @@ static void handle_discord_join_cb(retro_task_t *task,
|
|||||||
room->gamename, join_hostname, room->corename, room->subsystem_name);
|
room->gamename, join_hostname, room->corename, room->subsystem_name);
|
||||||
discord_st->connecting = true;
|
discord_st->connecting = true;
|
||||||
if (discord_st->ready)
|
if (discord_st->ready)
|
||||||
discord_update(DISCORD_PRESENCE_NETPLAY_CLIENT);
|
discord_update(PRESENCE_NETPLAY_CLIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
@ -261,7 +261,7 @@ static void handle_discord_join_request(const DiscordUser* request)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void discord_update(enum discord_presence presence)
|
void discord_update(enum presence presence)
|
||||||
{
|
{
|
||||||
discord_state_t *discord_st = &discord_state_st;
|
discord_state_t *discord_st = &discord_state_st;
|
||||||
#ifdef HAVE_CHEEVOS
|
#ifdef HAVE_CHEEVOS
|
||||||
@ -273,8 +273,8 @@ void discord_update(enum discord_presence presence)
|
|||||||
|
|
||||||
if (!discord_st->connecting
|
if (!discord_st->connecting
|
||||||
&&
|
&&
|
||||||
( presence == DISCORD_PRESENCE_NONE
|
( presence == PRESENCE_NONE
|
||||||
|| presence == DISCORD_PRESENCE_MENU))
|
|| presence == PRESENCE_MENU))
|
||||||
{
|
{
|
||||||
memset(&discord_st->presence,
|
memset(&discord_st->presence,
|
||||||
0, sizeof(discord_st->presence));
|
0, sizeof(discord_st->presence));
|
||||||
@ -283,7 +283,7 @@ void discord_update(enum discord_presence presence)
|
|||||||
|
|
||||||
switch (presence)
|
switch (presence)
|
||||||
{
|
{
|
||||||
case DISCORD_PRESENCE_MENU:
|
case PRESENCE_MENU:
|
||||||
discord_st->presence.details = msg_hash_to_str(
|
discord_st->presence.details = msg_hash_to_str(
|
||||||
MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU);
|
MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU);
|
||||||
discord_st->presence.largeImageKey = "base";
|
discord_st->presence.largeImageKey = "base";
|
||||||
@ -291,7 +291,7 @@ void discord_update(enum discord_presence presence)
|
|||||||
MENU_ENUM_LABEL_VALUE_NO_CORE);
|
MENU_ENUM_LABEL_VALUE_NO_CORE);
|
||||||
discord_st->presence.instance = 0;
|
discord_st->presence.instance = 0;
|
||||||
break;
|
break;
|
||||||
case DISCORD_PRESENCE_GAME_PAUSED:
|
case PRESENCE_GAME_PAUSED:
|
||||||
discord_st->presence.smallImageKey = "paused";
|
discord_st->presence.smallImageKey = "paused";
|
||||||
discord_st->presence.smallImageText = msg_hash_to_str(
|
discord_st->presence.smallImageText = msg_hash_to_str(
|
||||||
MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED);
|
MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED);
|
||||||
@ -302,7 +302,7 @@ void discord_update(enum discord_presence presence)
|
|||||||
discord_st->start_time);
|
discord_st->start_time);
|
||||||
discord_st->presence.startTimestamp = discord_st->pause_time;
|
discord_st->presence.startTimestamp = discord_st->pause_time;
|
||||||
break;
|
break;
|
||||||
case DISCORD_PRESENCE_GAME:
|
case PRESENCE_GAME:
|
||||||
{
|
{
|
||||||
core_info_t *core_info = NULL;
|
core_info_t *core_info = NULL;
|
||||||
core_info_get_current_core(&core_info);
|
core_info_get_current_core(&core_info);
|
||||||
@ -372,7 +372,7 @@ void discord_update(enum discord_presence presence)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DISCORD_PRESENCE_NETPLAY_HOSTING:
|
case PRESENCE_NETPLAY_HOSTING:
|
||||||
{
|
{
|
||||||
char join_secret[128];
|
char join_secret[128];
|
||||||
struct netplay_room *room = &networking_state_get_ptr()->host_room;
|
struct netplay_room *room = &networking_state_get_ptr()->host_room;
|
||||||
@ -394,10 +394,10 @@ void discord_update(enum discord_presence presence)
|
|||||||
discord_st->presence.partySize = 1;
|
discord_st->presence.partySize = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DISCORD_PRESENCE_NETPLAY_CLIENT:
|
case PRESENCE_NETPLAY_CLIENT:
|
||||||
discord_st->presence.partyId = strdup(discord_st->peer_party_id);
|
discord_st->presence.partyId = strdup(discord_st->peer_party_id);
|
||||||
break;
|
break;
|
||||||
case DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED:
|
case PRESENCE_NETPLAY_NETPLAY_STOPPED:
|
||||||
{
|
{
|
||||||
if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL) &&
|
if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL) &&
|
||||||
!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_CONNECTED, NULL))
|
!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_CONNECTED, NULL))
|
||||||
@ -412,16 +412,16 @@ void discord_update(enum discord_presence presence)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_CHEEVOS
|
#ifdef HAVE_CHEEVOS
|
||||||
case DISCORD_PRESENCE_RETROACHIEVEMENTS:
|
case PRESENCE_RETROACHIEVEMENTS:
|
||||||
if (discord_st->pause_time)
|
if (discord_st->pause_time)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (rcheevos_get_richpresence(cheevos_richpresence, sizeof(cheevos_richpresence)) > 0)
|
if (rcheevos_get_richpresence(cheevos_richpresence, sizeof(cheevos_richpresence)) > 0)
|
||||||
discord_st->presence.details = cheevos_richpresence;
|
discord_st->presence.details = cheevos_richpresence;
|
||||||
presence = DISCORD_PRESENCE_GAME;
|
presence = PRESENCE_GAME;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case DISCORD_PRESENCE_SHUTDOWN:
|
case PRESENCE_SHUTDOWN:
|
||||||
discord_st->presence.partyId = NULL;
|
discord_st->presence.partyId = NULL;
|
||||||
discord_st->presence.partyMax = 0;
|
discord_st->presence.partyMax = 0;
|
||||||
discord_st->presence.partySize = 0;
|
discord_st->presence.partySize = 0;
|
||||||
|
@ -25,24 +25,7 @@
|
|||||||
|
|
||||||
#include <discord_rpc.h>
|
#include <discord_rpc.h>
|
||||||
#include "../deps/discord-rpc/include/discord_rpc.h"
|
#include "../deps/discord-rpc/include/discord_rpc.h"
|
||||||
|
#include "presence.h"
|
||||||
enum discord_presence
|
|
||||||
{
|
|
||||||
DISCORD_PRESENCE_NONE = 0,
|
|
||||||
DISCORD_PRESENCE_MENU,
|
|
||||||
DISCORD_PRESENCE_GAME,
|
|
||||||
DISCORD_PRESENCE_GAME_PAUSED,
|
|
||||||
DISCORD_PRESENCE_NETPLAY_HOSTING,
|
|
||||||
DISCORD_PRESENCE_NETPLAY_CLIENT,
|
|
||||||
DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED,
|
|
||||||
DISCORD_PRESENCE_RETROACHIEVEMENTS,
|
|
||||||
DISCORD_PRESENCE_SHUTDOWN
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct discord_userdata
|
|
||||||
{
|
|
||||||
enum discord_presence status;
|
|
||||||
} discord_userdata_t;
|
|
||||||
|
|
||||||
/* The Discord API specifies these variables:
|
/* The Discord API specifies these variables:
|
||||||
- userId --------- char[24] - the userId of the player asking to join
|
- userId --------- char[24] - the userId of the player asking to join
|
||||||
@ -76,7 +59,7 @@ struct discord_state
|
|||||||
|
|
||||||
typedef struct discord_state discord_state_t;
|
typedef struct discord_state discord_state_t;
|
||||||
|
|
||||||
void discord_update(enum discord_presence presence);
|
void discord_update(enum presence presence);
|
||||||
|
|
||||||
bool discord_is_ready(void);
|
bool discord_is_ready(void);
|
||||||
|
|
||||||
|
@ -45,6 +45,9 @@
|
|||||||
#include <string/stdstring.h>
|
#include <string/stdstring.h>
|
||||||
#include <file/file_path.h>
|
#include <file/file_path.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_PRESENCE
|
||||||
|
#include "../presence.h"
|
||||||
|
#endif
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_DISCORD
|
||||||
#include "../discord.h"
|
#include "../discord.h"
|
||||||
#endif
|
#endif
|
||||||
@ -3965,13 +3968,10 @@ void netplay_hangup(netplay_t *netplay,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
dmsg = msg_hash_to_str(MSG_NETPLAY_CLIENT_HANGUP);
|
dmsg = msg_hash_to_str(MSG_NETPLAY_CLIENT_HANGUP);
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_state_get_ptr()->inited)
|
presence_userdata_t userdata;
|
||||||
{
|
userdata.status = PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
||||||
discord_userdata_t userdata;
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
netplay->is_connected = false;
|
netplay->is_connected = false;
|
||||||
}
|
}
|
||||||
@ -7861,13 +7861,10 @@ static void netplay_announce_cb(retro_task_t *task,
|
|||||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_state_get_ptr()->inited)
|
presence_userdata_t userdata;
|
||||||
{
|
userdata.status = PRESENCE_NETPLAY_HOSTING;
|
||||||
discord_userdata_t userdata;
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_NETPLAY_HOSTING;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8156,13 +8153,10 @@ static void netplay_disconnect(netplay_t *netplay)
|
|||||||
|
|
||||||
deinit_netplay();
|
deinit_netplay();
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_state_get_ptr()->inited)
|
presence_userdata_t userdata;
|
||||||
{
|
userdata.status = PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
||||||
discord_userdata_t userdata;
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8442,13 +8436,10 @@ bool netplay_driver_ctl(enum rarch_netplay_ctl_state state, void *data)
|
|||||||
|
|
||||||
case RARCH_NETPLAY_CTL_DISABLE:
|
case RARCH_NETPLAY_CTL_DISABLE:
|
||||||
net_st->netplay_enabled = false;
|
net_st->netplay_enabled = false;
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_state_get_ptr()->inited)
|
presence_userdata_t userdata;
|
||||||
{
|
userdata.status = PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
||||||
discord_userdata_t userdata;
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
22
network/presence.c
Normal file
22
network/presence.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include "presence.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_DISCORD
|
||||||
|
#include "discord.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
#include "steam/steam.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void presence_update(enum presence presence)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_DISCORD
|
||||||
|
discord_state_t *discord_st = discord_state_get_ptr();
|
||||||
|
|
||||||
|
if (discord_st->ready)
|
||||||
|
discord_update(presence);
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_MIST
|
||||||
|
steam_update_presence(presence, false);
|
||||||
|
#endif
|
||||||
|
}
|
24
network/presence.h
Normal file
24
network/presence.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef __RARCH_PRESENCE_H
|
||||||
|
#define __RARCH_PRESENCE_H
|
||||||
|
|
||||||
|
enum presence
|
||||||
|
{
|
||||||
|
PRESENCE_NONE = 0,
|
||||||
|
PRESENCE_MENU,
|
||||||
|
PRESENCE_GAME,
|
||||||
|
PRESENCE_GAME_PAUSED,
|
||||||
|
PRESENCE_NETPLAY_HOSTING,
|
||||||
|
PRESENCE_NETPLAY_CLIENT,
|
||||||
|
PRESENCE_NETPLAY_NETPLAY_STOPPED,
|
||||||
|
PRESENCE_RETROACHIEVEMENTS,
|
||||||
|
PRESENCE_SHUTDOWN
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct presence_userdata
|
||||||
|
{
|
||||||
|
enum presence status;
|
||||||
|
} presence_userdata_t;
|
||||||
|
|
||||||
|
void presence_update(enum presence presence);
|
||||||
|
|
||||||
|
#endif /* __RARCH_PRESENCE_H */
|
59
retroarch.c
59
retroarch.c
@ -102,6 +102,9 @@
|
|||||||
#include "play_feature_delivery/play_feature_delivery.h"
|
#include "play_feature_delivery/play_feature_delivery.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_PRESENCE
|
||||||
|
#include "network/presence.h"
|
||||||
|
#endif
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_DISCORD
|
||||||
#include "network/discord.h"
|
#include "network/discord.h"
|
||||||
#endif
|
#endif
|
||||||
@ -1948,15 +1951,12 @@ bool command_event(enum event_command cmd, void *data)
|
|||||||
if (!task_push_start_dummy_core(&content_info))
|
if (!task_push_start_dummy_core(&content_info))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_state_get_ptr()->inited)
|
presence_userdata_t userdata;
|
||||||
{
|
userdata.status = PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
||||||
discord_userdata_t userdata;
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
userdata.status = PRESENCE_MENU;
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_MENU;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_DYNAMIC
|
#ifdef HAVE_DYNAMIC
|
||||||
path_clear(RARCH_PATH_CORE);
|
path_clear(RARCH_PATH_CORE);
|
||||||
@ -3342,17 +3342,15 @@ bool command_event(enum event_command cmd, void *data)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case CMD_EVENT_DISCORD_UPDATE:
|
case CMD_EVENT_PRESENCE_UPDATE:
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
discord_userdata_t *userdata = NULL;
|
presence_userdata_t *userdata = NULL;
|
||||||
discord_state_t *discord_st = discord_state_get_ptr();
|
if (!data)
|
||||||
if (!data || !discord_st->ready)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
userdata = (discord_userdata_t*)data;
|
userdata = (presence_userdata_t*)data;
|
||||||
if (discord_st->ready)
|
presence_update(userdata->status);
|
||||||
discord_update(userdata->status);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -5497,17 +5495,16 @@ bool retroarch_main_init(int argc, char *argv[])
|
|||||||
|
|
||||||
if (command_event(CMD_EVENT_DISCORD_INIT, NULL))
|
if (command_event(CMD_EVENT_DISCORD_INIT, NULL))
|
||||||
discord_st->inited = true;
|
discord_st->inited = true;
|
||||||
|
|
||||||
if (discord_st->inited)
|
|
||||||
{
|
|
||||||
discord_userdata_t userdata;
|
|
||||||
userdata.status = DISCORD_PRESENCE_MENU;
|
|
||||||
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_PRESENCE
|
||||||
|
presence_userdata_t userdata;
|
||||||
|
userdata.status = PRESENCE_MENU;
|
||||||
|
|
||||||
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_AUDIOMIXER)
|
#if defined(HAVE_AUDIOMIXER)
|
||||||
audio_driver_load_system_sounds();
|
audio_driver_load_system_sounds();
|
||||||
#endif
|
#endif
|
||||||
@ -6013,14 +6010,14 @@ bool retroarch_main_quit(void)
|
|||||||
runloop_state_t *runloop_st = runloop_state_get_ptr();
|
runloop_state_t *runloop_st = runloop_state_get_ptr();
|
||||||
video_driver_state_t*video_st = video_state_get_ptr();
|
video_driver_state_t*video_st = video_state_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
#ifdef HAVE_PRESENCE
|
||||||
|
presence_userdata_t userdata;
|
||||||
|
userdata.status = PRESENCE_SHUTDOWN;
|
||||||
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
|
#endif
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_DISCORD
|
||||||
discord_state_t *discord_st = discord_state_get_ptr();
|
discord_state_t *discord_st = discord_state_get_ptr();
|
||||||
if (discord_st->inited)
|
|
||||||
{
|
|
||||||
discord_userdata_t userdata;
|
|
||||||
userdata.status = DISCORD_PRESENCE_SHUTDOWN;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
if (discord_st->ready)
|
if (discord_st->ready)
|
||||||
{
|
{
|
||||||
Discord_ClearPresence();
|
Discord_ClearPresence();
|
||||||
|
26
runloop.c
26
runloop.c
@ -106,6 +106,9 @@
|
|||||||
#include "play_feature_delivery/play_feature_delivery.h"
|
#include "play_feature_delivery/play_feature_delivery.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_PRESENCE
|
||||||
|
#include "network/presence.h"
|
||||||
|
#endif
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_DISCORD
|
||||||
#include "network/discord.h"
|
#include "network/discord.h"
|
||||||
#endif
|
#endif
|
||||||
@ -5457,8 +5460,8 @@ void runloop_runahead_clear_variables(runloop_state_t *runloop_st)
|
|||||||
|
|
||||||
void runloop_pause_checks(void)
|
void runloop_pause_checks(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
discord_userdata_t userdata;
|
presence_userdata_t userdata;
|
||||||
#endif
|
#endif
|
||||||
runloop_state_t *runloop_st = &runloop_state;
|
runloop_state_t *runloop_st = &runloop_state;
|
||||||
bool is_paused = runloop_st->paused;
|
bool is_paused = runloop_st->paused;
|
||||||
@ -5483,9 +5486,9 @@ void runloop_pause_checks(void)
|
|||||||
if (!is_idle)
|
if (!is_idle)
|
||||||
video_driver_cached_frame();
|
video_driver_cached_frame();
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
userdata.status = DISCORD_PRESENCE_GAME_PAUSED;
|
userdata.status = PRESENCE_GAME_PAUSED;
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_LAKKA_SWITCH
|
#ifndef HAVE_LAKKA_SWITCH
|
||||||
@ -6162,11 +6165,11 @@ static bool display_menu_libretro(
|
|||||||
|
|
||||||
if (runloop_idle)
|
if (runloop_idle)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
discord_userdata_t userdata;
|
presence_userdata_t userdata;
|
||||||
userdata.status = DISCORD_PRESENCE_GAME_PAUSED;
|
userdata.status = PRESENCE_GAME_PAUSED;
|
||||||
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -7692,9 +7695,8 @@ int runloop_iterate(void)
|
|||||||
#ifdef HAVE_CHEATS
|
#ifdef HAVE_CHEATS
|
||||||
cheat_manager_apply_retro_cheats();
|
cheat_manager_apply_retro_cheats();
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_st->inited && discord_st->ready)
|
presence_update(PRESENCE_GAME);
|
||||||
discord_update(DISCORD_PRESENCE_GAME);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Restores analog D-pad binds temporarily overridden. */
|
/* Restores analog D-pad binds temporarily overridden. */
|
||||||
|
106
steam/steam.c
106
steam/steam.c
@ -9,6 +9,7 @@
|
|||||||
#include "../menu/menu_entries.h"
|
#include "../menu/menu_entries.h"
|
||||||
#include "../retroarch.h"
|
#include "../retroarch.h"
|
||||||
#include "../runloop.h"
|
#include "../runloop.h"
|
||||||
|
#include "paths.h"
|
||||||
#include "verbosity.h"
|
#include "verbosity.h"
|
||||||
|
|
||||||
#include "steam.h"
|
#include "steam.h"
|
||||||
@ -16,6 +17,7 @@
|
|||||||
static bool mist_initialized = false;
|
static bool mist_initialized = false;
|
||||||
static bool mist_showing_osk = false;
|
static bool mist_showing_osk = false;
|
||||||
static steam_core_dlc_list_t *mist_dlc_list = NULL;
|
static steam_core_dlc_list_t *mist_dlc_list = NULL;
|
||||||
|
static enum presence last_presence = PRESENCE_NONE;
|
||||||
|
|
||||||
void str_to_lower(char *str)
|
void str_to_lower(char *str)
|
||||||
{
|
{
|
||||||
@ -43,7 +45,9 @@ void steam_poll(void)
|
|||||||
MistCallbackMsg callback;
|
MistCallbackMsg callback;
|
||||||
steam_core_dlc_list_t *core_dlc_list;
|
steam_core_dlc_list_t *core_dlc_list;
|
||||||
bool has_callback = false;
|
bool has_callback = false;
|
||||||
|
settings_t* settings = config_get_ptr();
|
||||||
static bool has_poll_errored = false;
|
static bool has_poll_errored = false;
|
||||||
|
static bool has_rich_presence_enabled = false;
|
||||||
|
|
||||||
result = mist_poll();
|
result = mist_poll();
|
||||||
if (MIST_IS_ERROR(result))
|
if (MIST_IS_ERROR(result))
|
||||||
@ -79,6 +83,13 @@ void steam_poll(void)
|
|||||||
|
|
||||||
result = mist_next_callback(&has_callback, &callback);
|
result = mist_next_callback(&has_callback, &callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ensure rich presence state is correct */
|
||||||
|
if(settings->bools.steam_rich_presence_enable != has_rich_presence_enabled)
|
||||||
|
{
|
||||||
|
steam_update_presence(last_presence, true);
|
||||||
|
has_rich_presence_enabled = settings->bools.steam_rich_presence_enable;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
steam_core_dlc_list_t *steam_core_dlc_list_new(size_t count)
|
steam_core_dlc_list_t *steam_core_dlc_list_new(size_t count)
|
||||||
@ -350,6 +361,101 @@ bool steam_has_osk_open(void)
|
|||||||
return mist_showing_osk;
|
return mist_showing_osk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void steam_update_presence(enum presence presence, bool force)
|
||||||
|
{
|
||||||
|
settings_t* settings = config_get_ptr();
|
||||||
|
|
||||||
|
if (!mist_initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Avoid spamming steam with presence updates */
|
||||||
|
if (presence == last_presence && !force)
|
||||||
|
return;
|
||||||
|
last_presence = presence;
|
||||||
|
|
||||||
|
/* Ensure rich presence is enabled */
|
||||||
|
if(!settings->bools.steam_rich_presence_enable)
|
||||||
|
{
|
||||||
|
mist_steam_friends_clear_rich_presence();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (presence)
|
||||||
|
{
|
||||||
|
case PRESENCE_MENU:
|
||||||
|
mist_steam_friends_set_rich_presence("steam_display", "#Status_InMenu");
|
||||||
|
break;
|
||||||
|
case PRESENCE_GAME_PAUSED:
|
||||||
|
mist_steam_friends_set_rich_presence("steam_display", "#Status_Paused");
|
||||||
|
break;
|
||||||
|
case PRESENCE_GAME:
|
||||||
|
{
|
||||||
|
const char *label = NULL;
|
||||||
|
const struct playlist_entry *entry = NULL;
|
||||||
|
core_info_t *core_info = NULL;
|
||||||
|
playlist_t *current_playlist = playlist_get_cached();
|
||||||
|
char content[PATH_MAX_LENGTH] = {0};
|
||||||
|
|
||||||
|
core_info_get_current_core(&core_info);
|
||||||
|
|
||||||
|
if (current_playlist)
|
||||||
|
{
|
||||||
|
playlist_get_index_by_path(
|
||||||
|
current_playlist,
|
||||||
|
path_get(RARCH_PATH_CONTENT),
|
||||||
|
&entry);
|
||||||
|
|
||||||
|
if (entry && !string_is_empty(entry->label))
|
||||||
|
label = entry->label;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!label)
|
||||||
|
label = path_basename(path_get(RARCH_PATH_BASENAME));
|
||||||
|
|
||||||
|
switch(settings->uints.steam_rich_presence_format)
|
||||||
|
{
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT:
|
||||||
|
strncpy(content, label, sizeof(content) - 1);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CORE:
|
||||||
|
strncpy(content, core_info ? core_info->core_name : "N/A", sizeof(content) - 1);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_SYSTEM:
|
||||||
|
strncpy(content, core_info ? core_info->systemname : "N/A", sizeof(content) - 1);
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM:
|
||||||
|
snprintf(content, sizeof(content) - 1, "%s (%s)",
|
||||||
|
label,
|
||||||
|
core_info ? core_info->systemname : "N/A");
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT_CORE:
|
||||||
|
snprintf(content, sizeof(content) - 1, "%s (%s)",
|
||||||
|
label,
|
||||||
|
core_info ? core_info->core_name : "N/A");
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM_CORE:
|
||||||
|
snprintf(content, sizeof(content) - 1, "%s (%s - %s)",
|
||||||
|
label,
|
||||||
|
core_info ? core_info->systemname : "N/A",
|
||||||
|
core_info ? core_info->core_name : "N/A");
|
||||||
|
break;
|
||||||
|
case STEAM_RICH_PRESENCE_FORMAT_NONE:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mist_steam_friends_set_rich_presence("content", content);
|
||||||
|
mist_steam_friends_set_rich_presence("steam_display",
|
||||||
|
settings->uints.steam_rich_presence_format != STEAM_RICH_PRESENCE_FORMAT_NONE
|
||||||
|
? "#Status_RunningContent" : "#Status_Running" );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void steam_deinit(void)
|
void steam_deinit(void)
|
||||||
{
|
{
|
||||||
MistResult result;
|
MistResult result;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <mist.h>
|
#include <mist.h>
|
||||||
|
|
||||||
#include "core_info.h"
|
#include "core_info.h"
|
||||||
|
#include "network/presence.h"
|
||||||
|
|
||||||
#define MIST_UNPACK_RESULT(result) MIST_RESULT_CODE(result), MIST_ERROR(result)
|
#define MIST_UNPACK_RESULT(result) MIST_RESULT_CODE(result), MIST_ERROR(result)
|
||||||
|
|
||||||
@ -23,6 +24,18 @@ typedef struct
|
|||||||
size_t count;
|
size_t count;
|
||||||
} steam_core_dlc_list_t;
|
} steam_core_dlc_list_t;
|
||||||
|
|
||||||
|
enum steam_rich_presence_running_format
|
||||||
|
{
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_NONE = 0,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_CONTENT,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_CORE,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_SYSTEM,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_CONTENT_CORE,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_CONTENT_SYSTEM_CORE,
|
||||||
|
STEAM_RICH_PRESENCE_FORMAT_LAST
|
||||||
|
};
|
||||||
|
|
||||||
void steam_init(void);
|
void steam_init(void);
|
||||||
|
|
||||||
void steam_deinit(void);
|
void steam_deinit(void);
|
||||||
@ -41,6 +54,8 @@ void steam_uninstall_core_dlc(steam_core_dlc_t *core_dlc);
|
|||||||
bool steam_open_osk(void);
|
bool steam_open_osk(void);
|
||||||
bool steam_has_osk_open(void);
|
bool steam_has_osk_open(void);
|
||||||
|
|
||||||
|
void steam_update_presence(enum presence presence, bool force);
|
||||||
|
|
||||||
/* Located in tasks/task_steam.c */
|
/* Located in tasks/task_steam.c */
|
||||||
void task_push_steam_core_dlc_install(AppId app_id, const char *name);
|
void task_push_steam_core_dlc_install(AppId app_id, const char *name);
|
||||||
|
|
||||||
|
@ -103,8 +103,8 @@
|
|||||||
#include "../paths.h"
|
#include "../paths.h"
|
||||||
#include "../verbosity.h"
|
#include "../verbosity.h"
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
#include "../network/discord.h"
|
#include "../network/presence.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MAX_ARGS 32
|
#define MAX_ARGS 32
|
||||||
@ -2456,15 +2456,12 @@ static bool task_load_content_internal(
|
|||||||
if (firmware_update_status(&content_ctx))
|
if (firmware_update_status(&content_ctx))
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_PRESENCE
|
||||||
if (discord_state_get_ptr()->inited)
|
presence_userdata_t userdata;
|
||||||
{
|
userdata.status = PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
||||||
discord_userdata_t userdata;
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_NETPLAY_NETPLAY_STOPPED;
|
userdata.status = PRESENCE_MENU;
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
command_event(CMD_EVENT_PRESENCE_UPDATE, &userdata);
|
||||||
userdata.status = DISCORD_PRESENCE_MENU;
|
|
||||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Loads content into currently selected core. */
|
/* Loads content into currently selected core. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user