mindustry logic execution, map- and schematic- parsing and rendering
tile-logic-display proper edition
bendn 10 months ago
parent 4a63e65 · commit f58b3a6
-rw-r--r--mindus/assets/blocks/logic/tile-logic-display.pngbin149 -> 96 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.pngbin0 -> 130 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.pngbin0 -> 104 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.pngbin0 -> 144 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.pngbin0 -> 133 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.pngbin0 -> 108 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.pngbin0 -> 80 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.pngbin0 -> 110 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.pngbin0 -> 112 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.pngbin0 -> 124 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.pngbin0 -> 149 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.pngbin0 -> 108 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.pngbin0 -> 119 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.pngbin0 -> 114 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.pngbin0 -> 125 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.pngbin0 -> 117 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.pngbin0 -> 136 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.pngbin0 -> 140 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.pngbin0 -> 115 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.pngbin0 -> 102 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.pngbin0 -> 131 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.pngbin0 -> 133 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.pngbin0 -> 134 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.pngbin0 -> 133 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.pngbin0 -> 133 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.pngbin0 -> 127 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.pngbin0 -> 116 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.pngbin0 -> 124 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.pngbin0 -> 127 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.pngbin0 -> 118 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.pngbin0 -> 132 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.pngbin0 -> 136 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.pngbin0 -> 109 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.pngbin0 -> 135 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.pngbin0 -> 150 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.pngbin0 -> 146 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.pngbin0 -> 132 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.pngbin0 -> 134 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.pngbin0 -> 117 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.pngbin0 -> 128 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.pngbin0 -> 126 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.pngbin0 -> 125 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.pngbin0 -> 140 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.pngbin0 -> 121 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.pngbin0 -> 117 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.pngbin0 -> 106 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.pngbin0 -> 116 bytes
-rw-r--r--mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.pngbin0 -> 127 bytes
-rw-r--r--mindus/src/block/logic.rs26
-rw-r--r--mindus/src/block/mod.rs9
-rw-r--r--mindus/src/block/ratios.rs1
-rw-r--r--mindus/src/block/x.rs18
-rw-r--r--mindus/src/data/autotile.rs5
-rw-r--r--mindus/src/data/renderer.rs7
-rw-r--r--mindus/src/data/schematic.rs22
-rw-r--r--mindus/src/lib.rs1
56 files changed, 78 insertions, 11 deletions
diff --git a/mindus/assets/blocks/logic/tile-logic-display.png b/mindus/assets/blocks/logic/tile-logic-display.png
index b6b04ef..977f5d8 100644
--- a/mindus/assets/blocks/logic/tile-logic-display.png
+++ b/mindus/assets/blocks/logic/tile-logic-display.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png
new file mode 100644
index 0000000..9be4484
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png
new file mode 100644
index 0000000..f76df94
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png
new file mode 100644
index 0000000..760d3b4
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png
new file mode 100644
index 0000000..f8f0009
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png
new file mode 100644
index 0000000..bc3ef87
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png
new file mode 100644
index 0000000..3917ed0
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png
new file mode 100644
index 0000000..70d1aee
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png
new file mode 100644
index 0000000..24cbf45
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png
new file mode 100644
index 0000000..030c04d
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png
new file mode 100644
index 0000000..2e10d7a
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png
new file mode 100644
index 0000000..32e6748
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png
new file mode 100644
index 0000000..e319f4d
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png
new file mode 100644
index 0000000..a9aee0b
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png
new file mode 100644
index 0000000..d9e5150
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png
new file mode 100644
index 0000000..8e2c760
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png
new file mode 100644
index 0000000..4195407
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png
new file mode 100644
index 0000000..a588cd0
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png
new file mode 100644
index 0000000..f516680
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png
new file mode 100644
index 0000000..2b59262
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png
new file mode 100644
index 0000000..35af5d4
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png
new file mode 100644
index 0000000..3941118
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png
new file mode 100644
index 0000000..3517bec
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png
new file mode 100644
index 0000000..cd705e7
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png
new file mode 100644
index 0000000..028cf04
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png
new file mode 100644
index 0000000..f6a711b
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png
new file mode 100644
index 0000000..68aebb4
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png
new file mode 100644
index 0000000..883257c
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png
new file mode 100644
index 0000000..f3fb63a
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png
new file mode 100644
index 0000000..537303f
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png
new file mode 100644
index 0000000..932e934
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png
new file mode 100644
index 0000000..50237ac
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png
new file mode 100644
index 0000000..7ff182b
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png
new file mode 100644
index 0000000..e4d823c
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png
new file mode 100644
index 0000000..b037e0d
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png
new file mode 100644
index 0000000..cdc2ed9
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png
new file mode 100644
index 0000000..5bf94a0
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png
new file mode 100644
index 0000000..9086970
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png
new file mode 100644
index 0000000..653c075
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png
new file mode 100644
index 0000000..03b8c5a
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png
new file mode 100644
index 0000000..fcad3bb
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png
new file mode 100644
index 0000000..c25438f
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png
new file mode 100644
index 0000000..aa1d559
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png
new file mode 100644
index 0000000..bb8dfda
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png
new file mode 100644
index 0000000..a389f86
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png
new file mode 100644
index 0000000..5fa02ec
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png
new file mode 100644
index 0000000..4d4a5dc
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png
new file mode 100644
index 0000000..0ac5dd1
--- /dev/null
+++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png
Binary files differ
diff --git a/mindus/src/block/logic.rs b/mindus/src/block/logic.rs
index 2f961b8..6e4a110 100644
--- a/mindus/src/block/logic.rs
+++ b/mindus/src/block/logic.rs
@@ -586,3 +586,29 @@ pub enum CreateError {
#[error("link {name} already points to ({x}, {y})")]
DuplicatePos { name: String, x: i16, y: i16 },
}
+#[rustfmt::skip]
+static BITMASKS: [[Image<&[u8], 4>;3]; 256] = include!("x.rs");
+make_simple!(TileableDisplay, |_,
+ _,
+ _,
+ ctx: Option<&RenderingContext>,
+ _,
+ s| {
+ let c = ctx.unwrap();
+ let [f, d, h, b] = c.corners;
+ let [c, a, g, e] = c.cross;
+ let swizzled = [a, b, c, d, e, f, g, h];
+ use std::simd::prelude::*;
+ let mut b = load!("tile-logic-display", s);
+ unsafe {
+ b.overlay(&ImageHolder::from(
+ BITMASKS[u8x8::from_array(
+ swizzled.map(|x| x.is_some_and(|x| x.0.name() == "tile-logic-display") as u8),
+ )
+ .simd_eq(u8x8::splat(1))
+ .to_bitmask() as usize][s as usize]
+ .copy(),
+ ))
+ };
+ b
+});
diff --git a/mindus/src/block/mod.rs b/mindus/src/block/mod.rs
index 0ba6e76..cafeb0d 100644
--- a/mindus/src/block/mod.rs
+++ b/mindus/src/block/mod.rs
@@ -108,6 +108,7 @@ disp! {
HeatConduit,
ContinousTurret,
TractorBeamTurret,
+ TileableDisplay,
AssemblerModule,
RepairTurret,
FluidBlock,
@@ -347,7 +348,11 @@ impl Block {
use BlockLogicEnum::*;
matches!(
self.logic,
- ConveyorBlock(..) | DuctBlock(..) | StackConveyor(..) | ConduitBlock(..)
+ ConveyorBlock(..)
+ | DuctBlock(..)
+ | StackConveyor(..)
+ | ConduitBlock(..)
+ | TileableDisplay(..)
)
}
@@ -964,7 +969,7 @@ make_register! {
"memory-bank" -> MemoryBlock::new(2, true, cost!(Copper: 30, Graphite: 80, Silicon: 80, PhaseFabric: 30));
"logic-display" -> BasicBlock::new(3, true, cost!(Lead: 100, Metaglass: 50, Silicon: 50));
"large-logic-display" -> BasicBlock::new(6, true, cost!(Lead: 200, Metaglass: 100, Silicon: 150, PhaseFabric: 75));
- "tile-logic-display" -> BasicBlock::new(1, false, &[]);
+ "tile-logic-display" => TileableDisplay::new(1, false, cost!(Lead: 8, Silicon: 8, Metaglass: 8, PhaseFabric: 3));
"canvas" => CanvasBlock::new(2, true, cost!(Silicon: 30, Beryllium: 10), 12);
"illuminator" -> LampBlock::new(1, true, cost!(Lead: 8, Graphite: 12, Silicon: 8));
"power-node" -> ConnectorBlock::new(1, true, cost!(Copper: 1, Lead: 3), 10);
diff --git a/mindus/src/block/ratios.rs b/mindus/src/block/ratios.rs
index ef59be8..ad38377 100644
--- a/mindus/src/block/ratios.rs
+++ b/mindus/src/block/ratios.rs
@@ -262,3 +262,4 @@ rats!(UnitCargoLoader { "unit-cargo-loader": [Nitrogen: 10] => [] });
rats!(AssemblerBlock { none });
rats!(RepairTurret { none });
rats!(AssemblerModule { none });
+rats!(TileableDisplay { none });
diff --git a/mindus/src/block/x.rs b/mindus/src/block/x.rs
new file mode 100644
index 0000000..9906470
--- /dev/null
+++ b/mindus/src/block/x.rs
@@ -0,0 +1,18 @@
+[
+ load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"),
+ load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"),
+ load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"),
+ load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"),
+ load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"),
+ load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-29"), load!("tile-logic-display-10"), load!("tile-logic-display-29"), load!("tile-logic-display-23"), load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-31"), load!("tile-logic-display-11"), load!("tile-logic-display-31"), load!("tile-logic-display-32"),
+ load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"),
+ load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-9"), load!("tile-logic-display-46"), load!("tile-logic-display-9"), load!("tile-logic-display-22"), load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-14"), load!("tile-logic-display-44"), load!("tile-logic-display-14"), load!("tile-logic-display-6"),
+ load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"),
+ load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"),
+ load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"),
+ load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"),
+ load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"),
+ load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-29"), load!("tile-logic-display-35"), load!("tile-logic-display-29"), load!("tile-logic-display-33"), load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-31"), load!("tile-logic-display-34"), load!("tile-logic-display-31"), load!("tile-logic-display-7"),
+ load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"),
+ load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-9"), load!("tile-logic-display-45"), load!("tile-logic-display-9"), load!("tile-logic-display-19"), load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-14"), load!("tile-logic-display-18"), load!("tile-logic-display-14"), load!("tile-logic-display-13"),
+] \ No newline at end of file
diff --git a/mindus/src/data/autotile.rs b/mindus/src/data/autotile.rs
index 48362e6..818c1b4 100644
--- a/mindus/src/data/autotile.rs
+++ b/mindus/src/data/autotile.rs
@@ -47,10 +47,12 @@ pub(crate) use define;
pub(crate) use dir;
pub type Cross = [Option<(&'static Block, Rotation)>; 4];
+pub type Corners = [Option<(&'static Block, Rotation)>; 4];
/// holds the 4 bordering blocks
#[derive(Copy, Clone)]
pub struct RenderingContext {
pub cross: Cross,
+ pub corners: Corners,
pub position: PositionContext,
}
@@ -244,7 +246,7 @@ fn test_cross() {
width: s.width,
height: s.height,
};
- c.push(s.cross(&pctx));
+ c.push(s.cross(&pctx).0);
}
let n = s.tags.get("name").map_or("<unknown>", |x| &x);
let cc: Vec<Cross> = vec![
@@ -356,6 +358,7 @@ fn test_mask() {
width: 10,
height: 10,
},
+ corners: Default::default(),
cross: $cross,
},
dir!($rot),
diff --git a/mindus/src/data/renderer.rs b/mindus/src/data/renderer.rs
index 2b2c5ba..ee5e66b 100644
--- a/mindus/src/data/renderer.rs
+++ b/mindus/src/data/renderer.rs
@@ -141,8 +141,10 @@ impl Renderable for Schematic {
width: self.width,
height: self.height,
};
+ let (cross, corners) = self.cross(&pctx);
RenderingContext {
- cross: self.cross(&pctx),
+ cross,
+ corners,
position: pctx,
}
});
@@ -236,6 +238,7 @@ impl Renderable for Map {
};
RenderingContext {
cross: self.cross(j, &pctx),
+ corners: Default::default(),
position: pctx,
}
});
@@ -289,6 +292,7 @@ fn all_blocks() {
let _ = t.image(
None,
Some(&RenderingContext {
+ corners: [None; 4],
cross: [None; 4],
position: PositionContext {
position: GridPos(0, 0),
@@ -441,6 +445,7 @@ pub fn draw_map_single(
height: h as usize,
};
RenderingContext {
+ corners: [None; 4],
cross: [None; 4], // woe
position: pctx,
}
diff --git a/mindus/src/data/schematic.rs b/mindus/src/data/schematic.rs
index 85363df..db587f6 100644
--- a/mindus/src/data/schematic.rs
+++ b/mindus/src/data/schematic.rs
@@ -142,7 +142,7 @@ impl Schematic {
}
/// the area around a point
- pub(crate) fn cross(&self, c: &PositionContext) -> Cross {
+ pub(crate) fn cross(&self, c: &PositionContext) -> (Cross, Corners) {
let get = |x, y| {
let b = self.get(x?, y?).ok()??;
Some((b.get_block()?, b.get_rotation()?))
@@ -159,12 +159,20 @@ impl Schematic {
}
};
}
- [
- get(s!(c.position.0), s!(c.position.1 + 1)),
- get(s!(c.position.0 + 1), s!(c.position.1)),
- get(s!(c.position.0), s!(c.position.1 => 1)),
- get(s!(c.position.0 => 1), s!(c.position.1)),
- ]
+ (
+ [
+ get(s!(c.position.0), s!(c.position.1 + 1)),
+ get(s!(c.position.0 + 1), s!(c.position.1)),
+ get(s!(c.position.0), s!(c.position.1 => 1)),
+ get(s!(c.position.0 => 1), s!(c.position.1)),
+ ],
+ [
+ get(s!(c.position.0 => 1), s!(c.position.1 => 1)),
+ get(s!(c.position.0 => 1), s!(c.position.1 + 1)),
+ get(s!(c.position.0 + 1), s!(c.position.1 => 1)),
+ get(s!(c.position.0 + 1), s!(c.position.1 + 1)),
+ ],
+ )
}
/// Ratios of this schematic.
diff --git a/mindus/src/lib.rs b/mindus/src/lib.rs
index 670b8bc..caf657b 100644
--- a/mindus/src/lib.rs
+++ b/mindus/src/lib.rs
@@ -7,6 +7,7 @@
generic_arg_infer,
const_trait_impl,
coroutine_trait,
+ portable_simd,
derive_const,
coroutines,
let_chains