mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/item/mod.rs')
-rw-r--r--src/item/mod.rs70
1 files changed, 44 insertions, 26 deletions
diff --git a/src/item/mod.rs b/src/item/mod.rs
index e7a6f06..4b4bac0 100644
--- a/src/item/mod.rs
+++ b/src/item/mod.rs
@@ -1,30 +1,48 @@
-use crate::content::content_enum;
+use image::Rgb;
pub mod storage;
-content_enum! {
- pub enum Type / Item for u16 | TryFromU16Error {
- "copper",
- "lead",
- "metaglass",
- "graphite",
- "sand",
- "coal",
- "titanium",
- "thorium",
- "scrap",
- "silicon",
- "plastanium",
- "phase-fabric",
- "surge-alloy",
- "spore-pod",
- "blast-compound",
- "pyratite",
- "beryllium",
- "tungsten",
- "oxide",
- "carbide",
- "fissile-matter",
- "dormant-cyst",
- }
+macro_rules! item_enum {
+ ($($val:literal: $col:literal),* $(,)?) =>
+ {
+ paste::paste! {
+ $crate::content::content_enum!(pub enum Type / Item for u16 | TryFromU16Error {
+ $($val),*,
+ });
+
+ impl Type {
+ pub fn color(&self) -> Rgb<u8> {
+ match &self {
+ $(Self::[<$val:camel>] => {
+ Rgb(color_hex::color_from_hex!($col))
+ },)*
+ }
+ }
+ }
+ }}
+}
+
+item_enum! {
+ "copper": "d99d73",
+ "lead": "8c7fa9",
+ "metaglass": "ebeef5",
+ "graphite": "b2c6d2",
+ "sand": "f7cba4",
+ "coal": "272727",
+ "titanium": "8da1e3",
+ "thorium": "f9a3c7",
+ "scrap": "777777",
+ "silicon": "53565c",
+ "plastanium": "cbd97f",
+ "phase-fabric": "f4ba6e",
+ "surge-alloy": "f3e979",
+ "spore-pod": "7457ce",
+ "blast-compound": "ff795e",
+ "pyratite": "ffaa5f",
+ "beryllium": "3a8f64",
+ "tungsten": "768a9a",
+ "oxide": "e4ffd6",
+ "carbide": "89769a",
+ "fissile-matter": "5e988d",
+ "dormant-cyst": "df824d",
}