# HG changeset patch # User Adam Kaminski # Date 1630938700 14400 # Mon Sep 06 10:31:40 2021 -0400 # Node ID d006955f5d6c6bbb7590d6cd1cdc304733c31923 # Parent 8a02e90d236cbf56b3024e23dd514d149a653a8d Merged all the server commands that updated a player's statuses into one single command: "SetPlayerStatus". diff -r 8a02e90d236c -r d006955f5d6c protocolspec/spec.players.txt --- a/protocolspec/spec.players.txt Mon Sep 06 09:43:33 2021 -0400 +++ b/protocolspec/spec.players.txt Mon Sep 06 10:31:40 2021 -0400 @@ -111,29 +111,11 @@ Variable killCount EndCommand -Command SetPlayerChatStatus - Player player - Bool chatting -EndCommand - -Command SetPlayerConsoleStatus - Player player - Bool inConsole -EndCommand - -Command SetPlayerMenuStatus +Command SetPlayerStatus Player player - Bool inMenu -EndCommand - -Command SetPlayerLaggingStatus - Player player - Bool lagging -EndCommand - -Command SetPlayerReadyToGoOnStatus - Player player - Bool readyToGoOn + # [AK] Ideally, we want to fit the status we're updating and its value into a single byte. + ShortByte<7> type + Bool value EndCommand Command SetPlayerTeam diff -r 8a02e90d236c -r d006955f5d6c src/botcommands.cpp --- a/src/botcommands.cpp Mon Sep 06 09:43:33 2021 -0400 +++ b/src/botcommands.cpp Mon Sep 06 10:31:40 2021 -0400 @@ -2045,7 +2045,7 @@ // We can now get rid of the chat bubble above the bot's head. pBot->GetPlayer( )->bChatting = false; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); } //***************************************************************************** @@ -2061,7 +2061,7 @@ // We can now get rid of the chat bubble above the bot's head. pBot->GetPlayer( )->bChatting = false; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); sprintf( szSection, "%s", pBot->m_ScriptData.aszStringStack[pBot->m_ScriptData.lStringStackPosition - 1] ); pBot->PopStringStack( ); @@ -2120,7 +2120,7 @@ // We can now get rid of the chat bubble above the bot's head. pBot->GetPlayer( )->bChatting = false; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); sprintf( szSection, "%s", pBot->m_ScriptData.aszStringStack[pBot->m_ScriptData.lStringStackPosition - 1] ); pBot->PopStringStack( ); @@ -2171,7 +2171,7 @@ { pBot->GetPlayer( )->bChatting = true; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); } //***************************************************************************** @@ -2180,7 +2180,7 @@ { pBot->GetPlayer( )->bChatting = false; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); } //***************************************************************************** @@ -2606,7 +2606,7 @@ // We can now get rid of the chat bubble above the bot's head. pBot->GetPlayer( )->bChatting = false; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); sprintf( szSection, "%s", pBot->m_ScriptData.aszStringStack[pBot->m_ScriptData.lStringStackPosition - 1] ); pBot->PopStringStack( ); @@ -2665,7 +2665,7 @@ // We can now get rid of the chat bubble above the bot's head. pBot->GetPlayer( )->bChatting = false; if ( NETWORK_GetState( ) == NETSTATE_SERVER ) - SERVERCOMMANDS_SetPlayerChatStatus( pBot->GetPlayer( ) - players ); + SERVERCOMMANDS_SetPlayerStatus( pBot->GetPlayer( ) - players, PLAYERSTATUS_CHATTING ); sprintf( szSection, "%s", pBot->m_ScriptData.aszStringStack[pBot->m_ScriptData.lStringStackPosition - 1] ); pBot->PopStringStack( ); diff -r 8a02e90d236c -r d006955f5d6c src/cl_main.cpp --- a/src/cl_main.cpp Mon Sep 06 09:43:33 2021 -0400 +++ b/src/cl_main.cpp Mon Sep 06 10:31:40 2021 -0400 @@ -4217,37 +4217,30 @@ //***************************************************************************** // -void ServerCommands::SetPlayerChatStatus::Execute() -{ - player->bChatting = chatting; -} - -//***************************************************************************** -// -void ServerCommands::SetPlayerConsoleStatus::Execute() -{ - player->bInConsole = inConsole; -} - -//***************************************************************************** -// -void ServerCommands::SetPlayerMenuStatus::Execute() -{ - player->bInMenu = inMenu; -} - -//***************************************************************************** -// -void ServerCommands::SetPlayerLaggingStatus::Execute() -{ - player->bLagging = lagging; -} - -//***************************************************************************** -// -void ServerCommands::SetPlayerReadyToGoOnStatus::Execute() -{ - player->bReadyToGoOn = readyToGoOn; +void ServerCommands::SetPlayerStatus::Execute() +{ + switch ( type ) + { + case PLAYERSTATUS_CHATTING: + player->bChatting = value; + break; + + case PLAYERSTATUS_INCONSOLE: + player->bInConsole = value; + break; + + case PLAYERSTATUS_INMENU: + player->bInMenu = value; + break; + + case PLAYERSTATUS_LAGGING: + player->bLagging = value; + break; + + case PLAYERSTATUS_READYTOGOON: + player->bReadyToGoOn = value; + break; + } } //***************************************************************************** diff -r 8a02e90d236c -r d006955f5d6c src/network.h --- a/src/network.h Mon Sep 06 09:43:33 2021 -0400 +++ b/src/network.h Mon Sep 06 10:31:40 2021 -0400 @@ -207,6 +207,16 @@ ACTORSCALE_Y = 2 }; +// [AK] What kind of player status are we trying to update? +enum PlayerStatusType +{ + PLAYERSTATUS_CHATTING, + PLAYERSTATUS_INCONSOLE, + PLAYERSTATUS_INMENU, + PLAYERSTATUS_LAGGING, + PLAYERSTATUS_READYTOGOON, +}; + // [AK] If we're updating the map rotation then what exactly are we doing? enum UpdateMapRotationType { diff -r 8a02e90d236c -r d006955f5d6c src/network_enums.h --- a/src/network_enums.h Mon Sep 06 09:43:33 2021 -0400 +++ b/src/network_enums.h Mon Sep 06 10:31:40 2021 -0400 @@ -98,11 +98,7 @@ ENUM_ELEMENT ( SVC_SETPLAYERPOINTS ), ENUM_ELEMENT ( SVC_SETPLAYERWINS ), ENUM_ELEMENT ( SVC_SETPLAYERKILLCOUNT ), - ENUM_ELEMENT ( SVC_SETPLAYERCHATSTATUS ), - ENUM_ELEMENT ( SVC_SETPLAYERCONSOLESTATUS ), - ENUM_ELEMENT ( SVC_SETPLAYERMENUSTATUS ), - ENUM_ELEMENT ( SVC_SETPLAYERLAGGINGSTATUS ), - ENUM_ELEMENT ( SVC_SETPLAYERREADYTOGOONSTATUS ), + ENUM_ELEMENT ( SVC_SETPLAYERSTATUS ), ENUM_ELEMENT ( SVC_SETPLAYERTEAM ), ENUM_ELEMENT ( SVC_SETPLAYERCAMERA ), ENUM_ELEMENT ( SVC_SETPLAYERPOISONCOUNT ), diff -r 8a02e90d236c -r d006955f5d6c src/sv_commands.cpp --- a/src/sv_commands.cpp Mon Sep 06 09:43:33 2021 -0400 +++ b/src/sv_commands.cpp Mon Sep 06 10:31:40 2021 -0400 @@ -632,56 +632,43 @@ //***************************************************************************** // -void SERVERCOMMANDS_SetPlayerChatStatus( ULONG ulPlayer, ULONG ulPlayerExtra, ServerCommandFlags flags ) -{ - ServerCommands::SetPlayerChatStatus command; - command.SetPlayer( &players[ulPlayer] ); - command.SetChatting( players[ulPlayer].bChatting ); - command.sendCommandToClients( ulPlayerExtra, flags ); -} - -//***************************************************************************** -// -void SERVERCOMMANDS_SetPlayerLaggingStatus( ULONG ulPlayer ) -{ - ServerCommands::SetPlayerLaggingStatus command; +void SERVERCOMMANDS_SetPlayerStatus( ULONG ulPlayer, PlayerStatusType type, ULONG ulPlayerExtra, ServerCommandFlags flags ) +{ + bool bEnable; + + // [AK] Get the value of whatever status we're trying to update. + switch ( type ) + { + case PLAYERSTATUS_CHATTING: + bEnable = players[ulPlayer].bChatting; + break; + + case PLAYERSTATUS_INCONSOLE: + bEnable = players[ulPlayer].bInConsole; + break; + + case PLAYERSTATUS_INMENU: + bEnable = players[ulPlayer].bInMenu; + break; + + case PLAYERSTATUS_LAGGING: + bEnable = players[ulPlayer].bLagging; + break; + + case PLAYERSTATUS_READYTOGOON: + bEnable = players[ulPlayer].bReadyToGoOn; + break; + } + + ServerCommands::SetPlayerStatus command; command.SetPlayer( &players[ulPlayer] ); - command.SetLagging( players[ulPlayer].bLagging ); - command.sendCommandToClients(); -} - -//***************************************************************************** -// -void SERVERCOMMANDS_SetPlayerConsoleStatus( ULONG ulPlayer, ULONG ulPlayerExtra, ServerCommandFlags flags ) -{ - ServerCommands::SetPlayerConsoleStatus command; - command.SetPlayer( &players[ulPlayer] ); - command.SetInConsole( players[ulPlayer].bInConsole ); + command.SetType( type ); + command.SetValue( bEnable ); command.sendCommandToClients( ulPlayerExtra, flags ); } //***************************************************************************** // -void SERVERCOMMANDS_SetPlayerMenuStatus( ULONG ulPlayer, ULONG ulPlayerExtra, ServerCommandFlags flags ) -{ - ServerCommands::SetPlayerMenuStatus command; - command.SetPlayer( &players[ulPlayer] ); - command.SetInMenu( players[ulPlayer].bInMenu ); - command.sendCommandToClients( ulPlayerExtra, flags ); -} - -//***************************************************************************** -// -void SERVERCOMMANDS_SetPlayerReadyToGoOnStatus( ULONG ulPlayer ) -{ - ServerCommands::SetPlayerReadyToGoOnStatus command; - command.SetPlayer( &players[ulPlayer] ); - command.SetReadyToGoOn( players[ulPlayer].bReadyToGoOn ); - command.sendCommandToClients(); -} - -//***************************************************************************** -// void SERVERCOMMANDS_SetPlayerTeam( ULONG ulPlayer, ULONG ulPlayerExtra, ServerCommandFlags flags ) { if ( PLAYER_IsValidPlayer( ulPlayer ) == false ) diff -r 8a02e90d236c -r d006955f5d6c src/sv_commands.h --- a/src/sv_commands.h Mon Sep 06 09:43:33 2021 -0400 +++ b/src/sv_commands.h Mon Sep 06 10:31:40 2021 -0400 @@ -103,11 +103,7 @@ void SERVERCOMMANDS_SetPlayerWins( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); void SERVERCOMMANDS_SetPlayerDeaths( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); void SERVERCOMMANDS_SetPlayerKillCount( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); -void SERVERCOMMANDS_SetPlayerChatStatus( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); -void SERVERCOMMANDS_SetPlayerConsoleStatus( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); -void SERVERCOMMANDS_SetPlayerMenuStatus( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); -void SERVERCOMMANDS_SetPlayerLaggingStatus( ULONG ulPlayer ); -void SERVERCOMMANDS_SetPlayerReadyToGoOnStatus( ULONG ulPlayer ); +void SERVERCOMMANDS_SetPlayerStatus( ULONG ulPlayer, PlayerStatusType type, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); void SERVERCOMMANDS_SetPlayerTeam( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); void SERVERCOMMANDS_SetPlayerCamera( ULONG ulPlayer, AActor *camera, bool bRevertPlease ); void SERVERCOMMANDS_SetPlayerPoisonCount( ULONG ulPlayer, ULONG ulPlayerExtra = MAXPLAYERS, ServerCommandFlags flags = 0 ); diff -r 8a02e90d236c -r d006955f5d6c src/sv_main.cpp --- a/src/sv_main.cpp Mon Sep 06 09:43:33 2021 -0400 +++ b/src/sv_main.cpp Mon Sep 06 10:31:40 2021 -0400 @@ -1036,7 +1036,7 @@ if ( players[ulIdx].bLagging == false ) { players[ulIdx].bLagging = true; - SERVERCOMMANDS_SetPlayerLaggingStatus( ulIdx ); + SERVERCOMMANDS_SetPlayerStatus( ulIdx, PLAYERSTATUS_LAGGING ); } } else @@ -1045,7 +1045,7 @@ if ( players[ulIdx].bLagging ) { players[ulIdx].bLagging = false; - SERVERCOMMANDS_SetPlayerLaggingStatus( ulIdx ); + SERVERCOMMANDS_SetPlayerStatus( ulIdx, PLAYERSTATUS_LAGGING ); } } } @@ -2424,9 +2424,9 @@ SERVERCOMMANDS_SetPlayerLivesLeft( ulIdx, ulClient, SVCF_ONLYTHISCLIENT ); // [BB] Also tell this player's chat / console status to the new client. - SERVERCOMMANDS_SetPlayerChatStatus( ulIdx, ulClient, SVCF_ONLYTHISCLIENT ); - SERVERCOMMANDS_SetPlayerConsoleStatus( ulIdx, ulClient, SVCF_ONLYTHISCLIENT ); - SERVERCOMMANDS_SetPlayerMenuStatus( ulIdx, ulClient, SVCF_ONLYTHISCLIENT ); + SERVERCOMMANDS_SetPlayerStatus( ulIdx, PLAYERSTATUS_CHATTING, ulClient, SVCF_ONLYTHISCLIENT ); + SERVERCOMMANDS_SetPlayerStatus( ulIdx, PLAYERSTATUS_INCONSOLE, ulClient, SVCF_ONLYTHISCLIENT ); + SERVERCOMMANDS_SetPlayerStatus( ulIdx, PLAYERSTATUS_INMENU, ulClient, SVCF_ONLYTHISCLIENT ); // [BB] If this player has any cheats, also inform the new client. if( players[ulIdx].cheats ) @@ -4641,7 +4641,7 @@ players[g_lCurrentClient].bChatting = true; // Tell clients about the change in this player's chatting status. - SERVERCOMMANDS_SetPlayerChatStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_CHATTING ); } else if ( lCommand == CLC_ENDCHAT ) { @@ -4649,33 +4649,33 @@ players[g_lCurrentClient].bChatting = false; // Tell clients about the change in this player's chatting status. - SERVERCOMMANDS_SetPlayerChatStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_CHATTING ); } else if ( lCommand == CLC_ENTERCONSOLE ) { // Player has entered the console - give him an icon. players[g_lCurrentClient].bInConsole = true; - SERVERCOMMANDS_SetPlayerConsoleStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_INCONSOLE ); } else if ( lCommand == CLC_EXITCONSOLE ) { // Player has left the console - remove his icon. players[g_lCurrentClient].bInConsole = false; - SERVERCOMMANDS_SetPlayerConsoleStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_INCONSOLE ); } else if ( lCommand == CLC_ENTERMENU ) { // Player has entered the console - give him an icon. players[g_lCurrentClient].bInMenu = true; - SERVERCOMMANDS_SetPlayerMenuStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_INMENU ); } else if ( lCommand == CLC_EXITMENU ) { // Player has left the console - remove his icon. players[g_lCurrentClient].bInMenu = false; - SERVERCOMMANDS_SetPlayerMenuStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_INMENU ); } return false; case CLC_IGNORE: @@ -4770,7 +4770,7 @@ players[g_lCurrentClient].bReadyToGoOn = true; if ( SERVER_IsEveryoneReadyToGoOn( ) == false ) - SERVERCOMMANDS_SetPlayerReadyToGoOnStatus( g_lCurrentClient ); + SERVERCOMMANDS_SetPlayerStatus( g_lCurrentClient, PLAYERSTATUS_READYTOGOON ); return false; case CLC_CHANGEDISPLAYPLAYER: @@ -5732,19 +5732,19 @@ if ( pPlayer->bChatting ) { pPlayer->bChatting = false; - SERVERCOMMANDS_SetPlayerChatStatus( ulClient ); + SERVERCOMMANDS_SetPlayerStatus( ulClient, PLAYERSTATUS_CHATTING ); } if ( pPlayer->bInConsole ) { pPlayer->bInConsole = false; - SERVERCOMMANDS_SetPlayerConsoleStatus( ulClient ); + SERVERCOMMANDS_SetPlayerStatus( ulClient, PLAYERSTATUS_INCONSOLE ); } if ( pPlayer->bInMenu ) { pPlayer->bInMenu = false; - SERVERCOMMANDS_SetPlayerMenuStatus( ulClient ); + SERVERCOMMANDS_SetPlayerStatus( ulClient, PLAYERSTATUS_INMENU ); } }