mindustry logic execution, map- and schematic- parsing and rendering
bendn 2023-07-21
parent cc00f75 · commit e3c2577
-rw-r--r--Cargo.toml2
-rw-r--r--assets/blocks/distribution/cross.pngbin170 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-0.pngbin0 -> 300 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-1.pngbin0 -> 376 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-2.pngbin0 -> 312 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-3.pngbin0 -> 312 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-4.pngbin0 -> 334 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-top-0.pngbin751 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-top-1.pngbin449 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-top-2.pngbin468 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-top-3.pngbin546 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/armored-duct-top-4.pngbin426 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-0.pngbin0 -> 291 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-1.pngbin0 -> 345 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-2.pngbin0 -> 307 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-3.pngbin0 -> 306 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-4.pngbin0 -> 313 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-base.pngbin0 -> 251 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bottom-0.pngbin119 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bottom-1.pngbin149 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bottom-2.pngbin121 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bottom-3.pngbin121 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bottom-4.pngbin121 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bottom.pngbin156 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bridge-arrow.pngbin139 -> 135 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bridge-bridge.pngbin142 -> 131 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bridge-dir.pngbin174 -> 142 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-bridge.pngbin322 -> 203 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-router-top.pngbin165 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-router.pngbin322 -> 203 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-top-0.pngbin2049 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-top-1.pngbin364 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-top-2.pngbin442 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-top-3.pngbin524 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-top-4.pngbin413 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-unloader-arrow.pngbin168 -> 155 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-unloader-center.pngbin114 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-unloader-top.pngbin158 -> 141 bytes
-rw-r--r--assets/blocks/distribution/ducts/duct-unloader.pngbin331 -> 227 bytes
-rw-r--r--assets/blocks/distribution/ducts/overflow-duct-top.pngbin164 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/overflow-duct.pngbin392 -> 135 bytes
-rw-r--r--assets/blocks/distribution/ducts/surge-router-top.pngbin165 -> 156 bytes
-rw-r--r--assets/blocks/distribution/ducts/surge-router.pngbin443 -> 260 bytes
-rw-r--r--assets/blocks/distribution/ducts/top.pngbin0 -> 156 bytes
-rw-r--r--assets/blocks/distribution/ducts/underflow-duct-top.pngbin211 -> 0 bytes
-rw-r--r--assets/blocks/distribution/ducts/underflow-duct.pngbin392 -> 166 bytes
-rw-r--r--assets/blocks/distribution/unit-cargo-unload-point-top.png (renamed from assets/blocks/units/unit-cargo-unload-point-top.png)bin193 -> 193 bytes
-rw-r--r--assets/blocks/distribution/unit-cargo-unload-point.png (renamed from assets/blocks/units/unit-cargo-unload-point.png)bin798 -> 798 bytes
-rw-r--r--src/block/distribution.rs90
49 files changed, 73 insertions, 19 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 4ccb351..d138c00 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "mindus"
-version = "1.2.0"
+version = "1.3.0"
edition = "2021"
description = "A library for working with mindustry data formats (eg schematics) (fork of plandustry)"
authors = [
diff --git a/assets/blocks/distribution/cross.png b/assets/blocks/distribution/cross.png
deleted file mode 100644
index 0d9dea8..0000000
--- a/assets/blocks/distribution/cross.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-0.png b/assets/blocks/distribution/ducts/armored-duct-0.png
new file mode 100644
index 0000000..3a661b6
--- /dev/null
+++ b/assets/blocks/distribution/ducts/armored-duct-0.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-1.png b/assets/blocks/distribution/ducts/armored-duct-1.png
new file mode 100644
index 0000000..d4b81d8
--- /dev/null
+++ b/assets/blocks/distribution/ducts/armored-duct-1.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-2.png b/assets/blocks/distribution/ducts/armored-duct-2.png
new file mode 100644
index 0000000..fd0c731
--- /dev/null
+++ b/assets/blocks/distribution/ducts/armored-duct-2.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-3.png b/assets/blocks/distribution/ducts/armored-duct-3.png
new file mode 100644
index 0000000..9371f1c
--- /dev/null
+++ b/assets/blocks/distribution/ducts/armored-duct-3.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-4.png b/assets/blocks/distribution/ducts/armored-duct-4.png
new file mode 100644
index 0000000..e1e2cab
--- /dev/null
+++ b/assets/blocks/distribution/ducts/armored-duct-4.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-top-0.png b/assets/blocks/distribution/ducts/armored-duct-top-0.png
deleted file mode 100644
index 2de29f2..0000000
--- a/assets/blocks/distribution/ducts/armored-duct-top-0.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-top-1.png b/assets/blocks/distribution/ducts/armored-duct-top-1.png
deleted file mode 100644
index 24700e6..0000000
--- a/assets/blocks/distribution/ducts/armored-duct-top-1.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-top-2.png b/assets/blocks/distribution/ducts/armored-duct-top-2.png
deleted file mode 100644
index a28ab6d..0000000
--- a/assets/blocks/distribution/ducts/armored-duct-top-2.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-top-3.png b/assets/blocks/distribution/ducts/armored-duct-top-3.png
deleted file mode 100644
index 98b5979..0000000
--- a/assets/blocks/distribution/ducts/armored-duct-top-3.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/armored-duct-top-4.png b/assets/blocks/distribution/ducts/armored-duct-top-4.png
deleted file mode 100644
index 6d529f2..0000000
--- a/assets/blocks/distribution/ducts/armored-duct-top-4.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-0.png b/assets/blocks/distribution/ducts/duct-0.png
new file mode 100644
index 0000000..4112edc
--- /dev/null
+++ b/assets/blocks/distribution/ducts/duct-0.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-1.png b/assets/blocks/distribution/ducts/duct-1.png
new file mode 100644
index 0000000..6adcdeb
--- /dev/null
+++ b/assets/blocks/distribution/ducts/duct-1.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-2.png b/assets/blocks/distribution/ducts/duct-2.png
new file mode 100644
index 0000000..0192770
--- /dev/null
+++ b/assets/blocks/distribution/ducts/duct-2.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-3.png b/assets/blocks/distribution/ducts/duct-3.png
new file mode 100644
index 0000000..e0ce754
--- /dev/null
+++ b/assets/blocks/distribution/ducts/duct-3.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-4.png b/assets/blocks/distribution/ducts/duct-4.png
new file mode 100644
index 0000000..2bba535
--- /dev/null
+++ b/assets/blocks/distribution/ducts/duct-4.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-base.png b/assets/blocks/distribution/ducts/duct-base.png
new file mode 100644
index 0000000..6aa0df3
--- /dev/null
+++ b/assets/blocks/distribution/ducts/duct-base.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bottom-0.png b/assets/blocks/distribution/ducts/duct-bottom-0.png
deleted file mode 100644
index 329fc2f..0000000
--- a/assets/blocks/distribution/ducts/duct-bottom-0.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bottom-1.png b/assets/blocks/distribution/ducts/duct-bottom-1.png
deleted file mode 100644
index 6e793c7..0000000
--- a/assets/blocks/distribution/ducts/duct-bottom-1.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bottom-2.png b/assets/blocks/distribution/ducts/duct-bottom-2.png
deleted file mode 100644
index a2dd7b5..0000000
--- a/assets/blocks/distribution/ducts/duct-bottom-2.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bottom-3.png b/assets/blocks/distribution/ducts/duct-bottom-3.png
deleted file mode 100644
index a2dd7b5..0000000
--- a/assets/blocks/distribution/ducts/duct-bottom-3.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bottom-4.png b/assets/blocks/distribution/ducts/duct-bottom-4.png
deleted file mode 100644
index a2dd7b5..0000000
--- a/assets/blocks/distribution/ducts/duct-bottom-4.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bottom.png b/assets/blocks/distribution/ducts/duct-bottom.png
deleted file mode 100644
index 04cecf2..0000000
--- a/assets/blocks/distribution/ducts/duct-bottom.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bridge-arrow.png b/assets/blocks/distribution/ducts/duct-bridge-arrow.png
index f47060e..ce38b2e 100644
--- a/assets/blocks/distribution/ducts/duct-bridge-arrow.png
+++ b/assets/blocks/distribution/ducts/duct-bridge-arrow.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bridge-bridge.png b/assets/blocks/distribution/ducts/duct-bridge-bridge.png
index ff853ce..533f3c3 100644
--- a/assets/blocks/distribution/ducts/duct-bridge-bridge.png
+++ b/assets/blocks/distribution/ducts/duct-bridge-bridge.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bridge-dir.png b/assets/blocks/distribution/ducts/duct-bridge-dir.png
index 8349ac6..c889e17 100644
--- a/assets/blocks/distribution/ducts/duct-bridge-dir.png
+++ b/assets/blocks/distribution/ducts/duct-bridge-dir.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-bridge.png b/assets/blocks/distribution/ducts/duct-bridge.png
index 428785c..2448bc8 100644
--- a/assets/blocks/distribution/ducts/duct-bridge.png
+++ b/assets/blocks/distribution/ducts/duct-bridge.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-router-top.png b/assets/blocks/distribution/ducts/duct-router-top.png
deleted file mode 100644
index f93d863..0000000
--- a/assets/blocks/distribution/ducts/duct-router-top.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-router.png b/assets/blocks/distribution/ducts/duct-router.png
index 428785c..2448bc8 100644
--- a/assets/blocks/distribution/ducts/duct-router.png
+++ b/assets/blocks/distribution/ducts/duct-router.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-top-0.png b/assets/blocks/distribution/ducts/duct-top-0.png
deleted file mode 100644
index eae68cb..0000000
--- a/assets/blocks/distribution/ducts/duct-top-0.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-top-1.png b/assets/blocks/distribution/ducts/duct-top-1.png
deleted file mode 100644
index 2e1b8c0..0000000
--- a/assets/blocks/distribution/ducts/duct-top-1.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-top-2.png b/assets/blocks/distribution/ducts/duct-top-2.png
deleted file mode 100644
index 10fde0b..0000000
--- a/assets/blocks/distribution/ducts/duct-top-2.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-top-3.png b/assets/blocks/distribution/ducts/duct-top-3.png
deleted file mode 100644
index 33798f2..0000000
--- a/assets/blocks/distribution/ducts/duct-top-3.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-top-4.png b/assets/blocks/distribution/ducts/duct-top-4.png
deleted file mode 100644
index adad9a7..0000000
--- a/assets/blocks/distribution/ducts/duct-top-4.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-unloader-arrow.png b/assets/blocks/distribution/ducts/duct-unloader-arrow.png
index 1ece44e..4b1e81b 100644
--- a/assets/blocks/distribution/ducts/duct-unloader-arrow.png
+++ b/assets/blocks/distribution/ducts/duct-unloader-arrow.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-unloader-center.png b/assets/blocks/distribution/ducts/duct-unloader-center.png
deleted file mode 100644
index 19def6b..0000000
--- a/assets/blocks/distribution/ducts/duct-unloader-center.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-unloader-top.png b/assets/blocks/distribution/ducts/duct-unloader-top.png
index 5f2cff7..39aa94c 100644
--- a/assets/blocks/distribution/ducts/duct-unloader-top.png
+++ b/assets/blocks/distribution/ducts/duct-unloader-top.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/duct-unloader.png b/assets/blocks/distribution/ducts/duct-unloader.png
index 5791261..908b66b 100644
--- a/assets/blocks/distribution/ducts/duct-unloader.png
+++ b/assets/blocks/distribution/ducts/duct-unloader.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/overflow-duct-top.png b/assets/blocks/distribution/ducts/overflow-duct-top.png
deleted file mode 100644
index 7a6637d..0000000
--- a/assets/blocks/distribution/ducts/overflow-duct-top.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/overflow-duct.png b/assets/blocks/distribution/ducts/overflow-duct.png
index 0f647a8..1d0c98e 100644
--- a/assets/blocks/distribution/ducts/overflow-duct.png
+++ b/assets/blocks/distribution/ducts/overflow-duct.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/surge-router-top.png b/assets/blocks/distribution/ducts/surge-router-top.png
index f93d863..2769d6f 100644
--- a/assets/blocks/distribution/ducts/surge-router-top.png
+++ b/assets/blocks/distribution/ducts/surge-router-top.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/surge-router.png b/assets/blocks/distribution/ducts/surge-router.png
index 99a48d8..c1cf722 100644
--- a/assets/blocks/distribution/ducts/surge-router.png
+++ b/assets/blocks/distribution/ducts/surge-router.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/top.png b/assets/blocks/distribution/ducts/top.png
new file mode 100644
index 0000000..2769d6f
--- /dev/null
+++ b/assets/blocks/distribution/ducts/top.png
Binary files differ
diff --git a/assets/blocks/distribution/ducts/underflow-duct-top.png b/assets/blocks/distribution/ducts/underflow-duct-top.png
deleted file mode 100644
index b986bc3..0000000
--- a/assets/blocks/distribution/ducts/underflow-duct-top.png
+++ /dev/null
Binary files differ
diff --git a/assets/blocks/distribution/ducts/underflow-duct.png b/assets/blocks/distribution/ducts/underflow-duct.png
index 0f647a8..f36bc41 100644
--- a/assets/blocks/distribution/ducts/underflow-duct.png
+++ b/assets/blocks/distribution/ducts/underflow-duct.png
Binary files differ
diff --git a/assets/blocks/units/unit-cargo-unload-point-top.png b/assets/blocks/distribution/unit-cargo-unload-point-top.png
index 025178c..025178c 100644
--- a/assets/blocks/units/unit-cargo-unload-point-top.png
+++ b/assets/blocks/distribution/unit-cargo-unload-point-top.png
Binary files differ
diff --git a/assets/blocks/units/unit-cargo-unload-point.png b/assets/blocks/distribution/unit-cargo-unload-point.png
index 29d5c9a..29d5c9a 100644
--- a/assets/blocks/units/unit-cargo-unload-point.png
+++ b/assets/blocks/distribution/unit-cargo-unload-point.png
Binary files differ
diff --git a/src/block/distribution.rs b/src/block/distribution.rs
index 03b9295..c569328 100644
--- a/src/block/distribution.rs
+++ b/src/block/distribution.rs
@@ -9,13 +9,22 @@ use crate::item;
make_simple!(
ConveyorBlock,
|_, _, name, _, ctx: Option<&RenderingContext>| {
- let ctx = ctx.unwrap(); // we specified want_context to true
+ let ctx = ctx.unwrap(); // we set want_context to true
Some(tile(ctx, "distribution", "conveyors", name, ctx.rotation))
},
true
);
make_simple!(
+ DuctBlock,
+ |_, _, name, _, ctx: Option<&RenderingContext>| {
+ let ctx = ctx.unwrap();
+ Some(tile(ctx, "distribution", "ducts", name, ctx.rotation))
+ },
+ true
+);
+
+make_simple!(
JunctionBlock,
|_, _, _, _, _| None,
|_, _, _, _, _, buff: &mut crate::data::DataRead| {
@@ -34,6 +43,18 @@ make_simple!(
false
);
+make_simple!(
+ SimpleDuctBlock,
+ |_, _, name, _, ctx: Option<&RenderingContext>| {
+ let ctx = ctx.unwrap();
+ let mut base = load("distribution/ducts", "duct-base").unwrap().clone();
+ let mut top = load("distribution/ducts", name).unwrap().clone();
+ top.rotate(ctx.rotation.rotated(false).count());
+ base.overlay(&top, 0, 0);
+ Some(ImageHolder::from(base))
+ },
+ true
+);
make_simple!(ControlBlock);
make_register! {
@@ -51,11 +72,11 @@ make_register! {
"overflow-gate" => ControlBlock::new(1, true, cost!(Copper: 4, Lead: 2));
"underflow-gate" => ControlBlock::new(1, true, cost!(Copper: 4, Lead: 2));
"mass-driver" => BridgeBlock::new(3, true, cost!(Lead: 125, Titanium: 125, Thorium: 50, Silicon: 75), 55, false);
- "duct" => ControlBlock::new(1, false, cost!(Beryllium: 1));
- "armored-duct" => ControlBlock::new(1, false, cost!(Beryllium: 2, Tungsten: 1));
+ "duct" => DuctBlock::new(1, false, cost!(Beryllium: 1));
+ "armored-duct" => DuctBlock::new(1, false, cost!(Beryllium: 2, Tungsten: 1));
"duct-router" => ItemBlock::new(1, true, cost!(Beryllium: 10));
- "overflow-duct" => ControlBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8));
- "underflow-duct" => ControlBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8));
+ "overflow-duct" => SimpleDuctBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8));
+ "underflow-duct" => SimpleDuctBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8));
"duct-bridge" => BridgeBlock::new(1, true, cost!(Beryllium: 20), 3, true);
"duct-unloader" => ItemBlock::new(1, true, cost!(Graphite: 20, Silicon: 20, Tungsten: 10));
"surge-conveyor" => ControlBlock::new(1, false, cost!(SurgeAlloy: 1, Tungsten: 1));
@@ -131,31 +152,64 @@ impl BlockLogic for ItemBlock {
fn draw(
&self,
- category: &str,
+ _: &str,
name: &str,
state: Option<&State>,
- _: Option<&RenderingContext>,
+ ctx: Option<&RenderingContext>,
) -> Option<ImageHolder> {
- if !matches!(
+ let mut p = load(
+ match name {
+ "unloader" => "storage",
+ "duct-router" | "duct-unloader" => "distribution/ducts",
+ _ => "distribution",
+ },
name,
- "unloader" | "item-source" | "sorter" | "inverted-sorter"
- ) {
- return None;
- }
- let mut p = load(category, name).unwrap().clone();
+ )
+ .unwrap()
+ .clone();
if let Some(state) = state {
if let Some(s) = Self::get_state(state) {
- let mut top = load(category, "center").unwrap().clone();
+ let mut top = load(
+ match name {
+ "unloader" => "storage",
+ _ => "distribution",
+ },
+ match name {
+ "unit-cargo-unload-point" => "unit-cargo-unload-point-top",
+ _ => "center",
+ },
+ )
+ .unwrap()
+ .clone();
p.overlay(top.tint(s.color()), 0, 0);
return Some(ImageHolder::from(p));
}
}
- if name == "unloader" {
+ if matches!(name, "unloader" | "unit-cargo-unload-point") {
return Some(ImageHolder::from(p));
}
- let mut null = load("distribution", "cross-full").unwrap().clone();
- null.overlay(&p, 0, 0);
- Some(ImageHolder::from(null))
+ if matches!(name, "duct-unloader" | "duct-router") {
+ let mut null = load("distribution/ducts", "top").unwrap().to_owned();
+ null.rotate(ctx.unwrap().rotation.rotated(false).count());
+ if name == "duct-unloader" {
+ let mut top = load("distribution/ducts", "duct-unloader-top")
+ .unwrap()
+ .to_owned();
+ // this rotate call could be omitted if rotation == Right to save a clone
+ top.rotate(ctx.unwrap().rotation.rotated(false).count());
+ null.overlay(&top, 0, 0);
+ }
+ p.overlay(&null, 0, 0);
+ Some(ImageHolder::from(p))
+ } else {
+ let mut null = load("distribution", "cross-full").unwrap().clone();
+ null.overlay(&p, 0, 0);
+ Some(ImageHolder::from(null))
+ }
+ }
+
+ fn want_context(&self) -> bool {
+ true
}
}