mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/liquid.rs')
-rw-r--r--src/block/liquid.rs31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/block/liquid.rs b/src/block/liquid.rs
index d74fc9d..5141025 100644
--- a/src/block/liquid.rs
+++ b/src/block/liquid.rs
@@ -11,22 +11,45 @@ use crate::fluid;
use crate::utils::ImageUtils;
make_simple!(LiquidBlock);
+make_simple!(
+ ConduitBlock,
+ |_, _, name, _, ctx: Option<&RenderingContext>| {
+ let ctx = ctx.unwrap();
+ let mask = mask(ctx, name);
+ let (index, rot, flip) = mask2rotations(mask, ctx.rotation);
+ let tile = rotations2tile(
+ (index, rot, flip),
+ "liquid",
+ "conduits",
+ &format!("{name}-top"),
+ );
+ let mut bottom = load("liquid", &format!("conduits/conduit-bottom-{index}"))
+ .unwrap()
+ .to_owned();
+ flrot(flip, rot, &mut bottom);
+ bottom.tint(image::Rgb([74, 75, 83]));
+ bottom.overlay(tile.borrow(), 0, 0);
+ // TODO caps. stopped trying bcz too complex
+ Some(ImageHolder::from(bottom))
+ },
+ true
+);
make_register! {
"reinforced-pump" => LiquidBlock::new(2, true, cost!(Beryllium: 40, Tungsten: 30, Silicon: 20));
"mechanical-pump" => LiquidBlock::new(1, true, cost!(Copper: 15, Metaglass: 10));
"rotary-pump" => LiquidBlock::new(2, true, cost!(Copper: 70, Metaglass: 50, Titanium: 35, Silicon: 20));
"impulse-pump" => LiquidBlock::new(3, true, cost!(Copper: 80, Metaglass: 90, Titanium: 40, Thorium: 35, Silicon: 30));
- "conduit" => LiquidBlock::new(1, false, cost!(Metaglass: 1));
- "pulse-conduit" => LiquidBlock::new(1, false, cost!(Metaglass: 1, Titanium: 2));
- "plated-conduit" => LiquidBlock::new(1, false, cost!(Metaglass: 1, Thorium: 2, Plastanium: 1));
+ "conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1));
+ "pulse-conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1, Titanium: 2));
+ "plated-conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1, Thorium: 2, Plastanium: 1));
"liquid-router" => LiquidBlock::new(1, true, cost!(Metaglass: 2, Graphite: 4));
"liquid-container" => LiquidBlock::new(2, true, cost!(Metaglass: 15, Titanium: 10));
"liquid-tank" => LiquidBlock::new(3, true, cost!(Metaglass: 40, Titanium: 30));
"liquid-junction" => LiquidBlock::new(1, true, cost!(Metaglass: 8, Graphite: 4));
"bridge-conduit" => BridgeBlock::new(1, true, cost!(Metaglass: 8, Graphite: 4), 4, true);
"phase-conduit" => BridgeBlock::new(1, true, cost!(Metaglass: 20, Titanium: 10, Silicon: 7, PhaseFabric: 5), 12, true);
- "reinforced-conduit" => LiquidBlock::new(1, false, cost!(Beryllium: 2));
+ "reinforced-conduit" => ConduitBlock::new(1, false, cost!(Beryllium: 2));
"reinforced-liquid-junction" => LiquidBlock::new(1, true, cost!(Graphite: 4, Beryllium: 8));
"reinforced-bridge-conduit" => BridgeBlock::new(1, true, cost!(Graphite: 8, Beryllium: 20), 4, true);
"reinforced-liquid-router" => LiquidBlock::new(1, true, cost!(Graphite: 8, Beryllium: 4));