From dd29a44ecc61906a7b2ba13a734ed0fc0228d29c Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 3 Mar 2020 19:17:27 -0800 Subject: [PATCH 1/2] cancelinvite command to rescind a party invitation --- src/d_netcmd.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/d_netcmd.h | 5 ++-- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 53bc3e928..ce3f9b290 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -65,6 +65,7 @@ static void Got_WeaponPref(UINT8 **cp, INT32 playernum); static void Got_PowerLevel(UINT8 **cp, INT32 playernum); static void Got_PartyInvite(UINT8 **cp, INT32 playernum); static void Got_AcceptPartyInvite(UINT8 **cp, INT32 playernum); +static void Got_CancelPartyInvite(UINT8 **cp, INT32 playernum); static void Got_LeaveParty(UINT8 **cp, INT32 playernum); static void Got_Mapcmd(UINT8 **cp, INT32 playernum); static void Got_ExitLevelcmd(UINT8 **cp, INT32 playernum); @@ -138,6 +139,7 @@ static void Command_View_f (void); static void Command_SetViews_f(void); static void Command_Invite_f(void); +static void Command_CancelInvite_f(void); static void Command_AcceptInvite_f(void); static void Command_RejectInvite_f(void); static void Command_LeaveParty_f(void); @@ -554,6 +556,7 @@ void D_RegisterServerCommands(void) RegisterNetXCmd(XD_POWERLEVEL, Got_PowerLevel); RegisterNetXCmd(XD_PARTYINVITE, Got_PartyInvite); RegisterNetXCmd(XD_ACCEPTPARTYINVITE, Got_AcceptPartyInvite); + RegisterNetXCmd(XD_CANCELPARTYINVITE, Got_CancelPartyInvite); RegisterNetXCmd(XD_LEAVEPARTY, Got_LeaveParty); RegisterNetXCmd(XD_MAP, Got_Mapcmd); RegisterNetXCmd(XD_EXITLEVEL, Got_ExitLevelcmd); @@ -765,6 +768,7 @@ void D_RegisterClientCommands(void) COM_AddCommand("changeteam4", Command_Teamchange4_f); COM_AddCommand("invite", Command_Invite_f); + COM_AddCommand("cancelinvite", Command_CancelInvite_f); COM_AddCommand("acceptinvite", Command_AcceptInvite_f); COM_AddCommand("rejectinvite", Command_RejectInvite_f); COM_AddCommand("leaveparty", Command_LeaveParty_f); @@ -2096,6 +2100,43 @@ static void Got_AcceptPartyInvite(UINT8 **cp,INT32 playernum) } } +static void Got_CancelPartyInvite(UINT8 **cp,INT32 playernum) +{ + UINT8 invitee; + + invitee = READUINT8 (*cp); + + if ( + invitee >= 0 && + invitee < MAXPLAYERS && + playeringame[invitee] + ){ + invitee = playerconsole[invitee]; + + if (splitscreen_invitations[invitee] == playerconsole[playernum]) + { + splitscreen_invitations[invitee] = -1; + + if (consoleplayer == invitee) + { + HU_AddChatText("\x85*Your invitation has been rescinded.", true); + } + } + } + else + { + CONS_Alert(CONS_WARNING, M_GetText("Illegal cancel splitscreen invite received from %s\n"), player_names[playernum]); + if (server) + { + XBOXSTATIC UINT8 buf[2]; + + buf[0] = (UINT8)playernum; + buf[1] = KICK_MSG_CON_FAIL; + SendNetXCmd(XD_KICK, &buf, 2); + } + } +} + static void Got_LeaveParty(UINT8 **cp,INT32 playernum) { if (playerconsole[playernum] != playernum) @@ -2438,6 +2479,45 @@ Command_Invite_f (void) SendNetXCmd(XD_PARTYINVITE, &invitee, 1); } +static void +Command_CancelInvite_f (void) +{ + UINT8 invitee; + + if (COM_Argc() != 2) + { + CONS_Printf("cancelinvite : Rescind a party invitation.\n"); + return; + } + + invitee = LookupPlayer(COM_Argv(1)); + + if (invitee == -1) + { + CONS_Alert(CONS_WARNING, "There is no player by that name!\n"); + return; + } + if (!playeringame[invitee]) + { + CONS_Alert(CONS_WARNING, "There is no player using that slot!\n"); + return; + } + + if (splitscreen_invitations[invitee] != consoleplayer) + { + CONS_Alert(CONS_WARNING, + "You have not invited this player!\n"); + } + + CONS_Printf( + "Rescinding invite to %s...\n", + VaguePartyDescription( + invitee, splitscreen_original_party_size, '\x80') + ); + + SendNetXCmd(XD_CANCELPARTYINVITE, &invitee, 1); +} + static boolean CheckPartyInvite (void) { diff --git a/src/d_netcmd.h b/src/d_netcmd.h index fe1f59ad2..b18dfa59c 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -182,9 +182,10 @@ typedef enum XD_PARTYINVITE, // 27 XD_ACCEPTPARTYINVITE, // 28 XD_LEAVEPARTY, // 29 + XD_CANCELPARTYINVITE, // 30 #ifdef HAVE_BLUA - XD_LUACMD, // 30 - XD_LUAVAR, // 31 + XD_LUACMD, // 31 + XD_LUAVAR, // 32 #endif MAXNETXCMD } netxcmd_t; From 74f47f83f2fb2f902c4e2d62f490e3157613d5d1 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 3 Mar 2020 19:22:32 -0800 Subject: [PATCH 2/2] Party yourself with ALL party members when being added to a party --- src/g_splitscreen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/g_splitscreen.c b/src/g_splitscreen.c index 939eacef0..7aec3f159 100644 --- a/src/g_splitscreen.c +++ b/src/g_splitscreen.c @@ -188,10 +188,10 @@ G_AddPartyMember (int invitation, int playernum) } else if (playernum == consoleplayer) { - splitscreen_partied[invitation] = true; - for (i = 0; i < new_party_size; ++i) { + splitscreen_partied[playerconsole[party[i]]] = true; + displayplayers[i] = party[i]; P_ResetCamera(&players[displayplayers[i]], &camera[i]); }