mindustry logic execution, map- and schematic- parsing and rendering
add v8 blocks
bendn 10 months ago
parent 059e958 · commit 7025429
-rw-r--r--mindus/Cargo.toml2
-rw-r--r--mindus/assets/blocks/campaign/advanced-launch-pad.pngbin0 -> 1183 bytes
-rw-r--r--mindus/assets/blocks/campaign/landing-pad.pngbin0 -> 1215 bytes
-rw-r--r--mindus/assets/blocks/campaign/launchpod.pngbin680 -> 0 bytes
-rw-r--r--mindus/assets/blocks/drills/large-cliff-crusher-top.pngbin0 -> 222 bytes
-rw-r--r--mindus/assets/blocks/drills/large-cliff-crusher.pngbin0 -> 925 bytes
-rw-r--r--mindus/assets/blocks/logic/world-message.pngbin191 -> 198 bytes
-rw-r--r--mindus/assets/blocks/logic/world-switch-on.pngbin0 -> 143 bytes
-rw-r--r--mindus/assets/blocks/logic/world-switch.pngbin0 -> 235 bytes
-rw-r--r--mindus/assets/blocks/production/small-heat-redirector-top1.pngbin0 -> 231 bytes
-rw-r--r--mindus/assets/blocks/production/small-heat-redirector-top2.pngbin0 -> 232 bytes
-rw-r--r--mindus/assets/blocks/production/small-heat-redirector.pngbin0 -> 522 bytes
-rw-r--r--mindus/src/block/content.rs9
-rw-r--r--mindus/src/block/drills.rs7
-rw-r--r--mindus/src/block/logic.rs6
-rw-r--r--mindus/src/block/mod.rs5
-rw-r--r--mindus/src/block/production.rs7
-rw-r--r--mindus/src/exe/draw.rs4
-rw-r--r--mindus/src/lib.rs1
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
new file mode 100644
index 0000000..c72d91e
--- /dev/null
+++ b/mindus/assets/blocks/campaign/advanced-launch-pad.png
Binary files differ
diff --git a/mindus/assets/blocks/campaign/landing-pad.png b/mindus/assets/blocks/campaign/landing-pad.png
new file mode 100644
index 0000000..1978d09
--- /dev/null
+++ b/mindus/assets/blocks/campaign/landing-pad.png
Binary files differ
diff --git a/mindus/assets/blocks/campaign/launchpod.png b/mindus/assets/blocks/campaign/launchpod.png
deleted file mode 100644
index c1a58a4..0000000
--- a/mindus/assets/blocks/campaign/launchpod.png
+++ /dev/null
Binary files differ
diff --git a/mindus/assets/blocks/drills/large-cliff-crusher-top.png b/mindus/assets/blocks/drills/large-cliff-crusher-top.png
new file mode 100644
index 0000000..ac0a2a3
--- /dev/null
+++ b/mindus/assets/blocks/drills/large-cliff-crusher-top.png
Binary files differ
diff --git a/mindus/assets/blocks/drills/large-cliff-crusher.png b/mindus/assets/blocks/drills/large-cliff-crusher.png
new file mode 100644
index 0000000..c475da0
--- /dev/null
+++ b/mindus/assets/blocks/drills/large-cliff-crusher.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/world-message.png b/mindus/assets/blocks/logic/world-message.png
index a6f0d4d..6993c34 100644
--- a/mindus/assets/blocks/logic/world-message.png
+++ b/mindus/assets/blocks/logic/world-message.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/world-switch-on.png b/mindus/assets/blocks/logic/world-switch-on.png
new file mode 100644
index 0000000..47d19d9
--- /dev/null
+++ b/mindus/assets/blocks/logic/world-switch-on.png
Binary files differ
diff --git a/mindus/assets/blocks/logic/world-switch.png b/mindus/assets/blocks/logic/world-switch.png
new file mode 100644
index 0000000..89e9407
--- /dev/null
+++ b/mindus/assets/blocks/logic/world-switch.png
Binary files differ
diff --git a/mindus/assets/blocks/production/small-heat-redirector-top1.png b/mindus/assets/blocks/production/small-heat-redirector-top1.png
new file mode 100644
index 0000000..51da879
--- /dev/null
+++ b/mindus/assets/blocks/production/small-heat-redirector-top1.png
Binary files differ
diff --git a/mindus/assets/blocks/production/small-heat-redirector-top2.png b/mindus/assets/blocks/production/small-heat-redirector-top2.png
new file mode 100644
index 0000000..775fac4
--- /dev/null
+++ b/mindus/assets/blocks/production/small-heat-redirector-top2.png
Binary files differ
diff --git a/mindus/assets/blocks/production/small-heat-redirector.png b/mindus/assets/blocks/production/small-heat-redirector.png
new file mode 100644
index 0000000..9b98756
--- /dev/null
+++ b/mindus/assets/blocks/production/small-heat-redirector.png
Binary files differ
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)]