From 4b09581a41bd7c846a607754c793cf066b227c7c Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 24 Aug 2024 23:51:11 +0100 Subject: [PATCH] Codechange: Set CommandTraits with templates instead of macros. --- src/autoreplace_cmd.h | 4 ++-- src/command.cpp | 4 ++-- src/command_func.h | 2 +- src/command_type.h | 37 +++++++++++++++++++++++------------ src/company_cmd.h | 14 ++++++------- src/depot_cmd.h | 2 +- src/economy_cmd.h | 2 +- src/engine_cmd.h | 8 ++++---- src/goal_cmd.h | 16 +++++++-------- src/group_cmd.h | 16 +++++++-------- src/industry_cmd.h | 10 +++++----- src/landscape_cmd.h | 4 ++-- src/league_cmd.h | 10 +++++----- src/misc_cmd.h | 12 ++++++------ src/network/network_admin.cpp | 4 ++-- src/news_cmd.h | 2 +- src/object_cmd.h | 4 ++-- src/order_cmd.h | 16 +++++++-------- src/rail_cmd.h | 20 +++++++++---------- src/road_cmd.h | 10 +++++----- src/roadveh_cmd.h | 2 +- src/settings_cmd.h | 4 ++-- src/signs_cmd.h | 4 ++-- src/station_cmd.h | 16 +++++++-------- src/story_cmd.h | 18 ++++++++--------- src/subsidy_cmd.h | 2 +- src/terraform_cmd.h | 4 ++-- src/timetable_cmd.h | 10 +++++----- src/town_cmd.h | 20 +++++++++---------- src/train_cmd.h | 6 +++--- src/tree_cmd.h | 2 +- src/tunnelbridge_cmd.h | 4 ++-- src/vehicle_cmd.h | 22 ++++++++++----------- src/viewport_cmd.h | 2 +- src/water_cmd.h | 6 +++--- src/waypoint_cmd.h | 12 ++++++------ 36 files changed, 171 insertions(+), 160 deletions(-) diff --git a/src/autoreplace_cmd.h b/src/autoreplace_cmd.h index 71450a95eb..463112c497 100644 --- a/src/autoreplace_cmd.h +++ b/src/autoreplace_cmd.h @@ -18,7 +18,7 @@ CommandCost CmdAutoreplaceVehicle(DoCommandFlags flags, VehicleID veh_id); CommandCost CmdSetAutoReplace(DoCommandFlags flags, GroupID id_g, EngineID old_engine_type, EngineID new_engine_type, bool when_old); -DEF_CMD_TRAIT(CMD_AUTOREPLACE_VEHICLE, CmdAutoreplaceVehicle, 0, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_AUTOREPLACE, CmdSetAutoReplace, 0, CMDT_VEHICLE_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* AUTOREPLACE_CMD_H */ diff --git a/src/command.cpp b/src/command.cpp index a6a10e5a1b..93645e524e 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -74,7 +74,7 @@ int RecursiveCommandCounter::_counter = 0; * the #CMD_AUTO, #CMD_OFFLINE and #CMD_SERVER values. */ struct CommandInfo { - const char *name; ///< A human readable name for the procedure + std::string_view name; ///< A human readable name for the procedure CommandFlags flags; ///< The (command) flags to that apply to this command CommandType type; ///< The type of command. }; @@ -129,7 +129,7 @@ CommandFlags GetCommandFlags(Commands cmd) * @param cmd The integer value of the command * @return The name for this command */ -const char *GetCommandName(Commands cmd) +std::string_view GetCommandName(Commands cmd) { assert(IsValidCommand(cmd)); diff --git a/src/command_func.h b/src/command_func.h index 1181459987..ccccc397d9 100644 --- a/src/command_func.h +++ b/src/command_func.h @@ -31,7 +31,7 @@ void NetworkSendCommand(Commands cmd, StringID err_message, CommandCallback *cal bool IsValidCommand(Commands cmd); CommandFlags GetCommandFlags(Commands cmd); -const char *GetCommandName(Commands cmd); +std::string_view GetCommandName(Commands cmd); bool IsCommandAllowedWhilePaused(Commands cmd); template diff --git a/src/command_type.h b/src/command_type.h index 37a82b538f..0445acdd5e 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -450,19 +450,30 @@ struct CommandFunctionTraitHelper(*)(DoCommandFla /** Defines the traits of a command. */ template struct CommandTraits; -#define DEF_CMD_TRAIT(cmd_, proc_, flags_, type_) \ - template <> struct CommandTraits { \ - using ProcType = decltype(&proc_); \ - using Args = typename CommandFunctionTraitHelper::Args; \ - using RetTypes = typename CommandFunctionTraitHelper::RetTypes; \ - using CbArgs = typename CommandFunctionTraitHelper::CbArgs; \ - using RetCallbackProc = typename CommandFunctionTraitHelper::CbProcType; \ - static constexpr Commands cmd = cmd_; \ - static constexpr auto &proc = proc_; \ - static constexpr CommandFlags flags = (CommandFlags)(flags_); \ - static constexpr CommandType type = type_; \ - static inline constexpr const char *name = #proc_; \ - }; +template +struct StringLiteral { + constexpr StringLiteral(const char (&str)[N]) + { + std::copy_n(str, N, this->value); + } + + char value[N]; +}; + +template +struct DefaultCommandTraits { +public: + using ProcType = decltype(&Tproc); + using Args = typename CommandFunctionTraitHelper::Args; + using RetTypes = typename CommandFunctionTraitHelper::RetTypes; + using CbArgs = typename CommandFunctionTraitHelper::CbArgs; + using RetCallbackProc = typename CommandFunctionTraitHelper::CbProcType; + static constexpr Commands cmd = Tcmd; + static constexpr auto &proc = Tproc; + static constexpr CommandFlags flags = Tflags; + static constexpr CommandType type = Ttype; + static constexpr std::string_view name = Tname.value; +}; /** Storage buffer for serialized command data. */ typedef std::vector CommandDataBuffer; diff --git a/src/company_cmd.h b/src/company_cmd.h index e8d3934622..80521b5c17 100644 --- a/src/company_cmd.h +++ b/src/company_cmd.h @@ -25,12 +25,12 @@ CommandCost CmdRenamePresident(DoCommandFlags flags, const std::string &text); CommandCost CmdSetCompanyManagerFace(DoCommandFlags flags, CompanyManagerFace cmf); CommandCost CmdSetCompanyColour(DoCommandFlags flags, LiveryScheme scheme, bool primary, Colours colour); -DEF_CMD_TRAIT(CMD_COMPANY_CTRL, CmdCompanyCtrl, CMD_SPECTATOR | CMD_CLIENT_ID | CMD_NO_EST, CMDT_SERVER_SETTING) -DEF_CMD_TRAIT(CMD_COMPANY_ALLOW_LIST_CTRL, CmdCompanyAllowListCtrl, CMD_NO_EST, CMDT_SERVER_SETTING) -DEF_CMD_TRAIT(CMD_GIVE_MONEY, CmdGiveMoney, 0, CMDT_MONEY_MANAGEMENT) -DEF_CMD_TRAIT(CMD_RENAME_COMPANY, CmdRenameCompany, 0, CMDT_COMPANY_SETTING) -DEF_CMD_TRAIT(CMD_RENAME_PRESIDENT, CmdRenamePresident, 0, CMDT_COMPANY_SETTING) -DEF_CMD_TRAIT(CMD_SET_COMPANY_MANAGER_FACE, CmdSetCompanyManagerFace, 0, CMDT_COMPANY_SETTING) -DEF_CMD_TRAIT(CMD_SET_COMPANY_COLOUR, CmdSetCompanyColour, 0, CMDT_COMPANY_SETTING) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* COMPANY_CMD_H */ diff --git a/src/depot_cmd.h b/src/depot_cmd.h index 78eb291b31..a17acd97b3 100644 --- a/src/depot_cmd.h +++ b/src/depot_cmd.h @@ -15,7 +15,7 @@ CommandCost CmdRenameDepot(DoCommandFlags flags, DepotID depot_id, const std::string &text); -DEF_CMD_TRAIT(CMD_RENAME_DEPOT, CmdRenameDepot, 0, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; void CcCloneVehicle(Commands cmd, const CommandCost &result, VehicleID veh_id); diff --git a/src/economy_cmd.h b/src/economy_cmd.h index f0086b0d95..53c02673e5 100644 --- a/src/economy_cmd.h +++ b/src/economy_cmd.h @@ -15,6 +15,6 @@ CommandCost CmdBuyCompany(DoCommandFlags flags, CompanyID target_company, bool hostile_takeover); -DEF_CMD_TRAIT(CMD_BUY_COMPANY, CmdBuyCompany, 0, CMDT_MONEY_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* ECONOMY_CMD_H */ diff --git a/src/engine_cmd.h b/src/engine_cmd.h index 7654070a38..d8a662bfb6 100644 --- a/src/engine_cmd.h +++ b/src/engine_cmd.h @@ -17,9 +17,9 @@ CommandCost CmdEngineCtrl(DoCommandFlags flags, EngineID engine_id, CompanyID co CommandCost CmdRenameEngine(DoCommandFlags flags, EngineID engine_id, const std::string &text); CommandCost CmdSetVehicleVisibility(DoCommandFlags flags, EngineID engine_id, bool hide); -DEF_CMD_TRAIT(CMD_WANT_ENGINE_PREVIEW, CmdWantEnginePreview, 0, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_ENGINE_CTRL, CmdEngineCtrl, CMD_DEITY, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_RENAME_ENGINE, CmdRenameEngine, CMD_SERVER, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_VEHICLE_VISIBILITY, CmdSetVehicleVisibility, 0, CMDT_COMPANY_SETTING) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* ENGINE_CMD_H */ diff --git a/src/goal_cmd.h b/src/goal_cmd.h index 171019a5e4..a14bfae1ff 100644 --- a/src/goal_cmd.h +++ b/src/goal_cmd.h @@ -22,13 +22,13 @@ CommandCost CmdSetGoalCompleted(DoCommandFlags flags, GoalID goal, bool complete CommandCost CmdGoalQuestion(DoCommandFlags flags, uint16_t uniqueid, uint32_t target, bool is_client, uint32_t button_mask, GoalQuestionType type, const std::string &text); CommandCost CmdGoalQuestionAnswer(DoCommandFlags flags, uint16_t uniqueid, uint8_t button); -DEF_CMD_TRAIT(CMD_CREATE_GOAL, CmdCreateGoal, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_REMOVE_GOAL, CmdRemoveGoal, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_GOAL_DESTINATION, CmdSetGoalDestination, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_GOAL_TEXT, CmdSetGoalText, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_GOAL_PROGRESS, CmdSetGoalProgress, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_GOAL_COMPLETED, CmdSetGoalCompleted, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_GOAL_QUESTION, CmdGoalQuestion, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_GOAL_QUESTION_ANSWER, CmdGoalQuestionAnswer, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* GOAL_CMD_H */ diff --git a/src/group_cmd.h b/src/group_cmd.h index 2868d4b10f..fd81df924a 100644 --- a/src/group_cmd.h +++ b/src/group_cmd.h @@ -34,14 +34,14 @@ CommandCost CmdRemoveAllVehiclesGroup(DoCommandFlags flags, GroupID group_id); CommandCost CmdSetGroupFlag(DoCommandFlags flags, GroupID group_id, GroupFlag flag, bool value, bool recursive); CommandCost CmdSetGroupLivery(DoCommandFlags flags, GroupID group_id, bool primary, Colours colour); -DEF_CMD_TRAIT(CMD_CREATE_GROUP, CmdCreateGroup, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_DELETE_GROUP, CmdDeleteGroup, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_ALTER_GROUP, CmdAlterGroup, 0, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_ADD_VEHICLE_GROUP, CmdAddVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_ADD_SHARED_VEHICLE_GROUP, CmdAddSharedVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_REMOVE_ALL_VEHICLES_GROUP, CmdRemoveAllVehiclesGroup, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_GROUP_FLAG, CmdSetGroupFlag, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_GROUP_LIVERY, CmdSetGroupLivery, 0, CMDT_ROUTE_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; void CcCreateGroup(Commands cmd, const CommandCost &result, GroupID new_group, VehicleType vt, GroupID parent_group); void CcAddVehicleNewGroup(Commands cmd, const CommandCost &result, GroupID new_group, GroupID, VehicleID veh_id, bool, const VehicleListIdentifier &); diff --git a/src/industry_cmd.h b/src/industry_cmd.h index 0eb077c3fb..4aef4a1eac 100644 --- a/src/industry_cmd.h +++ b/src/industry_cmd.h @@ -21,11 +21,11 @@ CommandCost CmdIndustrySetExclusivity(DoCommandFlags flags, IndustryID ind_id, O CommandCost CmdIndustrySetText(DoCommandFlags flags, IndustryID ind_id, const std::string &text); CommandCost CmdIndustrySetProduction(DoCommandFlags flags, IndustryID ind_id, uint8_t prod_level, bool show_news, const std::string &text); -DEF_CMD_TRAIT(CMD_BUILD_INDUSTRY, CmdBuildIndustry, CMD_DEITY, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_INDUSTRY_SET_FLAGS, CmdIndustrySetFlags, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_INDUSTRY_SET_EXCLUSIVITY, CmdIndustrySetExclusivity, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_INDUSTRY_SET_TEXT, CmdIndustrySetText, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_INDUSTRY_SET_PRODUCTION, CmdIndustrySetProduction, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; void CcBuildIndustry(Commands cmd, const CommandCost &result, TileIndex tile, IndustryType indtype, uint32_t, bool, uint32_t); diff --git a/src/landscape_cmd.h b/src/landscape_cmd.h index fb6a70f9c1..3a81046a5f 100644 --- a/src/landscape_cmd.h +++ b/src/landscape_cmd.h @@ -15,7 +15,7 @@ CommandCost CmdLandscapeClear(DoCommandFlags flags, TileIndex tile); std::tuple CmdClearArea(DoCommandFlags flags, TileIndex tile, TileIndex start_tile, bool diagonal); -DEF_CMD_TRAIT(CMD_LANDSCAPE_CLEAR, CmdLandscapeClear, CMD_DEITY, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_CLEAR_AREA, CmdClearArea, CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION) // destroying multi-tile houses makes town rating differ between test and execution +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; // destroying multi-tile houses makes town rating differ between test and execution #endif /* LANDSCAPE_CMD_H */ diff --git a/src/league_cmd.h b/src/league_cmd.h index 4ead9e37c9..75e4dfa156 100644 --- a/src/league_cmd.h +++ b/src/league_cmd.h @@ -20,10 +20,10 @@ CommandCost CmdUpdateLeagueTableElementData(DoCommandFlags flags, LeagueTableEle CommandCost CmdUpdateLeagueTableElementScore(DoCommandFlags flags, LeagueTableElementID element, int64_t rating, const std::string &score); CommandCost CmdRemoveLeagueTableElement(DoCommandFlags flags, LeagueTableElementID element); -DEF_CMD_TRAIT(CMD_CREATE_LEAGUE_TABLE, CmdCreateLeagueTable, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_CREATE_LEAGUE_TABLE_ELEMENT, CmdCreateLeagueTableElement, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_UPDATE_LEAGUE_TABLE_ELEMENT_DATA, CmdUpdateLeagueTableElementData, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_UPDATE_LEAGUE_TABLE_ELEMENT_SCORE, CmdUpdateLeagueTableElementScore, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_REMOVE_LEAGUE_TABLE_ELEMENT, CmdRemoveLeagueTableElement, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* LEAGUE_CMD_H */ diff --git a/src/misc_cmd.h b/src/misc_cmd.h index f9b9628753..a29a3131b3 100644 --- a/src/misc_cmd.h +++ b/src/misc_cmd.h @@ -27,11 +27,11 @@ CommandCost CmdDecreaseLoan(DoCommandFlags flags, LoanCommand cmd, Money amount) CommandCost CmdSetCompanyMaxLoan(DoCommandFlags flags, CompanyID company, Money amount); CommandCost CmdPause(DoCommandFlags flags, PauseMode mode, bool pause); -DEF_CMD_TRAIT(CMD_MONEY_CHEAT, CmdMoneyCheat, CMD_OFFLINE, CMDT_CHEAT) -DEF_CMD_TRAIT(CMD_CHANGE_BANK_BALANCE, CmdChangeBankBalance, CMD_DEITY, CMDT_MONEY_MANAGEMENT) -DEF_CMD_TRAIT(CMD_INCREASE_LOAN, CmdIncreaseLoan, 0, CMDT_MONEY_MANAGEMENT) -DEF_CMD_TRAIT(CMD_DECREASE_LOAN, CmdDecreaseLoan, 0, CMDT_MONEY_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_COMPANY_MAX_LOAN, CmdSetCompanyMaxLoan, CMD_DEITY, CMDT_MONEY_MANAGEMENT) -DEF_CMD_TRAIT(CMD_PAUSE, CmdPause, CMD_SERVER | CMD_NO_EST, CMDT_SERVER_SETTING) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* MISC_CMD_H */ diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp index e8f6b78a4a..5c62033a98 100644 --- a/src/network/network_admin.cpp +++ b/src/network/network_admin.cpp @@ -573,12 +573,12 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames() auto p = std::make_unique(this, ADMIN_PACKET_SERVER_CMD_NAMES); for (uint16_t i = 0; i < CMD_END; i++) { - const char *cmdname = GetCommandName(static_cast(i)); + std::string_view cmdname = GetCommandName(static_cast(i)); /* Should COMPAT_MTU be exceeded, start a new packet * (magic 5: 1 bool "more data" and one uint16_t "command id", one * byte for string '\0' termination and 1 bool "no more data" */ - if (!p->CanWriteToPacket(strlen(cmdname) + 5)) { + if (!p->CanWriteToPacket(cmdname.length() + 5)) { p->Send_bool(false); this->SendPacket(std::move(p)); diff --git a/src/news_cmd.h b/src/news_cmd.h index 0a90f3b02d..ab93dc2053 100644 --- a/src/news_cmd.h +++ b/src/news_cmd.h @@ -16,6 +16,6 @@ CommandCost CmdCustomNewsItem(DoCommandFlags flags, NewsType type, NewsReferenceType reftype1, CompanyID company, uint32_t reference, const std::string &text); -DEF_CMD_TRAIT(CMD_CUSTOM_NEWS_ITEM, CmdCustomNewsItem, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* NEWS_CMD_H */ diff --git a/src/object_cmd.h b/src/object_cmd.h index 772b1c11a5..9a5688c346 100644 --- a/src/object_cmd.h +++ b/src/object_cmd.h @@ -16,7 +16,7 @@ CommandCost CmdBuildObject(DoCommandFlags flags, TileIndex tile, ObjectType type, uint8_t view); CommandCost CmdBuildObjectArea(DoCommandFlags flags, TileIndex tile, TileIndex start_tile, ObjectType type, uint8_t view, bool diagonal); -DEF_CMD_TRAIT(CMD_BUILD_OBJECT, CmdBuildObject, CMD_DEITY | CMD_NO_WATER | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_OBJECT_AREA, CmdBuildObjectArea, CMD_DEITY | CMD_NO_WATER | CMD_NO_TEST | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* OBJECT_CMD_H */ diff --git a/src/order_cmd.h b/src/order_cmd.h index 7400ba665d..31e54a42c6 100644 --- a/src/order_cmd.h +++ b/src/order_cmd.h @@ -23,14 +23,14 @@ CommandCost CmdCloneOrder(DoCommandFlags flags, CloneOptions action, VehicleID v CommandCost CmdMoveOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID moving_order, VehicleOrderID target_order); CommandCost CmdClearOrderBackup(DoCommandFlags flags, TileIndex tile, ClientID user_id); -DEF_CMD_TRAIT(CMD_MODIFY_ORDER, CmdModifyOrder, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SKIP_TO_ORDER, CmdSkipToOrder, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_DELETE_ORDER, CmdDeleteOrder, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_INSERT_ORDER, CmdInsertOrder, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_ORDER_REFIT, CmdOrderRefit, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_CLONE_ORDER, CmdCloneOrder, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_MOVE_ORDER, CmdMoveOrder, CMD_LOCATION, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_CLEAR_ORDER_BACKUP, CmdClearOrderBackup, CMD_CLIENT_ID, CMDT_SERVER_SETTING) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; template inline EndianBufferWriter &operator <<(EndianBufferWriter &buffer, const Order &order) diff --git a/src/rail_cmd.h b/src/rail_cmd.h index 6ef5e8f8b8..f9572637f7 100644 --- a/src/rail_cmd.h +++ b/src/rail_cmd.h @@ -26,16 +26,16 @@ CommandCost CmdConvertRail(DoCommandFlags flags, TileIndex tile, TileIndex area_ CommandCost CmdBuildSignalTrack(DoCommandFlags flags, TileIndex tile, TileIndex end_tile, Track track, SignalType sigtype, SignalVariant sigvar, bool mode, bool autofill, bool minimise_gaps, uint8_t signal_density); CommandCost CmdRemoveSignalTrack(DoCommandFlags flags, TileIndex tile, TileIndex end_tile, Track track, bool autofill); -DEF_CMD_TRAIT(CMD_BUILD_RAILROAD_TRACK, CmdBuildRailroadTrack, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_RAILROAD_TRACK, CmdRemoveRailroadTrack, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_SINGLE_RAIL, CmdBuildSingleRail, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_SINGLE_RAIL, CmdRemoveSingleRail, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_TRAIN_DEPOT, CmdBuildTrainDepot, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_SINGLE_SIGNAL, CmdBuildSingleSignal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_SINGLE_SIGNAL, CmdRemoveSingleSignal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_CONVERT_RAIL, CmdConvertRail, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_SIGNAL_TRACK, CmdBuildSignalTrack, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_SIGNAL_TRACK, CmdRemoveSignalTrack, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; CommandCallback CcPlaySound_CONSTRUCTION_RAIL; CommandCallback CcStation; diff --git a/src/road_cmd.h b/src/road_cmd.h index dfd3482492..c33be0808e 100644 --- a/src/road_cmd.h +++ b/src/road_cmd.h @@ -25,11 +25,11 @@ CommandCost CmdBuildRoad(DoCommandFlags flags, TileIndex tile, RoadBits pieces, CommandCost CmdBuildRoadDepot(DoCommandFlags flags, TileIndex tile, RoadType rt, DiagDirection dir); CommandCost CmdConvertRoad(DoCommandFlags flags, TileIndex tile, TileIndex area_start, RoadType to_type); -DEF_CMD_TRAIT(CMD_BUILD_LONG_ROAD, CmdBuildLongRoad, CMD_AUTO | CMD_NO_WATER | CMD_DEITY, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_LONG_ROAD, CmdRemoveLongRoad, CMD_AUTO | CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION) // towns may disallow removing road bits (as they are connected) in test, but in exec they're removed and thus removing is allowed. -DEF_CMD_TRAIT(CMD_BUILD_ROAD, CmdBuildRoad, CMD_AUTO | CMD_NO_WATER | CMD_DEITY, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_ROAD_DEPOT, CmdBuildRoadDepot, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_CONVERT_ROAD, CmdConvertRoad, 0, CMDT_LANDSCAPE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; // towns may disallow removing road bits (as they are connected) in test, but in exec they're removed and thus removing is allowed. +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; CommandCallback CcPlaySound_CONSTRUCTION_OTHER; CommandCallback CcBuildRoadTunnel; diff --git a/src/roadveh_cmd.h b/src/roadveh_cmd.h index 78e26d26f7..ccd1a83c18 100644 --- a/src/roadveh_cmd.h +++ b/src/roadveh_cmd.h @@ -22,6 +22,6 @@ CommandCost CmdBuildRoadVehicle(DoCommandFlags flags, TileIndex tile, const Engi CommandCost CmdTurnRoadVeh(DoCommandFlags flags, VehicleID veh_id); -DEF_CMD_TRAIT(CMD_TURN_ROADVEH, CmdTurnRoadVeh, CMD_LOCATION, CMDT_VEHICLE_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* ROADVEH_CMD_H */ diff --git a/src/settings_cmd.h b/src/settings_cmd.h index c4294da2b4..a7efc5aca7 100644 --- a/src/settings_cmd.h +++ b/src/settings_cmd.h @@ -15,7 +15,7 @@ CommandCost CmdChangeSetting(DoCommandFlags flags, const std::string &name, int32_t value); CommandCost CmdChangeCompanySetting(DoCommandFlags flags, const std::string &name, int32_t value); -DEF_CMD_TRAIT(CMD_CHANGE_SETTING, CmdChangeSetting, CMD_SERVER | CMD_NO_EST, CMDT_SERVER_SETTING) -DEF_CMD_TRAIT(CMD_CHANGE_COMPANY_SETTING, CmdChangeCompanySetting, CMD_NO_EST, CMDT_COMPANY_SETTING) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* SETTINGS_CMD_H */ diff --git a/src/signs_cmd.h b/src/signs_cmd.h index 126210d83c..b8960cae6c 100644 --- a/src/signs_cmd.h +++ b/src/signs_cmd.h @@ -16,8 +16,8 @@ std::tuple CmdPlaceSign(DoCommandFlags flags, TileIndex tile, const std::string &text); CommandCost CmdRenameSign(DoCommandFlags flags, SignID sign_id, const std::string &text); -DEF_CMD_TRAIT(CMD_PLACE_SIGN, CmdPlaceSign, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_RENAME_SIGN, CmdRenameSign, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; void CcPlaceSign(Commands cmd, const CommandCost &result, SignID new_sign); diff --git a/src/station_cmd.h b/src/station_cmd.h index 32c2491671..e45850ec40 100644 --- a/src/station_cmd.h +++ b/src/station_cmd.h @@ -28,13 +28,13 @@ CommandCost CmdRemoveRoadStop(DoCommandFlags flags, TileIndex tile, uint8_t widt CommandCost CmdRenameStation(DoCommandFlags flags, StationID station_id, const std::string &text); CommandCost CmdOpenCloseAirport(DoCommandFlags flags, StationID station_id); -DEF_CMD_TRAIT(CMD_BUILD_AIRPORT, CmdBuildAirport, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_DOCK, CmdBuildDock, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_RAIL_STATION, CmdBuildRailStation, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_FROM_RAIL_STATION, CmdRemoveFromRailStation, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_ROAD_STOP, CmdBuildRoadStop, CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_ROAD_STOP, CmdRemoveRoadStop, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_RENAME_STATION, CmdRenameStation, 0, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_OPEN_CLOSE_AIRPORT, CmdOpenCloseAirport, 0, CMDT_ROUTE_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* STATION_CMD_H */ diff --git a/src/story_cmd.h b/src/story_cmd.h index 3ff418f02e..77788c6896 100644 --- a/src/story_cmd.h +++ b/src/story_cmd.h @@ -25,14 +25,14 @@ CommandCost CmdRemoveStoryPage(DoCommandFlags flags, StoryPageID page_id); CommandCost CmdRemoveStoryPageElement(DoCommandFlags flags, StoryPageElementID page_element_id); CommandCost CmdStoryPageButton(DoCommandFlags flags, TileIndex tile, StoryPageElementID page_element_id, VehicleID reference); -DEF_CMD_TRAIT(CMD_CREATE_STORY_PAGE, CmdCreateStoryPage, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_CREATE_STORY_PAGE_ELEMENT, CmdCreateStoryPageElement, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_UPDATE_STORY_PAGE_ELEMENT, CmdUpdateStoryPageElement, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_STORY_PAGE_TITLE, CmdSetStoryPageTitle, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_STORY_PAGE_DATE, CmdSetStoryPageDate, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SHOW_STORY_PAGE, CmdShowStoryPage, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_REMOVE_STORY_PAGE, CmdRemoveStoryPage, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_REMOVE_STORY_PAGE_ELEMENT, CmdRemoveStoryPageElement, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_STORY_PAGE_BUTTON, CmdStoryPageButton, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* STORY_CMD_H */ diff --git a/src/subsidy_cmd.h b/src/subsidy_cmd.h index 6bd7cad278..817e78669c 100644 --- a/src/subsidy_cmd.h +++ b/src/subsidy_cmd.h @@ -17,7 +17,7 @@ CommandCost CmdCreateSubsidy(DoCommandFlags flags, CargoType cargo_type, Source src, Source dst); -DEF_CMD_TRAIT(CMD_CREATE_SUBSIDY, CmdCreateSubsidy, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; template diff --git a/src/terraform_cmd.h b/src/terraform_cmd.h index d12b711b4e..25c32c52e7 100644 --- a/src/terraform_cmd.h +++ b/src/terraform_cmd.h @@ -17,8 +17,8 @@ std::tuple CmdTerraformLand(DoCommandFlags flags, TileIndex tile, Slope slope, bool dir_up); std::tuple CmdLevelLand(DoCommandFlags flags, TileIndex tile, TileIndex start_tile, bool diagonal, LevelMode lm); -DEF_CMD_TRAIT(CMD_TERRAFORM_LAND, CmdTerraformLand, CMD_ALL_TILES | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_LEVEL_LAND, CmdLevelLand, CMD_ALL_TILES | CMD_AUTO | CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION) // test run might clear tiles multiple times, in execution that only happens once +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; // test run might clear tiles multiple times, in execution that only happens once CommandCallback CcPlaySound_EXPLOSION; void CcTerraform(Commands cmd, const CommandCost &result, Money, TileIndex tile); diff --git a/src/timetable_cmd.h b/src/timetable_cmd.h index 6ab2b4d6d6..fe39f96def 100644 --- a/src/timetable_cmd.h +++ b/src/timetable_cmd.h @@ -19,10 +19,10 @@ CommandCost CmdSetVehicleOnTime(DoCommandFlags flags, VehicleID veh, bool apply_ CommandCost CmdAutofillTimetable(DoCommandFlags flags, VehicleID veh, bool autofill, bool preserve_wait_time); CommandCost CmdSetTimetableStart(DoCommandFlags flags, VehicleID veh_id, bool timetable_all, TimerGameTick::TickCounter start_tick); -DEF_CMD_TRAIT(CMD_CHANGE_TIMETABLE, CmdChangeTimetable, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_BULK_CHANGE_TIMETABLE, CmdBulkChangeTimetable, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_VEHICLE_ON_TIME, CmdSetVehicleOnTime, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_AUTOFILL_TIMETABLE, CmdAutofillTimetable, 0, CMDT_ROUTE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_SET_TIMETABLE_START, CmdSetTimetableStart, 0, CMDT_ROUTE_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* TIMETABLE_CMD_H */ diff --git a/src/town_cmd.h b/src/town_cmd.h index 5f6b5b0e60..d074c6fe76 100644 --- a/src/town_cmd.h +++ b/src/town_cmd.h @@ -29,16 +29,16 @@ CommandCost CmdExpandTown(DoCommandFlags flags, TownID town_id, uint32_t grow_am CommandCost CmdDeleteTown(DoCommandFlags flags, TownID town_id); CommandCost CmdPlaceHouse(DoCommandFlags flags, TileIndex tile, HouseID house, bool house_protected); -DEF_CMD_TRAIT(CMD_FOUND_TOWN, CmdFoundTown, CMD_DEITY | CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION) // founding random town can fail only in exec run -DEF_CMD_TRAIT(CMD_RENAME_TOWN, CmdRenameTown, CMD_DEITY | CMD_SERVER, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_DO_TOWN_ACTION, CmdDoTownAction, CMD_LOCATION, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_TOWN_CARGO_GOAL, CmdTownCargoGoal, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_TOWN_GROWTH_RATE, CmdTownGrowthRate, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_TOWN_RATING, CmdTownRating, CMD_DEITY, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_TOWN_SET_TEXT, CmdTownSetText, CMD_DEITY | CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_EXPAND_TOWN, CmdExpandTown, CMD_DEITY, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_DELETE_TOWN, CmdDeleteTown, CMD_OFFLINE, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_PLACE_HOUSE, CmdPlaceHouse, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; // founding random town can fail only in exec run +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; CommandCallback CcFoundTown; void CcFoundRandomTown(Commands cmd, const CommandCost &result, Money, TownID town_id); diff --git a/src/train_cmd.h b/src/train_cmd.h index 907b3ddd46..550905bddb 100644 --- a/src/train_cmd.h +++ b/src/train_cmd.h @@ -21,9 +21,9 @@ CommandCost CmdMoveRailVehicle(DoCommandFlags flags, VehicleID src_veh, VehicleI CommandCost CmdForceTrainProceed(DoCommandFlags flags, VehicleID veh_id); CommandCost CmdReverseTrainDirection(DoCommandFlags flags, VehicleID veh_id, bool reverse_single_veh); -DEF_CMD_TRAIT(CMD_MOVE_RAIL_VEHICLE, CmdMoveRailVehicle, CMD_LOCATION, CMDT_VEHICLE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_FORCE_TRAIN_PROCEED, CmdForceTrainProceed, CMD_LOCATION, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_REVERSE_TRAIN_DIRECTION, CmdReverseTrainDirection, CMD_LOCATION, CMDT_VEHICLE_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; void CcBuildWagon(Commands cmd, const CommandCost &result, VehicleID new_veh_id, uint, uint16_t, CargoArray, TileIndex tile, EngineID, bool, CargoType, ClientID); diff --git a/src/tree_cmd.h b/src/tree_cmd.h index 11263a1885..a397c20087 100644 --- a/src/tree_cmd.h +++ b/src/tree_cmd.h @@ -14,6 +14,6 @@ CommandCost CmdPlantTree(DoCommandFlags flags, TileIndex tile, TileIndex start_tile, uint8_t tree_to_plant, bool diagonal); -DEF_CMD_TRAIT(CMD_PLANT_TREE, CmdPlantTree, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* TREE_CMD_H */ diff --git a/src/tunnelbridge_cmd.h b/src/tunnelbridge_cmd.h index a45b0f7bce..ea7a3a002a 100644 --- a/src/tunnelbridge_cmd.h +++ b/src/tunnelbridge_cmd.h @@ -17,8 +17,8 @@ CommandCost CmdBuildBridge(DoCommandFlags flags, TileIndex tile_end, TileIndex tile_start, TransportType transport_type, BridgeType bridge_type, uint8_t road_rail_type); CommandCost CmdBuildTunnel(DoCommandFlags flags, TileIndex start_tile, TransportType transport_type, uint8_t road_rail_type); -DEF_CMD_TRAIT(CMD_BUILD_BRIDGE, CmdBuildBridge, CMD_DEITY | CMD_AUTO | CMD_NO_WATER, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_TUNNEL, CmdBuildTunnel, CMD_DEITY | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; void CcBuildBridge(Commands cmd, const CommandCost &result, TileIndex end_tile, TileIndex tile_start, TransportType transport_type, BridgeType, uint8_t); diff --git a/src/vehicle_cmd.h b/src/vehicle_cmd.h index f7b994dab6..39bc84dbdc 100644 --- a/src/vehicle_cmd.h +++ b/src/vehicle_cmd.h @@ -29,17 +29,17 @@ CommandCost CmdMassStartStopVehicle(DoCommandFlags flags, TileIndex tile, bool d CommandCost CmdDepotSellAllVehicles(DoCommandFlags flags, TileIndex tile, VehicleType vehicle_type); CommandCost CmdDepotMassAutoReplace(DoCommandFlags flags, TileIndex tile, VehicleType vehicle_type); -DEF_CMD_TRAIT(CMD_BUILD_VEHICLE, CmdBuildVehicle, CMD_CLIENT_ID, CMDT_VEHICLE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_SELL_VEHICLE, CmdSellVehicle, CMD_CLIENT_ID | CMD_LOCATION, CMDT_VEHICLE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REFIT_VEHICLE, CmdRefitVehicle, CMD_LOCATION, CMDT_VEHICLE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_SEND_VEHICLE_TO_DEPOT, CmdSendVehicleToDepot, 0, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_CHANGE_SERVICE_INT, CmdChangeServiceInt, 0, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_RENAME_VEHICLE, CmdRenameVehicle, 0, CMDT_OTHER_MANAGEMENT) -DEF_CMD_TRAIT(CMD_CLONE_VEHICLE, CmdCloneVehicle, CMD_NO_TEST, CMDT_VEHICLE_CONSTRUCTION) // NewGRF callbacks influence building and refitting making it impossible to correctly estimate the cost -DEF_CMD_TRAIT(CMD_START_STOP_VEHICLE, CmdStartStopVehicle, CMD_LOCATION, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_MASS_START_STOP, CmdMassStartStopVehicle, 0, CMDT_VEHICLE_MANAGEMENT) -DEF_CMD_TRAIT(CMD_DEPOT_SELL_ALL_VEHICLES, CmdDepotSellAllVehicles, 0, CMDT_VEHICLE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_DEPOT_MASS_AUTOREPLACE, CmdDepotMassAutoReplace, 0, CMDT_VEHICLE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; // NewGRF callbacks influence building and refitting making it impossible to correctly estimate the cost +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; void CcBuildPrimaryVehicle(Commands cmd, const CommandCost &result, VehicleID new_veh_id, uint, uint16_t, CargoArray); void CcStartStopVehicle(Commands cmd, const CommandCost &result, VehicleID veh_id, bool); diff --git a/src/viewport_cmd.h b/src/viewport_cmd.h index 8f0d79261a..9de4e718b3 100644 --- a/src/viewport_cmd.h +++ b/src/viewport_cmd.h @@ -15,6 +15,6 @@ CommandCost CmdScrollViewport(DoCommandFlags flags, TileIndex tile, ViewportScrollTarget target, uint32_t ref); -DEF_CMD_TRAIT(CMD_SCROLL_VIEWPORT, CmdScrollViewport, CMD_DEITY, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* VIEWPORT_CMD_H */ diff --git a/src/water_cmd.h b/src/water_cmd.h index 3ee90523a4..b0da487386 100644 --- a/src/water_cmd.h +++ b/src/water_cmd.h @@ -17,8 +17,8 @@ CommandCost CmdBuildShipDepot(DoCommandFlags flags, TileIndex tile, Axis axis); CommandCost CmdBuildCanal(DoCommandFlags flags, TileIndex tile, TileIndex start_tile, WaterClass wc, bool diagonal); CommandCost CmdBuildLock(DoCommandFlags flags, TileIndex tile); -DEF_CMD_TRAIT(CMD_BUILD_SHIP_DEPOT, CmdBuildShipDepot, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_CANAL, CmdBuildCanal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_LOCK, CmdBuildLock, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* WATER_CMD_H */ diff --git a/src/waypoint_cmd.h b/src/waypoint_cmd.h index 161a8c15d9..1ea3ad6168 100644 --- a/src/waypoint_cmd.h +++ b/src/waypoint_cmd.h @@ -23,11 +23,11 @@ CommandCost CmdRemoveFromRoadWaypoint(DoCommandFlags flags, TileIndex start, Til CommandCost CmdBuildBuoy(DoCommandFlags flags, TileIndex tile); CommandCost CmdRenameWaypoint(DoCommandFlags flags, StationID waypoint_id, const std::string &text); -DEF_CMD_TRAIT(CMD_BUILD_RAIL_WAYPOINT, CmdBuildRailWaypoint, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_FROM_RAIL_WAYPOINT, CmdRemoveFromRailWaypoint, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_ROAD_WAYPOINT, CmdBuildRoadWaypoint, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_REMOVE_FROM_ROAD_WAYPOINT, CmdRemoveFromRoadWaypoint, 0, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_BUILD_BUOY, CmdBuildBuoy, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION) -DEF_CMD_TRAIT(CMD_RENAME_WAYPOINT, CmdRenameWaypoint, 0, CMDT_OTHER_MANAGEMENT) +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; +template <> struct CommandTraits : DefaultCommandTraits {}; #endif /* WAYPOINT_CMD_H */