mindustry logic execution, map- and schematic- parsing and rendering
tile-logic-display proper edition
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 Binary files differindex b6b04ef..977f5d8 100644 --- a/mindus/assets/blocks/logic/tile-logic-display.png +++ b/mindus/assets/blocks/logic/tile-logic-display.png 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 Binary files differnew file mode 100644 index 0000000..9be4484 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png 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 Binary files differnew file mode 100644 index 0000000..f76df94 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png 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 Binary files differnew file mode 100644 index 0000000..760d3b4 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png 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 Binary files differnew file mode 100644 index 0000000..f8f0009 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png 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 Binary files differnew file mode 100644 index 0000000..bc3ef87 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png 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 Binary files differnew file mode 100644 index 0000000..3917ed0 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png 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 Binary files differnew file mode 100644 index 0000000..70d1aee --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png 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 Binary files differnew file mode 100644 index 0000000..24cbf45 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png 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 Binary files differnew file mode 100644 index 0000000..030c04d --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png 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 Binary files differnew file mode 100644 index 0000000..2e10d7a --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png 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 Binary files differnew file mode 100644 index 0000000..32e6748 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png 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 Binary files differnew file mode 100644 index 0000000..e319f4d --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png 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 Binary files differnew file mode 100644 index 0000000..a9aee0b --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png 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 Binary files differnew file mode 100644 index 0000000..d9e5150 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png 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 Binary files differnew file mode 100644 index 0000000..8e2c760 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png 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 Binary files differnew file mode 100644 index 0000000..4195407 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png 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 Binary files differnew file mode 100644 index 0000000..a588cd0 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png 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 Binary files differnew file mode 100644 index 0000000..f516680 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png 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 Binary files differnew file mode 100644 index 0000000..2b59262 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png 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 Binary files differnew file mode 100644 index 0000000..35af5d4 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png 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 Binary files differnew file mode 100644 index 0000000..3941118 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png 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 Binary files differnew file mode 100644 index 0000000..3517bec --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png 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 Binary files differnew file mode 100644 index 0000000..cd705e7 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png 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 Binary files differnew file mode 100644 index 0000000..028cf04 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png 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 Binary files differnew file mode 100644 index 0000000..f6a711b --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png 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 Binary files differnew file mode 100644 index 0000000..68aebb4 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png 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 Binary files differnew file mode 100644 index 0000000..883257c --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png 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 Binary files differnew file mode 100644 index 0000000..f3fb63a --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png 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 Binary files differnew file mode 100644 index 0000000..537303f --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png 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 Binary files differnew file mode 100644 index 0000000..932e934 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png 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 Binary files differnew file mode 100644 index 0000000..50237ac --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png 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 Binary files differnew file mode 100644 index 0000000..7ff182b --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png 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 Binary files differnew file mode 100644 index 0000000..e4d823c --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png 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 Binary files differnew file mode 100644 index 0000000..b037e0d --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png 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 Binary files differnew file mode 100644 index 0000000..cdc2ed9 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png 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 Binary files differnew file mode 100644 index 0000000..5bf94a0 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png 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 Binary files differnew file mode 100644 index 0000000..9086970 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png 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 Binary files differnew file mode 100644 index 0000000..653c075 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png 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 Binary files differnew file mode 100644 index 0000000..03b8c5a --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png 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 Binary files differnew file mode 100644 index 0000000..fcad3bb --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png 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 Binary files differnew file mode 100644 index 0000000..c25438f --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png 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 Binary files differnew file mode 100644 index 0000000..aa1d559 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png 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 Binary files differnew file mode 100644 index 0000000..bb8dfda --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png 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 Binary files differnew file mode 100644 index 0000000..a389f86 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png 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 Binary files differnew file mode 100644 index 0000000..5fa02ec --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png 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 Binary files differnew file mode 100644 index 0000000..4d4a5dc --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png 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 Binary files differnew file mode 100644 index 0000000..0ac5dd1 --- /dev/null +++ b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png 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 |