ashscript_types/
objects.rs1use enum_dispatch::enum_dispatch;
2use hexx::Hex;
3use serde::Serialize;
4use uuid::Uuid;
5
6use crate::{storage::Storage, structures::{factory::Factory, turret::Turret}, unit::Unit};
7
8pub trait HasHex {
9 fn hex(&self) -> Hex;
10}
11
12pub trait HasHealth {
13 fn health(&self) -> u32;
14}
15
16#[derive(Clone, Copy)]
17pub enum Attackable {
18 Unit,
19 Turret,
20 Factory,
21}
22
23pub trait HasId {
24 fn id(&self) -> Uuid;
25}
26
27pub trait HasStorage {
28 fn storage(&self) -> &Storage;
29}
30
31#[derive(Clone, Copy)]
32pub enum WithStorage {
33 Unit,
34 Turret,
35 Factory,
36}
37
38#[derive(Serialize, Clone, Copy, Default, Eq, PartialEq, Hash)]
53pub enum GameObjectKind {
54 Unit,
55 Turret,
56 Factory,
57 #[default]
58 Unknown,
59}
60
61