mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/units.rs')
-rw-r--r--src/block/units.rs62
1 files changed, 35 insertions, 27 deletions
diff --git a/src/block/units.rs b/src/block/units.rs
index 9fc561d..83b39af 100644
--- a/src/block/units.rs
+++ b/src/block/units.rs
@@ -39,14 +39,16 @@ make_simple!(
|_, name, _, _, rot: Rotation, s| {
let mut base =
load!(from name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s);
- base.overlay(unsafe {
+ unsafe {
+ base.overlay(
match rot {
Rotation::Up | Rotation::Right => load!(concat "side1" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s),
Rotation::Down | Rotation::Left => load!(concat "side2" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s)
- }
+ }
.rotate(rot.rotated(false).count())
- });
- base.overlay(&load!(concat "top" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s));
+ );
+ base.overlay(&load!(concat "top" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s))
+ };
base
},
|_, reg, map, buff| read_assembler(reg, map, buff)
@@ -76,13 +78,15 @@ make_simple!(
AssemblerModule,
|_, _, _, _, rot: Rotation, scl| {
let mut base = load!("basic-assembler-module", scl);
- base.overlay(unsafe {
- load!(scl -> match rot {
- Rotation::Up | Rotation::Right => "basic-assembler-module-side1",
- _ => "basic-assembler-module-side2",
- })
- .rotate(rot.rotated(false).count())
- });
+ unsafe {
+ base.overlay(
+ load!(scl -> match rot {
+ Rotation::Up | Rotation::Right => "basic-assembler-module-side1",
+ _ => "basic-assembler-module-side2",
+ })
+ .rotate(rot.rotated(false).count()),
+ )
+ };
base
},
|_, reg, map, buff| read_payload_block(reg, map, buff)
@@ -186,7 +190,7 @@ impl BlockLogic for ConstructorBlock {
"prime-refabricator" => "factory-out-5-dark",
"tetrative-reconstructor" => "factory-out-9",
});
- base.overlay(unsafe { out.rotate(times) });
+ unsafe { base.overlay(out.rotate(times)) };
let mut r#in = load!(s -> match name {
"additive-reconstructor" => "factory-in-3",
@@ -197,7 +201,7 @@ impl BlockLogic for ConstructorBlock {
"prime-refabricator" => "factory-in-5-dark",
"tetrative-reconstructor" => "factory-in-9",
});
- base.overlay(unsafe { r#in.rotate(times) });
+ unsafe { base.overlay(r#in.rotate(times)) };
// TODO: the context cross is too small
// for i in 0..4u8 {
@@ -219,7 +223,9 @@ impl BlockLogic for ConstructorBlock {
// }
// }
- base.overlay(&load!(concat "top" => name which is ["additive-reconstructor" | "multiplicative-reconstructor" | "exponential-reconstructor" | "tetrative-reconstructor" | "tank-refabricator" | "mech-refabricator" | "ship-refabricator" | "prime-refabricator"], s));
+ unsafe {
+ base.overlay(&load!(concat "top" => name which is ["additive-reconstructor" | "multiplicative-reconstructor" | "exponential-reconstructor" | "tetrative-reconstructor" | "tank-refabricator" | "mech-refabricator" | "ship-refabricator" | "prime-refabricator"], s))
+ };
base
}
@@ -327,19 +333,21 @@ impl BlockLogic for UnitFactory {
s: Scale,
) -> ImageHolder<4> {
let mut base = load!(from name which is ["ground-factory" | "air-factory" | "naval-factory" | "tank-fabricator" | "ship-fabricator" | "mech-fabricator"], s);
- base.overlay(unsafe {
- load!(s -> match name {
- "ground-factory" | "air-factory" | "naval-factory" => "factory-out-3",
- _ => "factory-out-3-dark",
- })
- .rotate(rot.rotated(false).count())
- })
- .overlay(&load!(s -> match name {
- "ground-factory" | "air-factory" | "naval-factory" => "factory-top-3",
- "tank-fabricator" => "tank-fabricator-top",
- "ship-fabricator" => "ship-fabricator-top",
- "mech-fabricator" => "mech-fabricator-top",
- }));
+ unsafe {
+ base.overlay(
+ load!(s -> match name {
+ "ground-factory" | "air-factory" | "naval-factory" => "factory-out-3",
+ _ => "factory-out-3-dark",
+ })
+ .rotate(rot.rotated(false).count()),
+ )
+ .overlay(&load!(s -> match name {
+ "ground-factory" | "air-factory" | "naval-factory" => "factory-top-3",
+ "tank-fabricator" => "tank-fabricator-top",
+ "ship-fabricator" => "ship-fabricator-top",
+ "mech-fabricator" => "mech-fabricator-top",
+ }))
+ };
base
}