diff options
-rw-r--r-- | src/autoreplace_cmd.cpp | 42 | ||||
-rw-r--r-- | src/company_cmd.cpp | 42 |
2 files changed, 43 insertions, 41 deletions
diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index fe962cd73..8b395e6c1 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -19,6 +19,8 @@ #include "vehicle_func.h" #include "functions.h" #include "autoreplace_func.h" +#include "autoreplace_gui.h" +#include "group.h" #include "articulated_vehicles.h" #include "core/random_func.hpp" @@ -687,3 +689,43 @@ CommandCost CmdAutoreplaceVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1 if (cost.Succeeded() && nothing_to_do) cost = CommandCost(STR_ERROR_AUTOREPLACE_NOTHING_TO_DO); return cost; } + +/** + * Change engine renewal parameters + * @param tile unused + * @param flags operation to perform + * @param p1 packed data + * - bits 16-31 = engine group + * @param p2 packed data + * - bits 0-15 = old engine type + * - bits 16-31 = new engine type + * @param text unused + * @return the cost of this operation or an error + */ +CommandCost CmdSetAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + Company *c = Company::GetIfValid(_current_company); + if (c == NULL) return CMD_ERROR; + + EngineID old_engine_type = GB(p2, 0, 16); + EngineID new_engine_type = GB(p2, 16, 16); + GroupID id_g = GB(p1, 16, 16); + CommandCost cost; + + if (!Group::IsValidID(id_g) && !IsAllGroupID(id_g) && !IsDefaultGroupID(id_g)) return CMD_ERROR; + if (!Engine::IsValidID(old_engine_type)) return CMD_ERROR; + + if (new_engine_type != INVALID_ENGINE) { + if (!Engine::IsValidID(new_engine_type)) return CMD_ERROR; + if (!CheckAutoreplaceValidity(old_engine_type, new_engine_type, _current_company)) return CMD_ERROR; + + cost = AddEngineReplacementForCompany(c, old_engine_type, new_engine_type, id_g, flags); + } else { + cost = RemoveEngineReplacementForCompany(c, old_engine_type, id_g, flags); + } + + if ((flags & DC_EXEC) && IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g); + + return cost; +} + diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 414363aed..4c3449a28 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -11,6 +11,7 @@ #include "stdafx.h" #include "engine_base.h" +#include "company_base.h" #include "company_func.h" #include "company_gui.h" #include "town.h" @@ -22,14 +23,11 @@ #include "network/network_base.h" #include "ai/ai.hpp" #include "company_manager_face.h" -#include "group.h" #include "window_func.h" #include "strings_func.h" #include "gfx_func.h" #include "date_func.h" #include "sound_func.h" -#include "autoreplace_func.h" -#include "autoreplace_gui.h" #include "rail.h" #include "core/pool_func.hpp" #include "settings_func.h" @@ -649,44 +647,6 @@ void CompaniesYearlyLoop() } } -/** Change engine renewal parameters - * @param tile unused - * @param flags operation to perform - * @param p1 packed data - * - bits 16-31 = engine group - * @param p2 packed data - * - bits 0-15 = old engine type - * - bits 16-31 = new engine type - * @param text unused - * @return the cost of this operation or an error - */ -CommandCost CmdSetAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) -{ - Company *c = Company::GetIfValid(_current_company); - if (c == NULL) return CMD_ERROR; - - EngineID old_engine_type = GB(p2, 0, 16); - EngineID new_engine_type = GB(p2, 16, 16); - GroupID id_g = GB(p1, 16, 16); - CommandCost cost; - - if (!Group::IsValidID(id_g) && !IsAllGroupID(id_g) && !IsDefaultGroupID(id_g)) return CMD_ERROR; - if (!Engine::IsValidID(old_engine_type)) return CMD_ERROR; - - if (new_engine_type != INVALID_ENGINE) { - if (!Engine::IsValidID(new_engine_type)) return CMD_ERROR; - if (!CheckAutoreplaceValidity(old_engine_type, new_engine_type, _current_company)) return CMD_ERROR; - - cost = AddEngineReplacementForCompany(c, old_engine_type, new_engine_type, id_g, flags); - } else { - cost = RemoveEngineReplacementForCompany(c, old_engine_type, id_g, flags); - } - - if ((flags & DC_EXEC) && IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g); - - return cost; -} - /** * Fill the CompanyNewsInformation struct with the required data. * @param c the current company. |