mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/liquid.rs')
-rw-r--r--src/block/liquid.rs19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/block/liquid.rs b/src/block/liquid.rs
index 758ff0d..ee7b591 100644
--- a/src/block/liquid.rs
+++ b/src/block/liquid.rs
@@ -1,8 +1,8 @@
//! liquid related things
-use std::any::Any;
use std::error::Error;
use std::fmt;
+use super::State;
use crate::block::distribution::BridgeBlock;
use crate::block::simple::{cost, state_impl, BuildCost, SimpleBlock};
use crate::block::{
@@ -72,7 +72,7 @@ impl BlockLogic for FluidBlock {
Ok(DynData::Content(content::Type::Fluid, config as u16))
}
- fn deserialize_state(&self, data: DynData) -> Result<Option<Box<dyn Any>>, DeserializeError> {
+ fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> {
match data {
DynData::Empty => Ok(Some(Self::create_state(None))),
DynData::Content(content::Type::Fluid, id) => Ok(Some(Self::create_state(Some(
@@ -88,28 +88,23 @@ impl BlockLogic for FluidBlock {
}
}
- fn clone_state(&self, state: &dyn Any) -> Box<dyn Any> {
+ fn clone_state(&self, state: &State) -> State {
let state = Self::get_state(state);
Box::new(Self::create_state(*state))
}
- fn mirror_state(&self, _: &mut dyn Any, _: bool, _: bool) {}
+ fn mirror_state(&self, _: &mut State, _: bool, _: bool) {}
- fn rotate_state(&self, _: &mut dyn Any, _: bool) {}
+ fn rotate_state(&self, _: &mut State, _: bool) {}
- fn serialize_state(&self, state: &dyn Any) -> Result<DynData, SerializeError> {
+ fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> {
match Self::get_state(state) {
None => Ok(DynData::Empty),
Some(fluid) => Ok(DynData::Content(content::Type::Fluid, (*fluid).into())),
}
}
- fn draw(
- &self,
- category: &str,
- name: &str,
- state: Option<&dyn Any>,
- ) -> Option<image::RgbaImage> {
+ fn draw(&self, category: &str, name: &str, state: Option<&State>) -> Option<image::RgbaImage> {
let mut p = load(category, name).unwrap();
if let Some(state) = state {
if let Some(s) = Self::get_state(state) {