/* * Copyright (C) 2002-2025 by the Widelands Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * */ #ifndef WL_COMMANDS_QUEUE_CMD_IDS_H #define WL_COMMANDS_QUEUE_CMD_IDS_H #include /* * This file contains the ids for the different * cmd_queue cmds. They are needed to save those * files to disk and (even more important) to load * them again. * * Some of this Commands (the player commands) have another * index, but this one is completley independent and only for * writing to files */ namespace Widelands { struct GameLogicCommand; // The command types are used by the QueueCmdFactory, for network serialization // and for savegame compatibility. // DO NOT change the order // TODO(GunChleoc): Whenever we break savegame compatibility, clean this up and change data type to // uint16_t. enum class QueueCommandTypes : uint8_t { /* ID zero is reserved and must never be used */ kNone = 0, /* PLAYER COMMANDS BELOW */ kBuildBuilding, kBuildFlag, kBuildRoad, kFlagAction, kStartStopBuilding, kEnhanceBuilding, kBulldoze, kChangeTrainingOptions, kDropSoldier, kChangeSoldierCapacity, kAttack, kSetWarePriority, kSetWareTargetQuantity, // 14 removed post Build 21 kSetWorkerTargetQuantity = 15, // 16 removed post Build 21 // 17 was a command related to old events. removed kSetInputMaxFill = 18, kMessageSetStatusRead = 21, kMessageSetStatusArchived, kSetStockPolicy, kDismantleBuilding, kEvictWorker, kSetSoldierPreference, kProposeTrade, kBuildWaterway, kTradeAction, kExtendTrade, // 30 kShipSink = 121, kShipCancelExpedition, kStartOrCancelExpedition, kShipConstructPort, kShipScoutDirection, kShipExploreIsland, // The commands below are never serialized, but we still keep the IDs stable for savegame // compatibility. kDestroyMapObject, kAct, // 128 // 129 was a command related to old events. removed kIncorporate = 130, kLuaScript, kLuaCoroutine, kCalculateStatistics, kExpeditionConfig, kPickCustomStartingPosition, kShipRefit, kWarshipCommand, kShipSetDestination, // 138 kCallEconomyBalance = 200, kDeleteMessage, kToggleMuteMessages, kMarkMapObjectForRemoval, kDiplomacy, kPinnedNote, kToggleInfiniteProduction, kBuildingName, kFleetTargets, // 208 kNetCheckSync = 250, kReplaySyncWrite, kReplaySyncRead, kReplayEnd // 253 }; GameLogicCommand& create_correct_queue_command(Widelands::QueueCommandTypes id); } // namespace Widelands #endif // end of include guard: WL_COMMANDS_QUEUE_CMD_IDS_H