(Cthulhu88) Add netplay hotkey bind

This commit is contained in:
twinaphex 2021-11-10 04:58:59 +01:00
parent 1fc73f11b5
commit deaf116d38
4 changed files with 21 additions and 11 deletions

View File

@ -202,6 +202,8 @@ enum event_command
CMD_EVENT_NETPLAY_DEINIT,
/* Switch between netplay gaming and watching. */
CMD_EVENT_NETPLAY_GAME_WATCH,
/* Open a netplay chat input menu. */
CMD_EVENT_NETPLAY_PLAYER_CHAT,
/* Start hosting netplay. */
CMD_EVENT_NETPLAY_ENABLE_HOST,
/* Disconnect from the netplay host. */

View File

@ -43,6 +43,7 @@ enum rarch_netplay_ctl_state
{
RARCH_NETPLAY_CTL_NONE = 0,
RARCH_NETPLAY_CTL_GAME_WATCH,
RARCH_NETPLAY_CTL_PLAYER_CHAT,
RARCH_NETPLAY_CTL_POST_FRAME,
RARCH_NETPLAY_CTL_PRE_FRAME,
RARCH_NETPLAY_CTL_ENABLE_SERVER,
@ -188,7 +189,6 @@ typedef struct
{
netplay_t *data; /* Used while Netplay is running */
struct netplay_room host_room; /* ptr alignment */
netplay_t *ref;
struct netplay_room *room_list;
struct netplay_rooms *rooms_data;
/* List of discovered hosts */

View File

@ -893,9 +893,14 @@ static void handshake_password(void *ignore, const char *line)
struct password_buf_s password_buf;
char password[8+NETPLAY_PASS_LEN]; /* 8 for salt, 128 for password */
char hash[NETPLAY_PASS_HASH_LEN+1]; /* + NULL terminator */
struct netplay_connection *connection;
net_driver_state_t *net_st = &networking_driver_st;
netplay_t *netplay = net_st->ref;
struct netplay_connection *connection = &netplay->connections[0];
netplay_t *netplay = net_st->data;
if (!netplay)
return;
connection = &netplay->connections[0];
snprintf(password, sizeof(password), "%08lX", (unsigned long)connection->salt);
if (!string_is_empty(line))
@ -1071,11 +1076,6 @@ bool netplay_handshake_init(netplay_t *netplay,
#ifdef HAVE_MENU
menu_input_ctx_line_t line;
retroarch_menu_running();
#endif
net_st->ref = netplay;
#ifdef HAVE_MENU
memset(&line, 0, sizeof(line));
line.label = msg_hash_to_str(MSG_NETPLAY_ENTER_PASSWORD);
line.label_setting = "no_setting";
@ -4470,7 +4470,7 @@ static void send_chat(void *userdata, const char *line)
char chat_msg[MAX_CHAT_SIZE];
size_t chat_len;
net_driver_state_t *net_st = &networking_driver_st;
netplay_t *netplay = net_st->ref;
netplay_t *netplay = net_st->data;
/* We perform the same checks,
just in case something has changed. */
@ -4512,8 +4512,6 @@ void netplay_input_chat(netplay_t *netplay)
retroarch_menu_running();
net_st->ref = netplay;
chat_input.label = msg_hash_to_str(MSG_NETPLAY_ENTER_CHAT);
chat_input.label_setting = "no_setting";
chat_input.cb = send_chat;
@ -7731,6 +7729,9 @@ bool netplay_driver_ctl(enum rarch_netplay_ctl_state state, void *data)
case RARCH_NETPLAY_CTL_GAME_WATCH:
netplay_toggle_play_spectate(netplay);
break;
case RARCH_NETPLAY_CTL_PLAYER_CHAT:
netplay_input_chat(netplay);
break;
case RARCH_NETPLAY_CTL_PAUSE:
if (netplay->local_paused != true)
netplay_frontend_paused(netplay, true);

View File

@ -5295,6 +5295,9 @@ bool command_event(enum event_command cmd, void *data)
case CMD_EVENT_NETPLAY_GAME_WATCH:
netplay_driver_ctl(RARCH_NETPLAY_CTL_GAME_WATCH, NULL);
break;
case CMD_EVENT_NETPLAY_PLAYER_CHAT:
netplay_driver_ctl(RARCH_NETPLAY_CTL_PLAYER_CHAT, NULL);
break;
case CMD_EVENT_NETPLAY_DEINIT:
deinit_netplay();
break;
@ -5531,6 +5534,7 @@ bool command_event(enum event_command cmd, void *data)
case CMD_EVENT_NETPLAY_DISCONNECT:
case CMD_EVENT_NETPLAY_ENABLE_HOST:
case CMD_EVENT_NETPLAY_GAME_WATCH:
case CMD_EVENT_NETPLAY_PLAYER_CHAT:
return false;
#endif
case CMD_EVENT_FULLSCREEN_TOGGLE:
@ -15568,6 +15572,9 @@ static enum runloop_state_enum runloop_check_state(
#ifdef HAVE_NETWORKING
/* Check Netplay */
HOTKEY_CHECK(RARCH_NETPLAY_GAME_WATCH, CMD_EVENT_NETPLAY_GAME_WATCH, true, NULL);
#if NETPLAY_PROTOCOL_VERSION >= 6
HOTKEY_CHECK(RARCH_NETPLAY_PLAYER_CHAT, CMD_EVENT_NETPLAY_PLAYER_CHAT, true, NULL);
#endif
#endif
/* Check if we have pressed the pause button */