mindustry logic execution, map- and schematic- parsing and rendering
add v8 blocks
19 files changed, 28 insertions, 13 deletions
diff --git a/mindus/Cargo.toml b/mindus/Cargo.toml index f3ac070..bccb4ce 100644 --- a/mindus/Cargo.toml +++ b/mindus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindus" -version = "5.0.29" +version = "5.0.30" edition = "2021" description = "A library for working with mindustry data formats (eg schematics and maps) (fork of plandustry)" authors = [ diff --git a/mindus/assets/blocks/campaign/advanced-launch-pad.png b/mindus/assets/blocks/campaign/advanced-launch-pad.png Binary files differnew file mode 100644 index 0000000..c72d91e --- /dev/null +++ b/mindus/assets/blocks/campaign/advanced-launch-pad.png diff --git a/mindus/assets/blocks/campaign/landing-pad.png b/mindus/assets/blocks/campaign/landing-pad.png Binary files differnew file mode 100644 index 0000000..1978d09 --- /dev/null +++ b/mindus/assets/blocks/campaign/landing-pad.png diff --git a/mindus/assets/blocks/campaign/launchpod.png b/mindus/assets/blocks/campaign/launchpod.png Binary files differdeleted file mode 100644 index c1a58a4..0000000 --- a/mindus/assets/blocks/campaign/launchpod.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/large-cliff-crusher-top.png b/mindus/assets/blocks/drills/large-cliff-crusher-top.png Binary files differnew file mode 100644 index 0000000..ac0a2a3 --- /dev/null +++ b/mindus/assets/blocks/drills/large-cliff-crusher-top.png diff --git a/mindus/assets/blocks/drills/large-cliff-crusher.png b/mindus/assets/blocks/drills/large-cliff-crusher.png Binary files differnew file mode 100644 index 0000000..c475da0 --- /dev/null +++ b/mindus/assets/blocks/drills/large-cliff-crusher.png diff --git a/mindus/assets/blocks/logic/world-message.png b/mindus/assets/blocks/logic/world-message.png Binary files differindex a6f0d4d..6993c34 100644 --- a/mindus/assets/blocks/logic/world-message.png +++ b/mindus/assets/blocks/logic/world-message.png diff --git a/mindus/assets/blocks/logic/world-switch-on.png b/mindus/assets/blocks/logic/world-switch-on.png Binary files differnew file mode 100644 index 0000000..47d19d9 --- /dev/null +++ b/mindus/assets/blocks/logic/world-switch-on.png diff --git a/mindus/assets/blocks/logic/world-switch.png b/mindus/assets/blocks/logic/world-switch.png Binary files differnew file mode 100644 index 0000000..89e9407 --- /dev/null +++ b/mindus/assets/blocks/logic/world-switch.png diff --git a/mindus/assets/blocks/production/small-heat-redirector-top1.png b/mindus/assets/blocks/production/small-heat-redirector-top1.png Binary files differnew file mode 100644 index 0000000..51da879 --- /dev/null +++ b/mindus/assets/blocks/production/small-heat-redirector-top1.png diff --git a/mindus/assets/blocks/production/small-heat-redirector-top2.png b/mindus/assets/blocks/production/small-heat-redirector-top2.png Binary files differnew file mode 100644 index 0000000..775fac4 --- /dev/null +++ b/mindus/assets/blocks/production/small-heat-redirector-top2.png diff --git a/mindus/assets/blocks/production/small-heat-redirector.png b/mindus/assets/blocks/production/small-heat-redirector.png Binary files differnew file mode 100644 index 0000000..9b98756 --- /dev/null +++ b/mindus/assets/blocks/production/small-heat-redirector.png diff --git a/mindus/src/block/content.rs b/mindus/src/block/content.rs index d07eb05..2af8662 100644 --- a/mindus/src/block/content.rs +++ b/mindus/src/block/content.rs @@ -416,5 +416,14 @@ content_enum! { "world-processor", "world-cell", "world-message", + + + + // shouldn't really exist + "large-cliff-crusher", + "small-heat-redirector", + "advanced-launch-pad", + "landing-pad", + "world-switch", } } diff --git a/mindus/src/block/drills.rs b/mindus/src/block/drills.rs index b042ceb..50a3d6a 100644 --- a/mindus/src/block/drills.rs +++ b/mindus/src/block/drills.rs @@ -14,9 +14,10 @@ make_simple!( }, |_, buff: &mut DataRead| read_drill(buff) ); -make_simple!(WallDrillBlock, |_, _, _, _, rot: Rotation, scl| { - let mut base = load!("cliff-crusher", scl); - let mut top = load!("cliff-crusher-top", scl); +make_simple!(WallDrillBlock, |_, name, _, _, rot: Rotation, scl| { + let mut base = load!(from name which is ["cliff-crusher" | "large-cliff-crusher"], scl); + let mut top = + load!(concat "top" => name which is ["cliff-crusher" | "large-cliff-crusher"], scl); unsafe { top.rotate(rot.rotated(false).count()) }; unsafe { base.overlay(&top) }; base diff --git a/mindus/src/block/logic.rs b/mindus/src/block/logic.rs index 060381c..2f961b8 100644 --- a/mindus/src/block/logic.rs +++ b/mindus/src/block/logic.rs @@ -283,16 +283,16 @@ impl BlockLogic for SwitchLogic { fn draw( &self, - _: &str, + name: &str, state: Option<&State>, _: Option<&RenderingContext>, _: Rotation, s: Scale, ) -> ImageHolder<4> { - let mut base = load!("switch", s); + let mut base = load!(from name which is ["switch" | "world-switch"], s); if let Some(state) = state { if *Self::get_state(state) { - let on = load!("switch-on", s); + let on = load!(concat "on" => name which is ["switch" | "world-switch"], s); unsafe { base.overlay(&on) }; return base; } diff --git a/mindus/src/block/mod.rs b/mindus/src/block/mod.rs index 9a5fc19..e099192 100644 --- a/mindus/src/block/mod.rs +++ b/mindus/src/block/mod.rs @@ -837,6 +837,7 @@ make_register! { "slag-heater" => HeatCrafter::new(3, false, cost!(Tungsten: 50, Oxide: 20, Beryllium: 20)); "phase-heater" => HeatCrafter::new(2, false, cost!(Oxide: 30, Carbide: 30, Beryllium: 30)); "heat-redirector" => HeatConduit::new(3, false, cost!(Tungsten: 10, Graphite: 10)); + "small-heat-redirector" => HeatConduit::new(2, false, cost!(SurgeAlloy: 8, Graphite: 8)); "heat-router" => HeatConduit::new(3, false, cost!(Tungsten: 15, Graphite: 10)); "slag-incinerator" -> BasicBlock::new(1, true, cost!(Tungsten: 15)); "carbide-crucible" -> ProductionBlock::new(3, true, cost!(Tungsten: 110, Thorium: 150, Oxide: 60)); @@ -937,6 +938,8 @@ make_register! { "basic-assembler-module" => AssemblerModule::new(5, true, cost!(Carbide: 300, Thorium: 500, Oxide: 200, PhaseFabric: 400)); // the dummy block "unit-repair-tower" -> BasicBlock::new(2, true, cost!(Graphite: 90, Silicon: 90, Tungsten: 80)); "launch-pad" -> BasicBlock::new(3, true, cost!(Copper: 350, Lead: 200, Titanium: 150, Silicon: 140)); + "landing-pad" -> BasicBlock::new(3, true, cost!(Copper: 200, Graphite: 100, Titanium: 100)); + "advanced-launch-pad" -> BasicBlock::new(4, true, cost!(Copper: 350, Silicon: 250, Lead: 300, Titanium: 200)); "interplanetary-accelerator" -> BasicBlock::new(7, true, cost!(Copper: 16000, Silicon: 11000, Thorium: 13000, Titanium: 12000, SurgeAlloy: 6000, PhaseFabric: 5000)); "mechanical-drill" -> DrillBlock::new(2, true, cost!(Copper: 12)); "pneumatic-drill" -> DrillBlock::new(2, true, cost!(Copper: 18, Graphite: 10)); @@ -946,6 +949,7 @@ make_register! { "oil-extractor" -> BasicBlock::new(3, true, cost!(Copper: 150, Lead: 115, Graphite: 175, Thorium: 115, Silicon: 75)); "vent-condenser" -> ProductionBlock::new(3, true, cost!(Graphite: 20, Beryllium: 60)); "cliff-crusher" => WallDrillBlock::new(2, false, cost!(Beryllium: 100, Graphite: 40)); + "large-cliff-crusher" => WallDrillBlock::new(3, false, cost!(Silicon: 80, SurgeAlloy: 15, Beryllium: 100, Tungsten: 50)); "plasma-bore" => DrillBlock::new(2, false, cost!(Beryllium: 40)); "large-plasma-bore" => DrillBlock::new(3, false, cost!(Silicon: 100, Oxide: 25, Beryllium: 100, Tungsten: 70)); "impact-drill" -> DrillBlock::new(4, true, cost!(Silicon: 70, Beryllium: 90, Graphite: 60)); @@ -1029,6 +1033,7 @@ make_register! { "world-processor" -> BasicBlock::new(1, true, &[]); "world-message" -> MessageLogic::new(1, true, &[]); "world-cell" -> MemoryBlock::new(1, true, &[]); + "world-switch" => SwitchLogic::new(1, true, &[]); "liquid-source" => FluidBlock::new(1, true, &[]); "liquid-void" -> BasicBlock::new(1, true, &[]); "shield-projector" -> ShieldBlock::new(3, true, &[]); diff --git a/mindus/src/block/production.rs b/mindus/src/block/production.rs index b20f121..b14efd5 100644 --- a/mindus/src/block/production.rs +++ b/mindus/src/block/production.rs @@ -63,13 +63,14 @@ make_simple!( } ); make_simple!(HeatConduit, |_, n, _, _, r: Rotation, s| { - let mut base = load!(from n which is ["heat-router" | "heat-redirector"], s); + let mut base = + load!(from n which is ["heat-router" | "heat-redirector" | "small-heat-redirector"], s); let mut top = match r { Rotation::Up | Rotation::Right => { - load!(concat "top1" => n which is ["heat-router" | "heat-redirector"], s) + load!(concat "top1" => n which is ["heat-router" | "heat-redirector" | "small-heat-redirector"], s) } Rotation::Down | Rotation::Left => { - load!(concat "top2" => n which is ["heat-router" | "heat-redirector"], s) + load!(concat "top2" => n which is ["heat-router" | "heat-redirector" | "small-heat-redirector"], s) } }; unsafe { top.rotate(r.rotated(false).count()) }; diff --git a/mindus/src/exe/draw.rs b/mindus/src/exe/draw.rs index 7981b3c..70b03b1 100644 --- a/mindus/src/exe/draw.rs +++ b/mindus/src/exe/draw.rs @@ -24,11 +24,11 @@ pub fn main(args: Args) { } { Ok(s) => { println!("{curr} {}", s.tags.get("name").unwrap()); - // let i = s.render(); + let i = mindus::Renderable::render(&s); if let Ok(v) = std::env::var("SAVE") && v == "1" { - // i.save("x.png"); + i.save("x.png"); continue; } } diff --git a/mindus/src/lib.rs b/mindus/src/lib.rs index 45786f4..670b8bc 100644 --- a/mindus/src/lib.rs +++ b/mindus/src/lib.rs @@ -9,7 +9,6 @@ coroutine_trait, derive_const, coroutines, - slice_take, let_chains )] #![allow(clippy::redundant_closure_call, incomplete_features)] |