mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/drills.rs')
-rw-r--r--src/block/drills.rs31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/block/drills.rs b/src/block/drills.rs
index c2e0e3e..98b49fd 100644
--- a/src/block/drills.rs
+++ b/src/block/drills.rs
@@ -1,21 +1,40 @@
//! extraction of raw resources (mine part)
+use super::production::ProductionBlock;
use crate::block::simple::{cost, make_simple};
use crate::block::*;
-use super::production::ProductionBlock;
make_simple!(
DrillBlock,
- |me: &DrillBlock, _, name, _, _, _| {
- if matches!(name, "cliff-crusher" | "large-plasma-bore" | "plasma-bore") {
- const SFX: &[&str; 3] = &["", "-top", "-rotator"];
- return Some(ImageHolder::Own(read_with("drills", name, SFX, me.size)));
+ |_, _, name, _, _, rot: Rotation| {
+ if matches!(name, "large-plasma-bore" | "plasma-bore") {
+ let mut base = load("drills", name).unwrap().clone();
+ let top = load("drills", &format!("{name}-top")).unwrap();
+ if rot == Rotation::Right {
+ base.overlay(&top, 0, 0);
+ } else {
+ let mut top = top.clone();
+ top.rotate(rot.rotated(false).count());
+ base.overlay(&top, 0, 0);
+ }
+ return Some(ImageHolder::from(base));
}
Some(ImageHolder::Borrow(load("drills", name).unwrap()))
},
|_, _, _, buff: &mut DataRead| { read_drill(buff) }
);
make_simple!(ExtractorBlock);
-make_simple!(WallCrafter);
+make_simple!(WallCrafter, |_, _, _, _, _, rot: Rotation| {
+ let mut base = load("drills", "cliff-crusher").unwrap().clone();
+ let top = load("drills", "cliff-crusher-top").unwrap();
+ if rot == Rotation::Right {
+ base.overlay(&top, 0, 0);
+ } else {
+ let mut top = top.clone();
+ top.rotate(rot.rotated(false).count());
+ base.overlay(&top, 0, 0);
+ }
+ Some(ImageHolder::from(base))
+});
make_register! {
"mechanical-drill" => DrillBlock::new(2, true, cost!(Copper: 12));