mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/power.rs')
-rw-r--r--src/block/power.rs39
1 files changed, 29 insertions, 10 deletions
diff --git a/src/block/power.rs b/src/block/power.rs
index 566a710..529282e 100644
--- a/src/block/power.rs
+++ b/src/block/power.rs
@@ -10,16 +10,15 @@ make_simple!(NuclearGeneratorBlock => |_, _, _, buff: &mut DataRead| read_nuclea
make_simple!(ImpactReactorBlock => |_, _, _, buff: &mut DataRead| read_impact(buff));
make_simple!(HeaterGeneratorBlock => |_, _, _, buff: &mut DataRead| read_heater(buff));
make_simple!(BatteryBlock);
-make_simple!(DiodeBlock, |_, _, _, _, _, rot: Rotation| {
- let base = load("power", "diode").unwrap();
- if rot == Rotation::Right {
- return Some(ImageHolder::from(base));
- }
- let mut base = base.clone();
- let mut top = load("power", "diode-arrow").unwrap().clone();
- top.rotate(rot.rotated(false).count());
- base.overlay(&top);
- Some(ImageHolder::from(base))
+make_simple!(DiodeBlock, |_, _, _, _, rot: Rotation| {
+ let mut base = load("diode");
+ if rot == Rotation::Right {
+ return base;
+ }
+ let mut top = load("diode-arrow");
+ top.rotate(rot.rotated(false).count());
+ base.overlay(&top);
+ base
});
make_register! {
@@ -130,6 +129,16 @@ impl BlockLogic for ConnectorBlock {
fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> {
Ok(DynData::Point2Array(Self::get_state(state).clone()))
}
+
+ fn draw(
+ &self,
+ name: &str,
+ _: Option<&State>,
+ _: Option<&RenderingContext>,
+ _: Rotation,
+ ) -> ImageHolder {
+ read(name, self.size)
+ }
}
#[derive(Debug, Error)]
@@ -207,6 +216,16 @@ impl BlockLogic for LampBlock {
}
}
+ fn draw(
+ &self,
+ name: &str,
+ _: Option<&State>,
+ _: Option<&RenderingContext>,
+ _: Rotation,
+ ) -> ImageHolder {
+ read(name, self.size)
+ }
+
fn clone_state(&self, state: &State) -> State {
let state = Self::get_state(state);
Box::new(Self::create_state(*state))