mindustry logic execution, map- and schematic- parsing and rendering
dont allocate in draw_stack
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png (renamed from assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge.png) | bin | 567 -> 567 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png | bin | 0 -> 1120 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png | bin | 0 -> 1127 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png | bin | 0 -> 1120 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png (renamed from assets/blocks/distribution/stack-conveyors/surge-conveyor-edge.png) | bin | 545 -> 545 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png | bin | 0 -> 1100 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png | bin | 0 -> 1105 bytes | |||
| -rw-r--r-- | assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png | bin | 0 -> 1110 bytes | |||
| -rw-r--r-- | src/block/distribution.rs | 29 |
9 files changed, 15 insertions, 14 deletions
diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png Binary files differindex 7057c6c..7057c6c 100644 --- a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge.png +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png Binary files differnew file mode 100644 index 0000000..cc9890d --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png Binary files differnew file mode 100644 index 0000000..0abdfc5 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png Binary files differnew file mode 100644 index 0000000..34924be --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png Binary files differindex 5ef6959..5ef6959 100644 --- a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge.png +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png Binary files differnew file mode 100644 index 0000000..ccc72e5 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png Binary files differnew file mode 100644 index 0000000..05d6385 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png Binary files differnew file mode 100644 index 0000000..8ae4559 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png diff --git a/src/block/distribution.rs b/src/block/distribution.rs index e620d8a..090eecd 100644 --- a/src/block/distribution.rs +++ b/src/block/distribution.rs @@ -57,15 +57,21 @@ fn draw_stack( ) -> ImageHolder<4> { let ctx = ctx.unwrap(); let mask = mask(ctx, rot, name); - let edge = load!(concat "edge" => name which is ["surge-conveyor" | "plastanium-conveyor"], s); - let edgify = |skip, to: &mut Image<&mut [u8], 4>| { + #[rustfmt::skip] + let edge = |n: u8| { + match n { + 0 => load!(concat "edge-0" => name which is ["surge-conveyor" | "plastanium-conveyor"], s), + 1 => load!(concat "edge-1" => name which is ["surge-conveyor" | "plastanium-conveyor"], s), + 2 => load!(concat "edge-2" => name which is ["surge-conveyor" | "plastanium-conveyor"], s), + _ => load!(concat "edge-3" => name which is ["surge-conveyor" | "plastanium-conveyor"], s) + } + }; + let edgify = |skip, to: &mut ImageHolder<4>| { for i in 0..4 { if i == skip { continue; } - let mut edge = edge.clone(); - unsafe { edge.rotate(i) }; - to.overlay(&edge.borrow()); + to.overlay(&edge(i)); } }; let gimme = |n: u8| match n { @@ -78,21 +84,18 @@ fn draw_stack( if rot.mirrored(true, true).mask() == mask && empty && name != "surge-conveyor" { // end let mut base = gimme(2); - edgify( - rot.mirrored(true, true).rotated(false).count(), - &mut base.borrow_mut(), - ); + edgify(rot.mirrored(true, true).rotated(false).count(), &mut base); base } else if mask == B0000 && empty { // single let mut base = gimme(0); unsafe { base.rotate(rot.rotated(false).count()) }; - edgify(5, &mut base.borrow_mut()); + edgify(5, &mut base); base } else if mask == B0000 { // input let mut base = gimme(1); - edgify(rot.rotated(false).count(), &mut base.borrow_mut()); + edgify(rot.rotated(false).count(), &mut base); base } else { // directional @@ -101,9 +104,7 @@ fn draw_stack( unsafe { base.rotate(going) }; for [r, i] in [[3, 0b1000], [0, 0b0100], [1, 0b0010], [2, 0b0001]] { if (mask.into_u8() & i) == 0 && (going != r || empty) { - let mut edge = edge.clone(); - unsafe { edge.rotate(r) }; - base.overlay(&edge); + base.overlay(&edge(r)); } } base |