mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/block/environment.rs')
| -rw-r--r-- | src/block/environment.rs | 374 |
1 files changed, 179 insertions, 195 deletions
diff --git a/src/block/environment.rs b/src/block/environment.rs index 4642730..7b0b250 100644 --- a/src/block/environment.rs +++ b/src/block/environment.rs @@ -2,211 +2,195 @@ use crate::block::make_register; use crate::block::simple::make_simple; use crate::data::renderer::*; -use tinyrand::RandRange; -use tinyrand_std::thread_rand; - macro_rules! register_env { - ($($field:literal: $size:literal @ $variations:literal;)+) => { + ($($field:literal: $size:literal;)+) => { make_register!( $($field => EnvironmentBlock::new($size, true, &[]);)* ); - - make_simple!(EnvironmentBlock, |_, name, _, _, _, s| { - match name { - $($field => { - #[allow(clippy::reversed_empty_ranges)] - match $variations { - 2..=6 => load(&format!("{}{}", $field, thread_rand().next_range(1usize..$variations)), s), - 1 => load($field, s), - 0 => ImageHolder::from(RgbaImage::new(s * $size, s * $size)), - _ => unreachable!(), - } - },)* - _ => { unreachable!() } - } - }); }; } +make_simple!(EnvironmentBlock, |_, name, _, _, _, s| load(name, s)); + register_env! { - "darksand": 1@3; - "sand-floor": 1@3; - "yellow-stone": 1@3; - "arkyic-stone": 1@3; - "carbon-stone": 1@4; - "ore-beryllium": 1@3; - "ore-copper": 1@3; - "ore-lead": 1@3; - "ore-coal": 1@3; - "ore-scrap": 1@3; - "ore-thorium": 1@3; - "ore-titanium": 1@3; - "ore-tungsten": 1@3; - "ore-crystal-thorium": 1@3; - "ore-wall-beryllium": 1@3; - "ore-wall-thorium": 1@3; - "ore-wall-tungsten": 1@3; - "graphitic-wall": 1@3; - "graphitic-wall-large": 2@1; - "dacite": 1@3; - "dirt": 1@3; - "arkycite-floor": 1@1; - "basalt": 1@3; - "ice": 1@3; - "molten-slag": 1@1; - "moss": 1@3; - "mud": 1@3; - "magmarock": 1@3; - "grass": 1@3; - "ice-snow": 1@3; - "hotrock": 1@3; - "char": 1@3; - "snow": 1@3; - "salt": 1@1; - "shale": 1@3; - "metal-floor": 1@1; - "metal-floor-2": 1@1; - "metal-floor-3": 1@1; - "metal-floor-4": 1@1; - "metal-floor-5": 1@1; - "dark-panel-1": 1@1; - "dark-panel-2": 1@1; - "dark-panel-3": 1@1; - "dark-panel-4": 1@1; - "dark-panel-5": 1@1; - "dark-panel-6": 1@1; - "darksand-tainted-water": 1@1; - "darksand-water": 1@1; - "deep-tainted-water": 1@1; - "deep-water": 1@1; - "sand-water": 1@1; - "shallow-water": 1@1; - "space": 1@1; - "stone": 1@3; - "build1": 1@0; - "boulder": 1@2; - "arkyic-vent": 3@2; - "arkyic-wall-large": 2@1; - "arkyic-wall": 1@3; - "beryllic-stone-wall-large": 2@1; - "beryllic-stone-wall": 1@2; - "beryllic-stone": 1@4; - "bluemat": 1@3; - "carbon-vent": 3@2; - "carbon-wall-large": 2@1; - "carbon-wall": 1@2; - "cliff": 1@7; - "core-zone": 1@1; - "crater-stone": 1@6; - "crystal-floor": 1@4; - "crystalline-stone-wall-large": 2@1; - "crystalline-stone-wall": 1@4; - "crystalline-stone": 1@5; - "crystalline-vent": 3@2; - "dacite-wall-large": 2@1; - "dacite-wall": 1@2; - "dark-metal-large": 2@1; - "dark-metal": 1@2; - "metal-floor-damaged": 1@3; - "dense-red-stone": 1@4; - "dirt-wall-large": 2@1; - "dirt-wall": 1@2; - "dune-wall-large": 2@1; - "dune-wall": 1@2; - "ferric-craters": 1@3; // ferris section - "ferric-stone-wall-large": 2@1; - "ferric-stone-wall": 1@2; - "ferric-stone": 1@4; - "ice-wall-large": 2@1; - "ice-wall": 1@2; - "pebbles": 1@3; - "pine": 1@1; - "pooled-cryofluid": 1@1; - "red-diamond-wall": 1@3; - "red-ice-wall-large": 2@1; - "red-ice-wall": 1@2; - "red-ice": 1@3; - "red-stone-vent": 3@2; - "red-stone-wall-large": 2@1; - "red-stone-wall": 1@3; - "red-stone": 1@4; - "redmat": 1@3; - "regolith-wall-large": 2@1; - "regolith-wall": 1@2; - "regolith": 1@3; - "rhyolite-crater": 1@3; - "rhyolite-vent": 3@2; - "rhyolite-wall-large": 2@1; - "rhyolite-wall": 1@2; - "rhyolite": 1@3; - "rough-rhyolite": 1@3; - "salt-wall-large": 2@1; - "salt-wall": 1@2; - "sand-wall-large": 2@1; - "sand-wall": 1@2; - "shale-wall-large": 2@1; - "shale-wall": 1@2; - "shrubs-large": 2@1; - "shrubs": 1@2; - "snow-pine": 1@1; - "snow-wall-large": 2@1; - "snow-wall": 1@2; - "spawn": 1@1; - "spore-moss": 1@3; - "spore-pine": 1@1; - "spore-wall-large": 2@1; - "spore-wall": 1@2; - "stone-wall-large": 2@1; - "stone-wall": 1@2; - "tainted-water": 1@1; - "tar": 1@1; - "yellow-stone-plates": 1@3; - "yellow-stone-vent": 3@2; - "yellow-stone-wall-large": 2@1; - "yellow-stone-wall": 1@2; + "darksand": 1; + "sand-floor": 1; + "yellow-stone": 1; + "arkyic-stone": 1; + "carbon-stone": 1; + "ore-beryllium": 1; + "ore-copper": 1; + "ore-lead": 1; + "ore-coal": 1; + "ore-scrap": 1; + "ore-thorium": 1; + "ore-titanium": 1; + "ore-tungsten": 1; + "ore-crystal-thorium": 1; + "ore-wall-beryllium": 1; + "ore-wall-thorium": 1; + "ore-wall-tungsten": 1; + "graphitic-wall": 1; + "graphitic-wall-large": 2; + "dacite": 1; + "dirt": 1; + "arkycite-floor": 1; + "basalt": 1; + "ice": 1; + "molten-slag": 1; + "moss": 1; + "mud": 1; + "magmarock": 1; + "grass": 1; + "ice-snow": 1; + "hotrock": 1; + "char": 1; + "snow": 1; + "salt": 1; + "shale": 1; + "metal-floor": 1; + "metal-floor-2": 1; + "metal-floor-3": 1; + "metal-floor-4": 1; + "metal-floor-5": 1; + "dark-panel-1": 1; + "dark-panel-2": 1; + "dark-panel-3": 1; + "dark-panel-4": 1; + "dark-panel-5": 1; + "dark-panel-6": 1; + "darksand-tainted-water": 1; + "darksand-water": 1; + "deep-tainted-water": 1; + "deep-water": 1; + "sand-water": 1; + "shallow-water": 1; + "space": 1; + "stone": 1; + "build1": 1; + "boulder": 1; + "arkyic-vent": 3; + "arkyic-wall-large": 2; + "arkyic-wall": 1; + "beryllic-stone-wall-large": 2; + "beryllic-stone-wall": 1; + "beryllic-stone": 1; + "bluemat": 1; + "carbon-vent": 3; + "carbon-wall-large": 2; + "carbon-wall": 1; + "cliff": 1; + "core-zone": 1; + "crater-stone": 1; + "crystal-floor": 1; + "crystalline-stone-wall-large": 2; + "crystalline-stone-wall": 1; + "crystalline-stone": 1; + "crystalline-vent": 3; + "dacite-wall-large": 2; + "dacite-wall": 1; + "dark-metal-large": 2; + "dark-metal": 1; + "metal-floor-damaged": 1; + "dense-red-stone": 1; + "dirt-wall-large": 2; + "dirt-wall": 1; + "dune-wall-large": 2; + "dune-wall": 1; + "ferric-craters": 1; // ferris section + "ferric-stone-wall-large": 2; + "ferric-stone-wall": 1; + "ferric-stone": 1; + "ice-wall-large": 2; + "ice-wall": 1; + "pebbles": 1; + "pine": 1; + "pooled-cryofluid": 1; + "red-diamond-wall": 1; + "red-ice-wall-large": 2; + "red-ice-wall": 1; + "red-ice": 1; + "red-stone-vent": 3; + "red-stone-wall-large": 2; + "red-stone-wall": 1; + "red-stone": 1; + "redmat": 1; + "regolith-wall-large": 2; + "regolith-wall": 1; + "regolith": 1; + "rhyolite-crater": 1; + "rhyolite-vent": 3; + "rhyolite-wall-large": 2; + "rhyolite-wall": 1; + "rhyolite": 1; + "rough-rhyolite": 1; + "salt-wall-large": 2; + "salt-wall": 1; + "sand-wall-large": 2; + "sand-wall": 1; + "shale-wall-large": 2; + "shale-wall": 1; + "shrubs-large": 2; + "shrubs": 1; + "snow-pine": 1; + "snow-wall-large": 2; + "snow-wall": 1; + "spawn": 1; + "spore-moss": 1; + "spore-pine": 1; + "spore-wall-large": 2; + "spore-wall": 1; + "stone-wall-large": 2; + "stone-wall": 1; + "tainted-water": 1; + "tar": 1; + "yellow-stone-plates": 1; + "yellow-stone-vent": 3; + "yellow-stone-wall-large": 2; + "yellow-stone-wall": 1; // props - "yellow-stone-boulder": 1@2; - "snow-boulder": 1@2; - "shale-boulder": 1@2; - "arkyic-boulder": 1@3; - "basalt-boulder": 1@2; - "beryllic-boulder": 1@2; - "carbon-boulder": 1@2; - "crystalline-boulder": 1@2; - "dacite-boulder": 1@2; - "ferric-boulder": 1@2; - "red-ice-boulder": 1@3; - "red-stone-boulder": 1@4; - "rhyolite-boulder": 1@3; - "sand-boulder": 1@2; - "yellow-sand-boulder": 1@2; - "pur-bush": 1@1; - "tendrils": 1@3; + "yellow-stone-boulder": 1; + "snow-boulder": 1; + "shale-boulder": 1; + "arkyic-boulder": 1; + "basalt-boulder": 1; + "beryllic-boulder": 1; + "carbon-boulder": 1; + "crystalline-boulder": 1; + "dacite-boulder": 1; + "ferric-boulder": 1; + "red-ice-boulder": 1; + "red-stone-boulder": 1; + "rhyolite-boulder": 1; + "sand-boulder": 1; + "yellow-sand-boulder": 1; + "pur-bush": 1; + "tendrils": 1; // these are tall but uh (TODO layering) - "white-tree-dead": 1@1; - "yellowcoral": 1@1; - "white-tree": 1@1; - "redweed": 1@3; - "spore-cluster": 1@3; - "crystal-blocks": 1@3; - "crystal-cluster": 1@3; - "vibrant-crystal-cluster": 1@3; - "crystal-orbs": 1@3; + "white-tree-dead": 1; + "yellowcoral": 1; + "white-tree": 1; + "redweed": 1; + "spore-cluster": 1; + "crystal-blocks": 1; + "crystal-cluster": 1; + "vibrant-crystal-cluster": 1; + "crystal-orbs": 1; // end tall - "build2": 1@0; - "build3": 1@0; - "build4": 1@0; - "build5": 1@0; - "build6": 1@0; - "build7": 1@0; - "build8": 1@0; - "build9": 1@0; - "build10": 1@0; - "build11": 1@0; - "build12": 1@0; - "build13": 1@0; - "build14": 1@0; - "build15": 1@0; - "build16": 1@0; + "build2": 1; + "build3": 1; + "build4": 1; + "build5": 1; + "build6": 1; + "build7": 1; + "build8": 1; + "build9": 1; + "build10": 1; + "build11": 1; + "build12": 1; + "build13": 1; + "build14": 1; + "build15": 1; + "build16": 1; } |