From e99c51d23c7e477d07cb9de1696918cd72142be7 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Thu, 20 Jun 2019 19:50:55 +0100 Subject: [PATCH] Remove game command callback --- src/openrct2/Game.cpp | 95 +------------------------------- src/openrct2/Game.h | 7 --- src/openrct2/network/Network.cpp | 5 -- 3 files changed, 2 insertions(+), 105 deletions(-) diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index 235a88968a..e06c294b25 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -85,21 +85,6 @@ uint8_t gUnk141F568; uint32_t gCurrentTicks; uint32_t gCurrentRealTimeTicks; -// clang-format off -GAME_COMMAND_CALLBACK_POINTER * game_command_callback = nullptr; -static GAME_COMMAND_CALLBACK_POINTER * const game_command_callback_table[] = { - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr -}; -// clang-format on int32_t game_command_playerid = -1; rct_string_id gGameCommandErrorTitle; @@ -109,27 +94,6 @@ rct_string_id gErrorStringId; using namespace OpenRCT2; -int32_t game_command_callback_get_index(GAME_COMMAND_CALLBACK_POINTER* callback) -{ - for (uint32_t i = 0; i < std::size(game_command_callback_table); i++) - { - if (game_command_callback_table[i] == callback) - { - return i; - } - } - return 0; -} - -GAME_COMMAND_CALLBACK_POINTER* game_command_callback_get_callback(uint32_t index) -{ - if (index < std::size(game_command_callback_table)) - { - return game_command_callback_table[index]; - } - return nullptr; -} - void game_increase_game_speed() { gGameSpeed = std::min(gConfigGeneral.debugging_tools ? 5 : 4, gGameSpeed + 1); @@ -413,16 +377,6 @@ int32_t game_do_command_p( game_command_playerid = network_get_current_player_id(); } - // Log certain commands if we are in multiplayer and logging is enabled - bool serverLog = (network_get_mode() == NETWORK_MODE_SERVER) && gGameCommandNestLevel == 1 - && gConfigNetwork.log_server_actions; - bool clientLog = (network_get_mode() == NETWORK_MODE_CLIENT) && (flags & GAME_COMMAND_FLAG_NETWORKED) - && gGameCommandNestLevel == 1 && gConfigNetwork.log_server_actions; - if (serverLog || clientLog) - { - game_log_multiplayer_command(command, eax, ebx, ecx, edx, edi, ebp); - } - *ebx &= ~GAME_COMMAND_FLAG_APPLY; // Make sure the camera position won't change if the command skips setting them. @@ -461,12 +415,11 @@ int32_t game_do_command_p( && gGameCommandNestLevel == 1) /* Send only top-level commands */ { network_send_gamecmd( - *eax, *ebx, *ecx, *edx, *esi, *edi, *ebp, game_command_callback_get_index(game_command_callback)); + *eax, *ebx, *ecx, *edx, *esi, *edi, *ebp, 0); if (network_get_mode() == NETWORK_MODE_CLIENT) { // Client sent the command to the server, do not run it locally, just return. It will run when server // sends it. - game_command_callback = nullptr; // Decrement nest count gGameCommandNestLevel--; return cost; @@ -489,21 +442,8 @@ int32_t game_do_command_p( if (recordCommand && gGameCommandNestLevel == 1) { - int32_t callback = game_command_callback_get_index(game_command_callback); - replayManager->AddGameCommand( - gCurrentTicks, *eax, original_ebx, *ecx, original_edx, original_esi, original_edi, original_ebp, - callback); - } - } - - // Do the callback (required for multiplayer to work correctly), but only for top level commands - if (gGameCommandNestLevel == 1) - { - if (game_command_callback && !(flags & GAME_COMMAND_FLAG_GHOST)) - { - game_command_callback(*eax, *ebx, *ecx, *edx, *esi, *edi, *ebp); - game_command_callback = nullptr; + gCurrentTicks, *eax, original_ebx, *ecx, original_edx, original_esi, original_edi, original_ebp, 0); } } @@ -552,9 +492,6 @@ int32_t game_do_command_p( // Decrement nest count gGameCommandNestLevel--; - // Clear the game command callback to prevent the next command triggering it - game_command_callback = nullptr; - // Show error window if (gGameCommandNestLevel == 0 && (flags & GAME_COMMAND_FLAG_APPLY) && gUnk141F568 == gUnk13CA740 && !(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED) && !(flags & GAME_COMMAND_FLAG_NETWORKED) @@ -566,34 +503,6 @@ int32_t game_do_command_p( return MONEY32_UNDEFINED; } -void game_log_multiplayer_command(int command, const int* eax, const int* ebx, const int* ecx, int* edx, int* edi, int* ebp) -{ - // Get player name - const char* player_name = "localhost"; - - int player_index = network_get_player_index(game_command_playerid); - if (player_index != -1) - { - player_name = network_get_player_name(player_index); - } - - char log_msg[256]; - if (command == GAME_COMMAND_DEMOLISH_RIDE && (*ebp == 1 || *ebp == 0)) - { // ebp is 1 if command comes from ride window prompt, so we don't log "demolishing" ride previews - // Get ride name - Ride* ride = get_ride(*edx); - char ride_name[128]; - format_string(ride_name, 128, ride->name, &ride->name_arguments); - - char* args[2] = { - (char*)player_name, - ride_name, - }; - format_string(log_msg, 256, STR_LOG_DEMOLISH_RIDE, args); - network_append_server_log(log_msg); - } -} - void pause_toggle() { gGamePaused ^= GAME_PAUSED_NORMAL; diff --git a/src/openrct2/Game.h b/src/openrct2/Game.h index 12e733ad51..9d3696f802 100644 --- a/src/openrct2/Game.h +++ b/src/openrct2/Game.h @@ -130,12 +130,7 @@ enum using GAME_COMMAND_POINTER = void( int32_t* eax, int32_t* ebx, int32_t* ecx, int32_t* edx, int32_t* esi, int32_t* edi, int32_t* ebp); -using GAME_COMMAND_CALLBACK_POINTER = void( - int32_t eax, int32_t ebx, int32_t ecx, int32_t edx, int32_t esi, int32_t edi, int32_t ebp); -extern GAME_COMMAND_CALLBACK_POINTER* game_command_callback; -int32_t game_command_callback_get_index(GAME_COMMAND_CALLBACK_POINTER* callback); -GAME_COMMAND_CALLBACK_POINTER* game_command_callback_get_callback(uint32_t index); extern int32_t game_command_playerid; extern rct_string_id gGameCommandErrorTitle; @@ -175,8 +170,6 @@ int32_t game_do_command(int32_t eax, int32_t ebx, int32_t ecx, int32_t edx, int3 int32_t game_do_command_p( uint32_t command, int32_t* eax, int32_t* ebx, int32_t* ecx, int32_t* edx, int32_t* esi, int32_t* edi, int32_t* ebp); -void game_log_multiplayer_command(int command, const int* eax, const int* ebx, const int* ecx, int* edx, int* edi, int* ebp); - void game_load_or_quit_no_save_prompt(); void load_from_sv6(const char* path); void game_load_init(); diff --git a/src/openrct2/network/Network.cpp b/src/openrct2/network/Network.cpp index 5de2b63865..098fe7e43e 100644 --- a/src/openrct2/network/Network.cpp +++ b/src/openrct2/network/Network.cpp @@ -2145,11 +2145,6 @@ void Network::ProcessGameCommands() } else { - if (GetPlayerID() == gc.playerid) - { - game_command_callback = game_command_callback_get_callback(gc.callback); - } - game_command_playerid = gc.playerid; int32_t command = gc.esi;