ashscript_types/
intents.rs1use hexx::Hex;
2
3use crate::{objects::{Attackable}, resource::Resource, unit::UnitBody};
4
5pub type Intents = Vec<Intent>;
8
9pub enum Intent {
10 UnitMove(UnitMove),
11 UnitAttack(UnitAttack),
12 TurretAttack(TurretAttack),
13 FactorySpawnUnit(FactorySpawnUnit),
14 UnitSpawnUnit(UnitSpawnUnit),
15 ResourceTransfer(ResourceTransfer),
16}
17
18#[derive(enum_map::Enum, Hash, Eq, PartialEq, Clone, Copy, Debug)]
19pub enum IntentName {
20 UnitMove,
21 UnitAttack,
22 TurretAttack,
23 FactorySpawnUnit,
24 ResourceTransfer,
25}
26
27
28pub struct UnitMove {
30 pub from: Hex,
31 pub to: Hex,
32}
33
34pub struct UnitAttack {
36 pub attacker_hex: Hex,
37 pub target_hex: Hex,
38 pub target_kind: Attackable,
39}
40
41pub struct TurretAttack {
43 pub turret_hex: Hex,
44 pub target_hex: Hex,
45 pub target_kind: Attackable,
46}
47
48pub struct FactorySpawnUnit {
50 pub factory_hex: Hex,
51 pub body: UnitBody,
52 pub name: String,
53 pub out: Option<Vec<Hex>>,
56}
57
58pub struct UnitSpawnUnit {
60 pub unit_hex: Hex,
61 pub body: UnitBody,
62 pub name: String,
63 pub out: Option<Vec<Hex>>,
66}
67
68pub struct ResourceTransfer {
70 pub resource: Resource,
71 pub amount: u32,
72 pub from_hex: Hex,
73 pub to_hex: Hex,
74}