mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/walls.rs')
| -rw-r--r-- | src/block/walls.rs | 85 |
1 files changed, 37 insertions, 48 deletions
diff --git a/src/block/walls.rs b/src/block/walls.rs index 900232f..2ec2e26 100644 --- a/src/block/walls.rs +++ b/src/block/walls.rs @@ -4,47 +4,42 @@ use crate::block::*; use crate::data::dynamic::DynType; use crate::data::renderer::load; -make_simple!(WallBlock, |_, name, _, _, _, s| { - match name { - "thruster" => { - let mut base = load("thruster", s); - base.overlay(&load("thruster-top", s)); - base - } - _ => load(name, s), - } +make_simple!(WallBlock, |_, _, _, _, _, s| { + let mut base = load!("thruster", s); + base.overlay(&load!("thruster-top", s)); + base }); make_register! { - "copper-wall" => WallBlock::new(1, true, cost!(Copper: 6)); - "copper-wall-large" => WallBlock::new(2, true, cost!(Copper: 6 * 4)); - "titanium-wall" => WallBlock::new(1, true, cost!(Titanium: 6)); - "titanium-wall-large" => WallBlock::new(2, true, cost!(Titanium: 6 * 4)); - "plastanium-wall" => WallBlock::new(1, true, cost!(Metaglass: 2, Plastanium: 5)); - "plastanium-wall-large" => WallBlock::new(2, true, cost!(Metaglass: 2 * 4, Plastanium: 5 * 4)); - "thorium-wall" => WallBlock::new(1, true, cost!(Thorium: 6)); - "thorium-wall-large" => WallBlock::new(2, true, cost!(Thorium: 6 * 4)); - "phase-wall" => WallBlock::new(1, true, cost!(PhaseFabric: 6)); - "phase-wall-large" => WallBlock::new(2, true, cost!(PhaseFabric: 6 * 4)); - "surge-wall" => WallBlock::new(1, true, cost!(SurgeAlloy: 6)); - "surge-wall-large" => WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4)); + "copper-wall" -> WallBlock::new(1, true, cost!(Copper: 6)); + "copper-wall-large" -> WallBlock::new(2, true, cost!(Copper: 6 * 4)); + "titanium-wall" -> WallBlock::new(1, true, cost!(Titanium: 6)); + "titanium-wall-large" -> WallBlock::new(2, true, cost!(Titanium: 6 * 4)); + "plastanium-wall" -> WallBlock::new(1, true, cost!(Metaglass: 2, Plastanium: 5)); + "plastanium-wall-large" -> WallBlock::new(2, true, cost!(Metaglass: 2 * 4, Plastanium: 5 * 4)); + "thorium-wall" -> WallBlock::new(1, true, cost!(Thorium: 6)); + "thorium-wall-large" -> WallBlock::new(2, true, cost!(Thorium: 6 * 4)); + "phase-wall" -> WallBlock::new(1, true, cost!(PhaseFabric: 6)); + "phase-wall-large" -> WallBlock::new(2, true, cost!(PhaseFabric: 6 * 4)); + "surge-wall" -> WallBlock::new(1, true, cost!(SurgeAlloy: 6)); + "surge-wall-large" -> WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4)); "door" => DoorBlock::new(1, true, cost!(Titanium: 6, Silicon: 4)); "door-large" => DoorBlock::new(2, true, cost!(Titanium: 6 * 4, Silicon: 4 * 4)); - "tungsten-wall" => WallBlock::new(1, true, cost!(Tungsten: 6)); - "tungsten-wall-large" => WallBlock::new(2, true, cost!(Tungsten: 6 * 4)); - "blast-door" => DoorBlock::new(2, true, cost!(Tungsten: 24, Silicon: 24)); - "reinforced-surge-wall" => WallBlock::new(1, true, cost!(SurgeAlloy: 6, Tungsten: 2)); - "reinforced-surge-wall-large" => WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4, Tungsten: 2 * 4)); - "carbide-wall" => WallBlock::new(1, true, cost!(Thorium: 6, Carbide: 6)); - "carbide-wall-large" => WallBlock::new(2, true, cost!(Thorium: 6 * 4, Carbide: 6 * 4)); - "shielded-wall" => WallBlock::new(2, true, cost!(PhaseFabric: 20, SurgeAlloy: 12, Beryllium: 12)); - "beryllium-wall" => WallBlock::new(1, true, cost!(Beryllium: 6)); - "beryllium-wall-large" => WallBlock::new(2, true, cost!(Beryllium: 6 * 4)); + "tungsten-wall" -> WallBlock::new(1, true, cost!(Tungsten: 6)); + "tungsten-wall-large" -> WallBlock::new(2, true, cost!(Tungsten: 6 * 4)); + "blast-door" -> DoorBlock::new(2, true, cost!(Tungsten: 24, Silicon: 24)); + "reinforced-surge-wall" -> WallBlock::new(1, true, cost!(SurgeAlloy: 6, Tungsten: 2)); + "reinforced-surge-wall-large" -> WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4, Tungsten: 2 * 4)); + "carbide-wall" -> WallBlock::new(1, true, cost!(Thorium: 6, Carbide: 6)); + "carbide-wall-large" -> WallBlock::new(2, true, cost!(Thorium: 6 * 4, Carbide: 6 * 4)); + "shielded-wall" -> WallBlock::new(2, true, cost!(PhaseFabric: 20, SurgeAlloy: 12, Beryllium: 12)); + "beryllium-wall" -> WallBlock::new(1, true, cost!(Beryllium: 6)); + "beryllium-wall-large" -> WallBlock::new(2, true, cost!(Beryllium: 6 * 4)); // sandbox only - "scrap-wall" => WallBlock::new(1, true, cost!(Scrap: 6)); - "scrap-wall-large" => WallBlock::new(2, true, cost!(Scrap: 24)); - "scrap-wall-huge" => WallBlock::new(3, true, cost!(Scrap: 54)); - "scrap-wall-gigantic" => WallBlock::new(4, true, cost!(Scrap: 96)); + "scrap-wall" -> WallBlock::new(1, true, cost!(Scrap: 6)); + "scrap-wall-large" -> WallBlock::new(2, true, cost!(Scrap: 24)); + "scrap-wall-huge" -> WallBlock::new(3, true, cost!(Scrap: 54)); + "scrap-wall-gigantic" -> WallBlock::new(4, true, cost!(Scrap: 96)); "thruster" => WallBlock::new(4, false, cost!(Scrap: 96)); } @@ -80,21 +75,15 @@ impl BlockLogic for DoorBlock { s: Scale, ) -> ImageHolder { if let Some(state) = state { - return if *Self::get_state(state) { - // TODO check - load( - match name { - "door" => "door-open", - "blast-door" => "blast-door-open", - _ => "door-large-open", - }, - s, - ) - } else { - load(name, s) + if *Self::get_state(state) { + return load!(s -> match name { + "door" => "door-open", + "blast-door" => "blast-door-open", + _ => "door-large-open", + }); }; } - load(name, s) + load!(from name which is ["door" | "blast-door" | "door-large"], s) } fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { |