From d09b91cd9286b475b8511a23f6ba5724b63cc8f9 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 15 Feb 2026 09:28:15 +0000 Subject: [PATCH] Codechange: use enum class for CompanyCtrlAction --- src/company_cmd.cpp | 10 +++++----- src/company_type.h | 10 ++++------ src/console_cmds.cpp | 10 +++++----- src/economy.cpp | 2 +- src/network/network_client.cpp | 2 +- src/network/network_gui.cpp | 4 ++-- src/network/network_server.cpp | 10 +++++----- src/script/script_gui.cpp | 4 ++-- 8 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index c53b9a1312..89a185dd5c 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -674,7 +674,7 @@ TimeoutTimer _new_competitor_timeout({ TimerGameTick::Priority::C /* Send a command to all clients to start up a new AI. * Works fine for Multiplayer and Singleplayer */ - Command::Post(CCA_NEW_AI, CompanyID::Invalid(), CompanyRemoveReason::None, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::NewAI, CompanyID::Invalid(), CompanyRemoveReason::None, INVALID_CLIENT_ID); }); /** Start of a new game. */ @@ -795,7 +795,7 @@ void OnTick_Companies() for (auto i = 0; i < _settings_game.difficulty.max_no_competitors; i++) { if (_networking && num_companies++ >= _settings_client.network.max_companies) break; if (num_ais++ >= _settings_game.difficulty.max_no_competitors) break; - Command::Post(CCA_NEW_AI, CompanyID::Invalid(), {}, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::NewAI, CompanyID::Invalid(), {}, INVALID_CLIENT_ID); } timeout = 10 * 60 * Ticks::TICKS_PER_SECOND; } @@ -889,7 +889,7 @@ CommandCost CmdCompanyCtrl(DoCommandFlags flags, CompanyCtrlAction cca, CompanyI InvalidateWindowData(WC_COMPANY_LEAGUE, 0, 0); switch (cca) { - case CCA_NEW: { // Create a new company + case CompanyCtrlAction::New: { // Create a new company /* This command is only executed in a multiplayer game */ if (!_networking) return CMD_ERROR; @@ -944,7 +944,7 @@ CommandCost CmdCompanyCtrl(DoCommandFlags flags, CompanyCtrlAction cca, CompanyI break; } - case CCA_NEW_AI: { // Make a new AI company + case CompanyCtrlAction::NewAI: { // Make a new AI company if (company_id != CompanyID::Invalid() && company_id >= MAX_COMPANIES) return CMD_ERROR; /* For network games, company deletion is delayed. */ @@ -963,7 +963,7 @@ CommandCost CmdCompanyCtrl(DoCommandFlags flags, CompanyCtrlAction cca, CompanyI break; } - case CCA_DELETE: { // Delete a company + case CompanyCtrlAction::Delete: { // Delete a company if (reason >= CompanyRemoveReason::End) return CMD_ERROR; /* We can't delete the last existing company in singleplayer mode. */ diff --git a/src/company_type.h b/src/company_type.h index a16f61ae9c..b03b789eff 100644 --- a/src/company_type.h +++ b/src/company_type.h @@ -68,12 +68,10 @@ enum class CompanyRemoveReason : uint8_t { }; /** The action to do with Commands::CompanyControl. */ -enum CompanyCtrlAction : uint8_t { - CCA_NEW, ///< Create a new company. - CCA_NEW_AI, ///< Create a new AI company. - CCA_DELETE, ///< Delete a company. - - CCA_END, ///< Sentinel for end. +enum class CompanyCtrlAction : uint8_t { + New, ///< Create a new company. + NewAI, ///< Create a new AI company. + Delete, ///< Delete a company. }; /** The action to do with Commands::CompanyAllowListControl. */ diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 381c0813f8..3243b4dbbc 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1126,7 +1126,7 @@ static bool ConResetCompany(std::span argv) } /* It is safe to remove this company */ - Command::Post(CCA_DELETE, *index, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, *index, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); IConsolePrint(CC_DEFAULT, "Company deleted."); return true; @@ -1563,7 +1563,7 @@ static bool ConStartAI(std::span argv) } /* Start a new AI company */ - Command::Post(CCA_NEW_AI, CompanyID::Invalid(), CompanyRemoveReason::None, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::NewAI, CompanyID::Invalid(), CompanyRemoveReason::None, INVALID_CLIENT_ID); return true; } @@ -1605,8 +1605,8 @@ static bool ConReloadAI(std::span argv) } /* First kill the company of the AI, then start a new one. This should start the current AI again */ - Command::Post(CCA_DELETE, *company_id, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); - Command::Post(CCA_NEW_AI, *company_id, CompanyRemoveReason::None, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, *company_id, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::NewAI, *company_id, CompanyRemoveReason::None, INVALID_CLIENT_ID); IConsolePrint(CC_DEFAULT, "AI reloaded."); return true; @@ -1649,7 +1649,7 @@ static bool ConStopAI(std::span argv) } /* Now kill the company of the AI. */ - Command::Post(CCA_DELETE, *company_id, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, *company_id, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); IConsolePrint(CC_DEFAULT, "AI stopped, company deleted."); return true; diff --git a/src/economy.cpp b/src/economy.cpp index e3b9d98824..4fc7d26954 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -624,7 +624,7 @@ static void CompanyCheckBankrupt(Company *c) * player we are sure (the above check) that we are not the local * company and thus we won't be moved. */ if (!_networking || _network_server) { - Command::Post(CCA_DELETE, c->index, CompanyRemoveReason::Bankrupt, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, c->index, CompanyRemoveReason::Bankrupt, INVALID_CLIENT_ID); return; } break; diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 70118b793c..26b461e89e 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -885,7 +885,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet Debug(net, 9, "Client::join_status = REGISTERING"); _network_join_status = NETWORK_JOIN_STATUS_REGISTERING; ShowJoinStatusWindow(); - Command::Post(CCA_NEW, CompanyID::Invalid(), CompanyRemoveReason::None, _network_own_client_id); + Command::Post(CompanyCtrlAction::New, CompanyID::Invalid(), CompanyRemoveReason::None, _network_own_client_id); } } else { /* take control over an existing company */ diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 18114fcc9c..69894c97ad 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1305,7 +1305,7 @@ static void AdminCompanyResetCallback(Window *, bool confirmed) { if (confirmed) { if (NetworkCompanyHasClients(_admin_company_id)) return; - Command::Post(CCA_DELETE, _admin_company_id, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, _admin_company_id, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); } } @@ -1590,7 +1590,7 @@ private: */ static void OnClickCompanyNew([[maybe_unused]] NetworkClientListWindow *w, [[maybe_unused]] Point pt, CompanyID) { - Command::Post(CCA_NEW, CompanyID::Invalid(), CompanyRemoveReason::None, _network_own_client_id); + Command::Post(CompanyCtrlAction::New, CompanyID::Invalid(), CompanyRemoveReason::None, _network_own_client_id); } /** diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 0e6905dba4..4d49a548a0 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1137,15 +1137,15 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND(Packet * to match the company in the packet. If it doesn't, the client has done * something pretty naughty (or a bug), and will be kicked */ - CompanyCtrlAction cca = cp.cmd == Commands::CompanyControl ? std::get<0>(EndianBufferReader::ToValue::Args>(cp.data)) : CCA_NEW; - if (!(cp.cmd == Commands::CompanyControl && cca == CCA_NEW && ci->client_playas == COMPANY_NEW_COMPANY) && ci->client_playas != cp.company) { + CompanyCtrlAction cca = cp.cmd == Commands::CompanyControl ? std::get<0>(EndianBufferReader::ToValue::Args>(cp.data)) : CompanyCtrlAction::New; + if (!(cp.cmd == Commands::CompanyControl && cca == CompanyCtrlAction::New && ci->client_playas == COMPANY_NEW_COMPANY) && ci->client_playas != cp.company) { IConsolePrint(CC_WARNING, "Kicking client #{} (IP: {}) due to calling a command as another company {}.", ci->client_playas + 1, this->GetClientIP(), cp.company + 1); return this->SendError(NETWORK_ERROR_COMPANY_MISMATCH); } if (cp.cmd == Commands::CompanyControl) { - if (cca != CCA_NEW || cp.company != COMPANY_SPECTATOR) { + if (cca != CompanyCtrlAction::New || cp.company != COMPANY_SPECTATOR) { return this->SendError(NETWORK_ERROR_CHEATER); } @@ -1635,13 +1635,13 @@ static void NetworkAutoCleanCompanies() /* Is the company empty for autoclean_protected-months? */ if (_settings_client.network.autoclean_protected != 0 && c->months_empty > _settings_client.network.autoclean_protected) { /* Shut the company down */ - Command::Post(CCA_DELETE, c->index, CompanyRemoveReason::Autoclean, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, c->index, CompanyRemoveReason::Autoclean, INVALID_CLIENT_ID); IConsolePrint(CC_INFO, "Auto-cleaned company #{}.", c->index + 1); } /* Is the company empty for autoclean_novehicles-months, and has no vehicles? */ if (_settings_client.network.autoclean_novehicles != 0 && c->months_empty > _settings_client.network.autoclean_novehicles && !has_vehicles.Test(c->index)) { /* Shut the company down */ - Command::Post(CCA_DELETE, c->index, CompanyRemoveReason::Autoclean, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, c->index, CompanyRemoveReason::Autoclean, INVALID_CLIENT_ID); IConsolePrint(CC_INFO, "Auto-cleaned company #{} with no vehicles.", c->index + 1); } } else { diff --git a/src/script/script_gui.cpp b/src/script/script_gui.cpp index 64c26d563f..f08215a17b 100644 --- a/src/script/script_gui.cpp +++ b/src/script/script_gui.cpp @@ -1016,8 +1016,8 @@ struct ScriptDebugWindow : public Window { case WID_SCRD_RELOAD_TOGGLE: if (this->filter.script_debug_company == OWNER_DEITY) break; /* First kill the company of the AI, then start a new one. This should start the current AI again */ - Command::Post(CCA_DELETE, this->filter.script_debug_company, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); - Command::Post(CCA_NEW_AI, this->filter.script_debug_company, CompanyRemoveReason::None, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::Delete, this->filter.script_debug_company, CompanyRemoveReason::Manual, INVALID_CLIENT_ID); + Command::Post(CompanyCtrlAction::NewAI, this->filter.script_debug_company, CompanyRemoveReason::None, INVALID_CLIENT_ID); break; case WID_SCRD_SETTINGS: