mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/logic/mod.rs')
-rw-r--r--src/logic/mod.rs76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/logic/mod.rs b/src/logic/mod.rs
new file mode 100644
index 0000000..b5e7cc6
--- /dev/null
+++ b/src/logic/mod.rs
@@ -0,0 +1,76 @@
+use crate::content::numeric_enum;
+
+numeric_enum! {
+ pub enum LogicField for u8 | TryFromU8Error
+ {
+ TotalItems, FirstItem, TotalLiquids, TotalPower, ItemCapacity, LiquidCapacity, PowerCapacity, PowerNetCapacity, PowerNetStored, PowerNetIn,
+ PowerNetOut, Ammo, AmmoCapacity, Health, MaxHealth, Heat, Efficiency, Progress, Timescale, Rotation, PosX, PosY, ShootX, ShootY, Size, Dead, Range,
+ Shooting, Boosting, MineX, MineY, Mining, Speed, Team, Type, Flag, Controlled, Controller, Name, PayloadCount, PayloadType, Enabled, Shoot, ShootP,
+ Config, Color
+ }
+}
+
+impl LogicField {
+ #[must_use]
+ pub const fn is_readable(self) -> bool {
+ use LogicField::{
+ Ammo, AmmoCapacity, Boosting, Color, Controlled, Controller, Dead, Efficiency, Enabled,
+ FirstItem, Flag, Health, Heat, ItemCapacity, LiquidCapacity, MaxHealth, MineX, MineY,
+ Mining, Name, PayloadCount, PayloadType, PosX, PosY, PowerCapacity, PowerNetCapacity,
+ PowerNetIn, PowerNetOut, PowerNetStored, Progress, Range, Rotation, ShootX, ShootY,
+ Shooting, Size, Speed, Team, Timescale, TotalItems, TotalLiquids, TotalPower, Type,
+ };
+ matches!(
+ self,
+ TotalItems
+ | FirstItem
+ | TotalLiquids
+ | TotalPower
+ | ItemCapacity
+ | LiquidCapacity
+ | PowerCapacity
+ | PowerNetCapacity
+ | PowerNetStored
+ | PowerNetIn
+ | PowerNetOut
+ | Ammo
+ | AmmoCapacity
+ | Health
+ | MaxHealth
+ | Heat
+ | Efficiency
+ | Progress
+ | Timescale
+ | Rotation
+ | PosX
+ | PosY
+ | ShootX
+ | ShootY
+ | Size
+ | Dead
+ | Range
+ | Shooting
+ | Boosting
+ | MineX
+ | MineY
+ | Mining
+ | Speed
+ | Team
+ | Type
+ | Flag
+ | Controlled
+ | Controller
+ | Name
+ | PayloadCount
+ | PayloadType
+ | Enabled
+ | Color
+ )
+ }
+
+ #[must_use]
+ pub const fn is_writable(self) -> bool {
+ use LogicField::{Color, Config, Enabled, Shoot, ShootP};
+ matches!(self, Enabled | Shoot | ShootP | Config | Color)
+ }
+}