use crate::data::{ParserResult, Span};
use nom::{combinator::map, number::complete::le_u8};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[allow(non_camel_case_types)]
#[repr(u8)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum CommandType {
CMD_DefaultAction = 0,
CMD_Stop = 1,
CMD_Destroy = 2,
CMD_BuildSquad = 3,
CMD_InstantBuildSquad = 4,
CMD_CancelProduction = 5,
CMD_BuildStructure = 6,
CMD_Move = 7,
CMD_FlightMove = 8,
CMD_Face = 9,
CMD_Attack = 10,
CMD_AttackMove = 11,
CMD_RallyPoint = 12,
CMD_Capture = 13,
CMD_Ability = 14,
CMD_Evacuate = 15,
CMD_Upgrade = 16,
CMD_InstantUpgrade = 17,
CMD_Load = 18,
CMD_Unload = 19,
CMD_UnloadSquads = 20,
CMD_AttackStop = 21,
CMD_AttackForced = 22,
CMD_SetHoldHeading = 23,
CMD_StopMove = 24,
CMD_Paradrop = 25,
CMD_DefuseMine = 26,
CMD_Casualty = 27,
CMD_Death = 28,
CMD_InstantDeath = 29,
CMD_Projectile = 30,
CMD_PlaceCharge = 31,
CMD_BuildEntity = 32,
CMD_RescueCasualty = 33,
CMD_AttackFromHold = 34,
CMD_Vault = 35,
CMD_KnockedBack = 36,
CMD_Teardown = 37,
CMD_Melee = 38,
CMD_ResolveOverlap = 39,
CMD_Stun = 40,
CMD_InstantSetupTeamWeapon = 41,
CMD_SetupTeamWeapon = 42,
CMD_MoveToCover = 43,
CMD_Taunted = 44,
CMD_Trade = 45,
CMD_Brace = 46,
CMD_Gather = 47,
CMD_PickUpSimItem = 48,
CMD_ChangeCombatSlot = 49,
CMD_RetreatMove = 50,
CMD_StopAbility = 51,
CMD_InstantLoad = 52,
CMD_RestoreWreck = 53,
CMD_Disable = 54,
CMD_Enable = 55,
CMD_CancelConstruction = 56,
CMD_HoldPositionOn = 57,
CMD_HoldPositionOff = 58,
CMD_CancelRestoreWreck = 59,
CMD_Repair = 60,
CMD_COUNT = 61,
SCMD_Move = 62,
SCMD_Stop = 63,
SCMD_Destroy = 64,
SCMD_BuildStructure = 65,
SCMD_Capture = 66,
SCMD_Attack = 67,
SCMD_ReinforceUnit = 68,
SCMD_Upgrade = 69,
SCMD_CancelProduction = 70,
SCMD_AttackMove = 71,
SCMD_Ability = 72,
SCMD_Load = 73,
SCMD_InstantLoad = 74,
SCMD_UnloadSquads = 75,
SCMD_Unload = 76,
SCMD_PickupTrailer_UNUSED = 77,
SCMD_Retreat = 78,
SCMD_CaptureTeamWeapon = 79,
SCMD_SetMoveType = 80,
SCMD_InstantReinforceUnit = 81,
SCMD_InstantUpgrade = 82,
SCMD_PlaceCharge = 83,
SCMD_DefuseCharge = 84,
SCMD_DropTrailer_UNUSED = 85,
SCMD_PickUpSimItem = 86,
SCMD_DefuseMine = 87,
SCMD_DoPlan = 88,
SCMD_Patrol = 89,
SCMD_Surprise = 90,
SCMD_InstantSetupTeamWeapon = 91,
SCMD_SetupTeamWeapon = 92,
SCMD_AbandonTeamWeapon = 93,
SCMD_StationaryAttack = 94,
SCMD_RevertFieldSupport = 95,
SCMD_Face = 96,
SCMD_BuildSquad = 97,
SCMD_RallyPoint = 98,
SCMD_RescueCasualty = 99,
SCMD_Recrew = 100,
SCMD_Merge = 101,
SCMD_WeaponPreference = 102,
SCMD_CombatStance = 103,
SCMD_MoveToCover = 104,
SCMD_Gather = 105,
SCMD_AttackWithinLeashArea = 106,
SCMD_JoinFormationSquadGroup = 107,
SCMD_Trade = 108,
SCMD_HoldPosition = 109,
SCMD_Evacuate = 110,
SCMD_Vault = 111,
SCMD_CancelQueuedCommand = 112,
SCMD_RespondToBeingBreached = 113,
SCMD_StopAbility = 114,
SCMD_InstantParadropReinforceUnit = 115,
SCMD_MoveUntilInsidePlayableArea = 116,
SCMD_BeingTowed = 117,
SCMD_AttachingTrailer = 118,
SCMD_DetachingTrailer_UNUSED = 119,
SCMD_RestoreWreck_UNUSED = 120,
SCMD_AnimatedSpawn = 121,
SCMD_COUNT = 122,
FCMD_FormationSquadGroupMove = 123,
FCMD_FormationSquadGroupAttack = 124,
FCMD_FormationSquadGroupAttackMove = 125,
FCMD_FormationSquadGroupStop = 126,
FCMD_COUNT = 127,
PCMD_PlaceAndConstructEntities = 128,
PCMD_ResourceDonation = 129,
PCMD_CheatResources = 130,
PCMD_CheatRevealAll = 131,
PCMD_Ability = 132,
PCMD_CheatBuildTime = 133,
PCMD_CheatIgnoreCosts = 134,
PCMD_Upgrade = 135,
PCMD_InstantUpgrade = 136,
PCMD_TentativeUpgrade = 137,
PCMD_TentativeUpgradePurchaseAll = 138,
PCMD_UpgradeRemove = 139,
PCMD_TentativeUpgradeRemoveAll = 140,
PCMD_SlotItemRemove_DEPRECATED = 141,
PCMD_CancelProduction = 142,
PCMD_DetonateCharges = 143,
PCMD_AIPlayer = 144,
PCMD_AIPlayer_EncounterNotification = 145,
PCMD_Surrender = 146,
PCMD_WaitObjectDone = 147,
PCMD_BroadcastMessage = 148,
PCMD_AIPlayer_EncounterSniped = 149,
PCMD_AIPlayer_ResourceBonus = 150,
PCMD_FormationSquadGroupCreateBegin = 151,
PCMD_FormationSquadGroupAddSquad = 152,
PCMD_FormationSquadGroupCreateEnd = 153,
PCMD_EndTurn = 154,
PCMD_StopAbility = 155,
PCMD_COUNT = 156,
DCMD_CameraTrack = 157,
DCMD_COUNT = 158,
Unknown(u8),
}
impl CommandType {
pub(crate) fn parse(input: Span) -> ParserResult<CommandType> {
map(le_u8, CommandType::from)(input)
}
}
impl From<u8> for CommandType {
fn from(val: u8) -> CommandType {
match val {
0 => CommandType::CMD_DefaultAction,
1 => CommandType::CMD_Stop,
2 => CommandType::CMD_Destroy,
3 => CommandType::CMD_BuildSquad,
4 => CommandType::CMD_InstantBuildSquad,
5 => CommandType::CMD_CancelProduction,
6 => CommandType::CMD_BuildStructure,
7 => CommandType::CMD_Move,
8 => CommandType::CMD_FlightMove,
9 => CommandType::CMD_Face,
10 => CommandType::CMD_Attack,
11 => CommandType::CMD_AttackMove,
12 => CommandType::CMD_RallyPoint,
13 => CommandType::CMD_Capture,
14 => CommandType::CMD_Ability,
15 => CommandType::CMD_Evacuate,
16 => CommandType::CMD_Upgrade,
17 => CommandType::CMD_InstantUpgrade,
18 => CommandType::CMD_Load,
19 => CommandType::CMD_Unload,
20 => CommandType::CMD_UnloadSquads,
21 => CommandType::CMD_AttackStop,
22 => CommandType::CMD_AttackForced,
23 => CommandType::CMD_SetHoldHeading,
24 => CommandType::CMD_StopMove,
25 => CommandType::CMD_Paradrop,
26 => CommandType::CMD_DefuseMine,
27 => CommandType::CMD_Casualty,
28 => CommandType::CMD_Death,
29 => CommandType::CMD_InstantDeath,
30 => CommandType::CMD_Projectile,
31 => CommandType::CMD_PlaceCharge,
32 => CommandType::CMD_BuildEntity,
33 => CommandType::CMD_RescueCasualty,
34 => CommandType::CMD_AttackFromHold,
35 => CommandType::CMD_Vault,
36 => CommandType::CMD_KnockedBack,
37 => CommandType::CMD_Teardown,
38 => CommandType::CMD_Melee,
39 => CommandType::CMD_ResolveOverlap,
40 => CommandType::CMD_Stun,
41 => CommandType::CMD_InstantSetupTeamWeapon,
42 => CommandType::CMD_SetupTeamWeapon,
43 => CommandType::CMD_MoveToCover,
44 => CommandType::CMD_Taunted,
45 => CommandType::CMD_Trade,
46 => CommandType::CMD_Brace,
47 => CommandType::CMD_Gather,
48 => CommandType::CMD_PickUpSimItem,
49 => CommandType::CMD_ChangeCombatSlot,
50 => CommandType::CMD_RetreatMove,
51 => CommandType::CMD_StopAbility,
52 => CommandType::CMD_InstantLoad,
53 => CommandType::CMD_RestoreWreck,
54 => CommandType::CMD_Disable,
55 => CommandType::CMD_Enable,
56 => CommandType::CMD_CancelConstruction,
57 => CommandType::CMD_HoldPositionOn,
58 => CommandType::CMD_HoldPositionOff,
59 => CommandType::CMD_CancelRestoreWreck,
60 => CommandType::CMD_Repair,
61 => CommandType::CMD_COUNT,
62 => CommandType::SCMD_Move,
63 => CommandType::SCMD_Stop,
64 => CommandType::SCMD_Destroy,
65 => CommandType::SCMD_BuildStructure,
66 => CommandType::SCMD_Capture,
67 => CommandType::SCMD_Attack,
68 => CommandType::SCMD_ReinforceUnit,
69 => CommandType::SCMD_Upgrade,
70 => CommandType::SCMD_CancelProduction,
71 => CommandType::SCMD_AttackMove,
72 => CommandType::SCMD_Ability,
73 => CommandType::SCMD_Load,
74 => CommandType::SCMD_InstantLoad,
75 => CommandType::SCMD_UnloadSquads,
76 => CommandType::SCMD_Unload,
77 => CommandType::SCMD_PickupTrailer_UNUSED,
78 => CommandType::SCMD_Retreat,
79 => CommandType::SCMD_CaptureTeamWeapon,
80 => CommandType::SCMD_SetMoveType,
81 => CommandType::SCMD_InstantReinforceUnit,
82 => CommandType::SCMD_InstantUpgrade,
83 => CommandType::SCMD_PlaceCharge,
84 => CommandType::SCMD_DefuseCharge,
85 => CommandType::SCMD_DropTrailer_UNUSED,
86 => CommandType::SCMD_PickUpSimItem,
87 => CommandType::SCMD_DefuseMine,
88 => CommandType::SCMD_DoPlan,
89 => CommandType::SCMD_Patrol,
90 => CommandType::SCMD_Surprise,
91 => CommandType::SCMD_InstantSetupTeamWeapon,
92 => CommandType::SCMD_SetupTeamWeapon,
93 => CommandType::SCMD_AbandonTeamWeapon,
94 => CommandType::SCMD_StationaryAttack,
95 => CommandType::SCMD_RevertFieldSupport,
96 => CommandType::SCMD_Face,
97 => CommandType::SCMD_BuildSquad,
98 => CommandType::SCMD_RallyPoint,
99 => CommandType::SCMD_RescueCasualty,
100 => CommandType::SCMD_Recrew,
101 => CommandType::SCMD_Merge,
102 => CommandType::SCMD_WeaponPreference,
103 => CommandType::SCMD_CombatStance,
104 => CommandType::SCMD_MoveToCover,
105 => CommandType::SCMD_Gather,
106 => CommandType::SCMD_AttackWithinLeashArea,
107 => CommandType::SCMD_JoinFormationSquadGroup,
108 => CommandType::SCMD_Trade,
109 => CommandType::SCMD_HoldPosition,
110 => CommandType::SCMD_Evacuate,
111 => CommandType::SCMD_Vault,
112 => CommandType::SCMD_CancelQueuedCommand,
113 => CommandType::SCMD_RespondToBeingBreached,
114 => CommandType::SCMD_StopAbility,
115 => CommandType::SCMD_InstantParadropReinforceUnit,
116 => CommandType::SCMD_MoveUntilInsidePlayableArea,
117 => CommandType::SCMD_BeingTowed,
118 => CommandType::SCMD_AttachingTrailer,
119 => CommandType::SCMD_DetachingTrailer_UNUSED,
120 => CommandType::SCMD_RestoreWreck_UNUSED,
121 => CommandType::SCMD_AnimatedSpawn,
122 => CommandType::SCMD_COUNT,
123 => CommandType::FCMD_FormationSquadGroupMove,
124 => CommandType::FCMD_FormationSquadGroupAttack,
125 => CommandType::FCMD_FormationSquadGroupAttackMove,
126 => CommandType::FCMD_FormationSquadGroupStop,
127 => CommandType::FCMD_COUNT,
128 => CommandType::PCMD_PlaceAndConstructEntities,
129 => CommandType::PCMD_ResourceDonation,
130 => CommandType::PCMD_CheatResources,
131 => CommandType::PCMD_CheatRevealAll,
132 => CommandType::PCMD_Ability,
133 => CommandType::PCMD_CheatBuildTime,
134 => CommandType::PCMD_CheatIgnoreCosts,
135 => CommandType::PCMD_Upgrade,
136 => CommandType::PCMD_InstantUpgrade,
137 => CommandType::PCMD_TentativeUpgrade,
138 => CommandType::PCMD_TentativeUpgradePurchaseAll,
139 => CommandType::PCMD_UpgradeRemove,
140 => CommandType::PCMD_TentativeUpgradeRemoveAll,
141 => CommandType::PCMD_SlotItemRemove_DEPRECATED,
142 => CommandType::PCMD_CancelProduction,
143 => CommandType::PCMD_DetonateCharges,
144 => CommandType::PCMD_AIPlayer,
145 => CommandType::PCMD_AIPlayer_EncounterNotification,
146 => CommandType::PCMD_Surrender,
147 => CommandType::PCMD_WaitObjectDone,
148 => CommandType::PCMD_BroadcastMessage,
149 => CommandType::PCMD_AIPlayer_EncounterSniped,
150 => CommandType::PCMD_AIPlayer_ResourceBonus,
151 => CommandType::PCMD_FormationSquadGroupCreateBegin,
152 => CommandType::PCMD_FormationSquadGroupAddSquad,
153 => CommandType::PCMD_FormationSquadGroupCreateEnd,
154 => CommandType::PCMD_EndTurn,
155 => CommandType::PCMD_StopAbility,
156 => CommandType::PCMD_COUNT,
157 => CommandType::DCMD_CameraTrack,
158 => CommandType::DCMD_COUNT,
_ => CommandType::Unknown(val),
}
}
}
impl From<CommandType> for u8 {
fn from(val: CommandType) -> u8 {
match val {
CommandType::CMD_DefaultAction => 0,
CommandType::CMD_Stop => 1,
CommandType::CMD_Destroy => 2,
CommandType::CMD_BuildSquad => 3,
CommandType::CMD_InstantBuildSquad => 4,
CommandType::CMD_CancelProduction => 5,
CommandType::CMD_BuildStructure => 6,
CommandType::CMD_Move => 7,
CommandType::CMD_FlightMove => 8,
CommandType::CMD_Face => 9,
CommandType::CMD_Attack => 10,
CommandType::CMD_AttackMove => 11,
CommandType::CMD_RallyPoint => 12,
CommandType::CMD_Capture => 13,
CommandType::CMD_Ability => 14,
CommandType::CMD_Evacuate => 15,
CommandType::CMD_Upgrade => 16,
CommandType::CMD_InstantUpgrade => 17,
CommandType::CMD_Load => 18,
CommandType::CMD_Unload => 19,
CommandType::CMD_UnloadSquads => 20,
CommandType::CMD_AttackStop => 21,
CommandType::CMD_AttackForced => 22,
CommandType::CMD_SetHoldHeading => 23,
CommandType::CMD_StopMove => 24,
CommandType::CMD_Paradrop => 25,
CommandType::CMD_DefuseMine => 26,
CommandType::CMD_Casualty => 27,
CommandType::CMD_Death => 28,
CommandType::CMD_InstantDeath => 29,
CommandType::CMD_Projectile => 30,
CommandType::CMD_PlaceCharge => 31,
CommandType::CMD_BuildEntity => 32,
CommandType::CMD_RescueCasualty => 33,
CommandType::CMD_AttackFromHold => 34,
CommandType::CMD_Vault => 35,
CommandType::CMD_KnockedBack => 36,
CommandType::CMD_Teardown => 37,
CommandType::CMD_Melee => 38,
CommandType::CMD_ResolveOverlap => 39,
CommandType::CMD_Stun => 40,
CommandType::CMD_InstantSetupTeamWeapon => 41,
CommandType::CMD_SetupTeamWeapon => 42,
CommandType::CMD_MoveToCover => 43,
CommandType::CMD_Taunted => 44,
CommandType::CMD_Trade => 45,
CommandType::CMD_Brace => 46,
CommandType::CMD_Gather => 47,
CommandType::CMD_PickUpSimItem => 48,
CommandType::CMD_ChangeCombatSlot => 49,
CommandType::CMD_RetreatMove => 50,
CommandType::CMD_StopAbility => 51,
CommandType::CMD_InstantLoad => 52,
CommandType::CMD_RestoreWreck => 53,
CommandType::CMD_Disable => 54,
CommandType::CMD_Enable => 55,
CommandType::CMD_CancelConstruction => 56,
CommandType::CMD_HoldPositionOn => 57,
CommandType::CMD_HoldPositionOff => 58,
CommandType::CMD_CancelRestoreWreck => 59,
CommandType::CMD_Repair => 60,
CommandType::CMD_COUNT => 61,
CommandType::SCMD_Move => 62,
CommandType::SCMD_Stop => 63,
CommandType::SCMD_Destroy => 64,
CommandType::SCMD_BuildStructure => 65,
CommandType::SCMD_Capture => 66,
CommandType::SCMD_Attack => 67,
CommandType::SCMD_ReinforceUnit => 68,
CommandType::SCMD_Upgrade => 69,
CommandType::SCMD_CancelProduction => 70,
CommandType::SCMD_AttackMove => 71,
CommandType::SCMD_Ability => 72,
CommandType::SCMD_Load => 73,
CommandType::SCMD_InstantLoad => 74,
CommandType::SCMD_UnloadSquads => 75,
CommandType::SCMD_Unload => 76,
CommandType::SCMD_PickupTrailer_UNUSED => 77,
CommandType::SCMD_Retreat => 78,
CommandType::SCMD_CaptureTeamWeapon => 79,
CommandType::SCMD_SetMoveType => 80,
CommandType::SCMD_InstantReinforceUnit => 81,
CommandType::SCMD_InstantUpgrade => 82,
CommandType::SCMD_PlaceCharge => 83,
CommandType::SCMD_DefuseCharge => 84,
CommandType::SCMD_DropTrailer_UNUSED => 85,
CommandType::SCMD_PickUpSimItem => 86,
CommandType::SCMD_DefuseMine => 87,
CommandType::SCMD_DoPlan => 88,
CommandType::SCMD_Patrol => 89,
CommandType::SCMD_Surprise => 90,
CommandType::SCMD_InstantSetupTeamWeapon => 91,
CommandType::SCMD_SetupTeamWeapon => 92,
CommandType::SCMD_AbandonTeamWeapon => 93,
CommandType::SCMD_StationaryAttack => 94,
CommandType::SCMD_RevertFieldSupport => 95,
CommandType::SCMD_Face => 96,
CommandType::SCMD_BuildSquad => 97,
CommandType::SCMD_RallyPoint => 98,
CommandType::SCMD_RescueCasualty => 99,
CommandType::SCMD_Recrew => 100,
CommandType::SCMD_Merge => 101,
CommandType::SCMD_WeaponPreference => 102,
CommandType::SCMD_CombatStance => 103,
CommandType::SCMD_MoveToCover => 104,
CommandType::SCMD_Gather => 105,
CommandType::SCMD_AttackWithinLeashArea => 106,
CommandType::SCMD_JoinFormationSquadGroup => 107,
CommandType::SCMD_Trade => 108,
CommandType::SCMD_HoldPosition => 109,
CommandType::SCMD_Evacuate => 110,
CommandType::SCMD_Vault => 111,
CommandType::SCMD_CancelQueuedCommand => 112,
CommandType::SCMD_RespondToBeingBreached => 113,
CommandType::SCMD_StopAbility => 114,
CommandType::SCMD_InstantParadropReinforceUnit => 115,
CommandType::SCMD_MoveUntilInsidePlayableArea => 116,
CommandType::SCMD_BeingTowed => 117,
CommandType::SCMD_AttachingTrailer => 118,
CommandType::SCMD_DetachingTrailer_UNUSED => 119,
CommandType::SCMD_RestoreWreck_UNUSED => 120,
CommandType::SCMD_AnimatedSpawn => 121,
CommandType::SCMD_COUNT => 122,
CommandType::FCMD_FormationSquadGroupMove => 123,
CommandType::FCMD_FormationSquadGroupAttack => 124,
CommandType::FCMD_FormationSquadGroupAttackMove => 125,
CommandType::FCMD_FormationSquadGroupStop => 126,
CommandType::FCMD_COUNT => 127,
CommandType::PCMD_PlaceAndConstructEntities => 128,
CommandType::PCMD_ResourceDonation => 129,
CommandType::PCMD_CheatResources => 130,
CommandType::PCMD_CheatRevealAll => 131,
CommandType::PCMD_Ability => 132,
CommandType::PCMD_CheatBuildTime => 133,
CommandType::PCMD_CheatIgnoreCosts => 134,
CommandType::PCMD_Upgrade => 135,
CommandType::PCMD_InstantUpgrade => 136,
CommandType::PCMD_TentativeUpgrade => 137,
CommandType::PCMD_TentativeUpgradePurchaseAll => 138,
CommandType::PCMD_UpgradeRemove => 139,
CommandType::PCMD_TentativeUpgradeRemoveAll => 140,
CommandType::PCMD_SlotItemRemove_DEPRECATED => 141,
CommandType::PCMD_CancelProduction => 142,
CommandType::PCMD_DetonateCharges => 143,
CommandType::PCMD_AIPlayer => 144,
CommandType::PCMD_AIPlayer_EncounterNotification => 145,
CommandType::PCMD_Surrender => 146,
CommandType::PCMD_WaitObjectDone => 147,
CommandType::PCMD_BroadcastMessage => 148,
CommandType::PCMD_AIPlayer_EncounterSniped => 149,
CommandType::PCMD_AIPlayer_ResourceBonus => 150,
CommandType::PCMD_FormationSquadGroupCreateBegin => 151,
CommandType::PCMD_FormationSquadGroupAddSquad => 152,
CommandType::PCMD_FormationSquadGroupCreateEnd => 153,
CommandType::PCMD_EndTurn => 154,
CommandType::PCMD_StopAbility => 155,
CommandType::PCMD_COUNT => 156,
CommandType::DCMD_CameraTrack => 157,
CommandType::DCMD_COUNT => 158,
CommandType::Unknown(val) => val,
}
}
}