mindustry logic execution, map- and schematic- parsing and rendering
3107 files changed, 6588 insertions, 12045 deletions
diff --git a/.github/example.png b/.github/example.png Binary files differindex d19d4d5..2197fd0 100644 --- a/.github/example.png +++ b/.github/example.png @@ -1,7 +1,6 @@ # rustc/cargo outputs -Cargo.lock -target -rustc-ice-*.txt +/Cargo.lock +/target # Visual Studio Code /.vscode @@ -1,6 +1,43 @@ -[workspace] -members = ["mindus", "lemu", "p2s"] -resolver = "2" +[package] +name = "mindus" +version = "4.0.3" +edition = "2021" +description = "A library for working with mindustry data formats (eg schematics and maps) (fork of plandustry)" +authors = [ + "KosmosPrime <[email protected]>", + "bend-n <[email protected]>", +] +repository = "https://github.com/bend-n/mindus.git" +license = "GPL-3.0" +exclude = [".github/", "items.py"] + +[dependencies] +flate2 = { version = "1.0", features = ["zlib"], default-features = false } +base64 = "0.21" +paste = "1.0" +strconv = "0.1" +image = { version = "0.24", features = [], default-features = false, optional = true } +color-hex = "0.2" +thiserror = "1.0" +bobbin-bits = "0.1" +blurslice = { version = "0.1" } +enum_dispatch = "0.3" +fast_image_resize = "2.7.3" +rayon = "1.7.0" + +[features] +bin = ["image/png"] +default = ["bin"] + +[build-dependencies] +image = { version = "0.24", features = ["png"], default-features = false } +walkdir = "2" + +[[bin]] +name = "mindus" +doc = false +required-features = ["bin"] +path = "src/exe/mod.rs" [profile.release] debug = 2 @@ -13,3 +50,6 @@ opt-level = 3 [profile.release.build-override] opt-level = 3 + +[dev-dependencies] +diff = "0.1" diff --git a/mindus/LICENSE.txt b/LICENSE.txt index f288702..f288702 100644 --- a/mindus/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,20 @@ # mindus -- see the [mindus](mindus/) folder for schematic and map rendering and deserializing -- see the [lemu](lemu/) folder for mlog execution
\ No newline at end of file + + +Mindus is a library for working with [Mindustry](https://github.com/Anuken/Mindustry) formats. + +## Usage + +```rs +use mindus::*; +let reg = build_registry(); +let mut ss = SchematicSerializer(®); +let s = ss.deserialize_base64("bXNjaAF4nD3SQW6DMBBA0bE94wF104vkDr1H1QVtWUQioTL0/oFJ/Fl9GXiy5ZFBhiJ6n26zvE9tv7T1f5/bZbtNyyJvv/P2065/+3W9i0hdpu952SR/fiWp29qOL4/lDzkfExkiEpWPGqMKpZRRlT/8VQkv4aXwnlUopYw6vRTVvRzeGJVYy1ShlDKqezk8O8+DV/AKXgkvRSllvK2sdU/xFE/xFE/xFE/xNLzxeRlU9wzPOK9xXsMzPMOr3EcNL0VlqlBKGVWpfh+O5+zPmRdnXpx5cebFmRd/eQ9KIReL")?; +let output = s.render(); +output.save("output.png"); +``` + +This produces: + + diff --git a/assets/blocks/campaign/interplanetary-accelerator.png b/assets/blocks/campaign/interplanetary-accelerator.png Binary files differnew file mode 100644 index 0000000..78f302b --- /dev/null +++ b/assets/blocks/campaign/interplanetary-accelerator.png diff --git a/mindus/assets/blocks/campaign/launch-pad.png b/assets/blocks/campaign/launch-pad.png Binary files differindex 3dcca24..3dcca24 100644 --- a/mindus/assets/blocks/campaign/launch-pad.png +++ b/assets/blocks/campaign/launch-pad.png diff --git a/assets/blocks/campaign/launchpod.png b/assets/blocks/campaign/launchpod.png Binary files differnew file mode 100644 index 0000000..1697897 --- /dev/null +++ b/assets/blocks/campaign/launchpod.png diff --git a/assets/blocks/defense/barrier-projector-team.png b/assets/blocks/defense/barrier-projector-team.png Binary files differnew file mode 100644 index 0000000..9c0d534 --- /dev/null +++ b/assets/blocks/defense/barrier-projector-team.png diff --git a/assets/blocks/defense/barrier-projector.png b/assets/blocks/defense/barrier-projector.png Binary files differnew file mode 100644 index 0000000..0b72218 --- /dev/null +++ b/assets/blocks/defense/barrier-projector.png diff --git a/assets/blocks/defense/build-tower.png b/assets/blocks/defense/build-tower.png Binary files differnew file mode 100644 index 0000000..cec7847 --- /dev/null +++ b/assets/blocks/defense/build-tower.png diff --git a/mindus/assets/blocks/defense/force-projector-team.png b/assets/blocks/defense/force-projector-team.png Binary files differindex 86614cb..86614cb 100644 --- a/mindus/assets/blocks/defense/force-projector-team.png +++ b/assets/blocks/defense/force-projector-team.png diff --git a/assets/blocks/defense/force-projector.png b/assets/blocks/defense/force-projector.png Binary files differnew file mode 100644 index 0000000..72bd63e --- /dev/null +++ b/assets/blocks/defense/force-projector.png diff --git a/assets/blocks/defense/large-shield-projector-team.png b/assets/blocks/defense/large-shield-projector-team.png Binary files differnew file mode 100644 index 0000000..b43d7d5 --- /dev/null +++ b/assets/blocks/defense/large-shield-projector-team.png diff --git a/assets/blocks/defense/large-shield-projector.png b/assets/blocks/defense/large-shield-projector.png Binary files differnew file mode 100644 index 0000000..ec01b32 --- /dev/null +++ b/assets/blocks/defense/large-shield-projector.png diff --git a/assets/blocks/defense/mend-projector.png b/assets/blocks/defense/mend-projector.png Binary files differnew file mode 100644 index 0000000..0b70091 --- /dev/null +++ b/assets/blocks/defense/mend-projector.png diff --git a/assets/blocks/defense/mender.png b/assets/blocks/defense/mender.png Binary files differnew file mode 100644 index 0000000..669378b --- /dev/null +++ b/assets/blocks/defense/mender.png diff --git a/assets/blocks/defense/overdrive-dome.png b/assets/blocks/defense/overdrive-dome.png Binary files differnew file mode 100644 index 0000000..c52221e --- /dev/null +++ b/assets/blocks/defense/overdrive-dome.png diff --git a/assets/blocks/defense/overdrive-projector.png b/assets/blocks/defense/overdrive-projector.png Binary files differnew file mode 100644 index 0000000..55fb163 --- /dev/null +++ b/assets/blocks/defense/overdrive-projector.png diff --git a/mindus/assets/blocks/defense/radar.png b/assets/blocks/defense/radar.png Binary files differindex 701beac..701beac 100644 --- a/mindus/assets/blocks/defense/radar.png +++ b/assets/blocks/defense/radar.png diff --git a/assets/blocks/defense/regen-projector.png b/assets/blocks/defense/regen-projector.png Binary files differnew file mode 100644 index 0000000..7bc0fd4 --- /dev/null +++ b/assets/blocks/defense/regen-projector.png diff --git a/mindus/assets/blocks/defense/shield-projector-team.png b/assets/blocks/defense/shield-projector-team.png Binary files differindex fdc00a2..fdc00a2 100644 --- a/mindus/assets/blocks/defense/shield-projector-team.png +++ b/assets/blocks/defense/shield-projector-team.png diff --git a/assets/blocks/defense/shield-projector.png b/assets/blocks/defense/shield-projector.png Binary files differnew file mode 100644 index 0000000..43717ca --- /dev/null +++ b/assets/blocks/defense/shield-projector.png diff --git a/assets/blocks/defense/shock-mine-team-top.png b/assets/blocks/defense/shock-mine-team-top.png Binary files differnew file mode 100644 index 0000000..4ee60bc --- /dev/null +++ b/assets/blocks/defense/shock-mine-team-top.png diff --git a/mindus/assets/blocks/defense/shock-mine.png b/assets/blocks/defense/shock-mine.png Binary files differindex 2f18055..2f18055 100644 --- a/mindus/assets/blocks/defense/shock-mine.png +++ b/assets/blocks/defense/shock-mine.png diff --git a/assets/blocks/defense/shockwave-tower.png b/assets/blocks/defense/shockwave-tower.png Binary files differnew file mode 100644 index 0000000..f6780d8 --- /dev/null +++ b/assets/blocks/defense/shockwave-tower.png diff --git a/assets/blocks/distribution/bridge-arrow.png b/assets/blocks/distribution/bridge-arrow.png Binary files differnew file mode 100644 index 0000000..e6c8859 --- /dev/null +++ b/assets/blocks/distribution/bridge-arrow.png diff --git a/assets/blocks/distribution/bridge-conveyor-arrow.png b/assets/blocks/distribution/bridge-conveyor-arrow.png Binary files differnew file mode 100644 index 0000000..b8b62bc --- /dev/null +++ b/assets/blocks/distribution/bridge-conveyor-arrow.png diff --git a/assets/blocks/distribution/bridge-conveyor-bridge.png b/assets/blocks/distribution/bridge-conveyor-bridge.png Binary files differnew file mode 100644 index 0000000..947e48d --- /dev/null +++ b/assets/blocks/distribution/bridge-conveyor-bridge.png diff --git a/assets/blocks/distribution/bridge-conveyor-end.png b/assets/blocks/distribution/bridge-conveyor-end.png Binary files differnew file mode 100644 index 0000000..48d3f85 --- /dev/null +++ b/assets/blocks/distribution/bridge-conveyor-end.png diff --git a/assets/blocks/distribution/bridge-conveyor.png b/assets/blocks/distribution/bridge-conveyor.png Binary files differnew file mode 100644 index 0000000..608ce88 --- /dev/null +++ b/assets/blocks/distribution/bridge-conveyor.png diff --git a/assets/blocks/distribution/center.png b/assets/blocks/distribution/center.png Binary files differnew file mode 100644 index 0000000..19def6b --- /dev/null +++ b/assets/blocks/distribution/center.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-0-0.png b/assets/blocks/distribution/conveyors/armored-conveyor-0-0.png Binary files differnew file mode 100644 index 0000000..9becfdf --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-0-0.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-0-1.png b/assets/blocks/distribution/conveyors/armored-conveyor-0-1.png Binary files differnew file mode 100644 index 0000000..4685ab6 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-0-1.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-0-2.png b/assets/blocks/distribution/conveyors/armored-conveyor-0-2.png Binary files differnew file mode 100644 index 0000000..f10b176 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-0-2.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-0-3.png b/assets/blocks/distribution/conveyors/armored-conveyor-0-3.png Binary files differnew file mode 100644 index 0000000..9c002ed --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-0-3.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-0-h.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-0-h.png Binary files differnew file mode 100644 index 0000000..25835e4 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-0-h.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-0.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-0.png Binary files differnew file mode 100644 index 0000000..21ed583 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-0.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-1-h.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-1-h.png Binary files differnew file mode 100644 index 0000000..f7c2705 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-1-h.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-1-v.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-1-v.png Binary files differnew file mode 100644 index 0000000..c31f105 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-1-v.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-1.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-1.png Binary files differnew file mode 100644 index 0000000..be087fa --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-1.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-2.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-2.png Binary files differnew file mode 100644 index 0000000..5c7a30a --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-2.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-1-3.png b/assets/blocks/distribution/conveyors/armored-conveyor-1-3.png Binary files differnew file mode 100644 index 0000000..32bf421 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-1-3.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-0-h.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-0-h.png Binary files differnew file mode 100644 index 0000000..f2c6105 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-0-h.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-0-v.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-0-v.png Binary files differnew file mode 100644 index 0000000..04e8329 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-0-v.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-0.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-0.png Binary files differnew file mode 100644 index 0000000..72eba5c --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-0.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-1-h.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-1-h.png Binary files differnew file mode 100644 index 0000000..def3ab3 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-1-h.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-1.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-1.png Binary files differnew file mode 100644 index 0000000..efc9937 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-1.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-2.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-2.png Binary files differnew file mode 100644 index 0000000..7a70978 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-2.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-3-h.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-3-h.png Binary files differnew file mode 100644 index 0000000..b491de9 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-3-h.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-2-3.png b/assets/blocks/distribution/conveyors/armored-conveyor-2-3.png Binary files differnew file mode 100644 index 0000000..5e846e8 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-2-3.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-3-0-h.png b/assets/blocks/distribution/conveyors/armored-conveyor-3-0-h.png Binary files differnew file mode 100644 index 0000000..a5692f9 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-3-0-h.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-3-0.png b/assets/blocks/distribution/conveyors/armored-conveyor-3-0.png Binary files differnew file mode 100644 index 0000000..7754791 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-3-0.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-3-1.png b/assets/blocks/distribution/conveyors/armored-conveyor-3-1.png Binary files differnew file mode 100644 index 0000000..7b72bf6 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-3-1.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-3-3.png b/assets/blocks/distribution/conveyors/armored-conveyor-3-3.png Binary files differnew file mode 100644 index 0000000..ce0d878 --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-3-3.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-4-0.png b/assets/blocks/distribution/conveyors/armored-conveyor-4-0.png Binary files differnew file mode 100644 index 0000000..741bfdb --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-4-0.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-4-1.png b/assets/blocks/distribution/conveyors/armored-conveyor-4-1.png Binary files differnew file mode 100644 index 0000000..d4893ef --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-4-1.png diff --git a/assets/blocks/distribution/conveyors/armored-conveyor-4-3.png b/assets/blocks/distribution/conveyors/armored-conveyor-4-3.png Binary files differnew file mode 100644 index 0000000..e0539ef --- /dev/null +++ b/assets/blocks/distribution/conveyors/armored-conveyor-4-3.png diff --git a/assets/blocks/distribution/conveyors/conveyor-0-0.png b/assets/blocks/distribution/conveyors/conveyor-0-0.png Binary files differnew file mode 100644 index 0000000..4de81c8 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-0-0.png diff --git a/assets/blocks/distribution/conveyors/conveyor-0-1.png b/assets/blocks/distribution/conveyors/conveyor-0-1.png Binary files differnew file mode 100644 index 0000000..e83ade5 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-0-1.png diff --git a/assets/blocks/distribution/conveyors/conveyor-0-2.png b/assets/blocks/distribution/conveyors/conveyor-0-2.png Binary files differnew file mode 100644 index 0000000..3855016 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-0-2.png diff --git a/assets/blocks/distribution/conveyors/conveyor-0-3.png b/assets/blocks/distribution/conveyors/conveyor-0-3.png Binary files differnew file mode 100644 index 0000000..5d0b247 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-0-3.png diff --git a/assets/blocks/distribution/conveyors/conveyor-1-0-h.png b/assets/blocks/distribution/conveyors/conveyor-1-0-h.png Binary files differnew file mode 100644 index 0000000..75b477d --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-1-0-h.png diff --git a/assets/blocks/distribution/conveyors/conveyor-1-0.png b/assets/blocks/distribution/conveyors/conveyor-1-0.png Binary files differnew file mode 100644 index 0000000..a8cfa5d --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-1-0.png diff --git a/assets/blocks/distribution/conveyors/conveyor-1-1-h.png b/assets/blocks/distribution/conveyors/conveyor-1-1-h.png Binary files differnew file mode 100644 index 0000000..8e6eb5f --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-1-1-h.png diff --git a/assets/blocks/distribution/conveyors/conveyor-1-1-v.png b/assets/blocks/distribution/conveyors/conveyor-1-1-v.png Binary files differnew file mode 100644 index 0000000..d78d194 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-1-1-v.png diff --git a/assets/blocks/distribution/conveyors/conveyor-1-1.png b/assets/blocks/distribution/conveyors/conveyor-1-1.png Binary files differnew file mode 100644 index 0000000..90220b5 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-1-1.png diff --git a/assets/blocks/distribution/conveyors/conveyor-1-2.png b/assets/blocks/distribution/conveyors/conveyor-1-2.png Binary files differnew file mode 100644 index 0000000..923223b --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-1-2.png diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-3.png b/assets/blocks/distribution/conveyors/conveyor-1-3.png Binary files differindex 2905d1a..2905d1a 100644 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-3.png +++ b/assets/blocks/distribution/conveyors/conveyor-1-3.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-0-h.png b/assets/blocks/distribution/conveyors/conveyor-2-0-h.png Binary files differnew file mode 100644 index 0000000..6649a28 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-0-h.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-0-v.png b/assets/blocks/distribution/conveyors/conveyor-2-0-v.png Binary files differnew file mode 100644 index 0000000..4a266b0 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-0-v.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-0.png b/assets/blocks/distribution/conveyors/conveyor-2-0.png Binary files differnew file mode 100644 index 0000000..5d9eb5e --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-0.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-1-h.png b/assets/blocks/distribution/conveyors/conveyor-2-1-h.png Binary files differnew file mode 100644 index 0000000..7e8d16f --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-1-h.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-1.png b/assets/blocks/distribution/conveyors/conveyor-2-1.png Binary files differnew file mode 100644 index 0000000..798f6a6 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-1.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-2.png b/assets/blocks/distribution/conveyors/conveyor-2-2.png Binary files differnew file mode 100644 index 0000000..14a9d78 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-2.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-3-h.png b/assets/blocks/distribution/conveyors/conveyor-2-3-h.png Binary files differnew file mode 100644 index 0000000..07176a5 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-3-h.png diff --git a/assets/blocks/distribution/conveyors/conveyor-2-3.png b/assets/blocks/distribution/conveyors/conveyor-2-3.png Binary files differnew file mode 100644 index 0000000..abcbebc --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-2-3.png diff --git a/assets/blocks/distribution/conveyors/conveyor-3-0-h.png b/assets/blocks/distribution/conveyors/conveyor-3-0-h.png Binary files differnew file mode 100644 index 0000000..0ca52ba --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-3-0-h.png diff --git a/assets/blocks/distribution/conveyors/conveyor-3-0.png b/assets/blocks/distribution/conveyors/conveyor-3-0.png Binary files differnew file mode 100644 index 0000000..6e38bc2 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-3-0.png diff --git a/assets/blocks/distribution/conveyors/conveyor-3-1.png b/assets/blocks/distribution/conveyors/conveyor-3-1.png Binary files differnew file mode 100644 index 0000000..ebfd3ee --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-3-1.png diff --git a/assets/blocks/distribution/conveyors/conveyor-3-3.png b/assets/blocks/distribution/conveyors/conveyor-3-3.png Binary files differnew file mode 100644 index 0000000..4abdb24 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-3-3.png diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-4-0.png b/assets/blocks/distribution/conveyors/conveyor-4-0.png Binary files differindex b788db9..b788db9 100644 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-4-0.png +++ b/assets/blocks/distribution/conveyors/conveyor-4-0.png diff --git a/assets/blocks/distribution/conveyors/conveyor-4-1.png b/assets/blocks/distribution/conveyors/conveyor-4-1.png Binary files differnew file mode 100644 index 0000000..cf0ba78 --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-4-1.png diff --git a/assets/blocks/distribution/conveyors/conveyor-4-3.png b/assets/blocks/distribution/conveyors/conveyor-4-3.png Binary files differnew file mode 100644 index 0000000..84cbd2d --- /dev/null +++ b/assets/blocks/distribution/conveyors/conveyor-4-3.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-0-0.png b/assets/blocks/distribution/conveyors/titanium-conveyor-0-0.png Binary files differnew file mode 100644 index 0000000..bb2b4b2 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-0-0.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-0-1.png b/assets/blocks/distribution/conveyors/titanium-conveyor-0-1.png Binary files differnew file mode 100644 index 0000000..bd17828 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-0-1.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-0-2.png b/assets/blocks/distribution/conveyors/titanium-conveyor-0-2.png Binary files differnew file mode 100644 index 0000000..3de01c0 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-0-2.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-0-3.png b/assets/blocks/distribution/conveyors/titanium-conveyor-0-3.png Binary files differnew file mode 100644 index 0000000..5073271 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-0-3.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-0-h.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-0-h.png Binary files differindex 99602c3..99602c3 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-0-h.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-0-h.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-1-0.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-0.png Binary files differnew file mode 100644 index 0000000..749b079 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-0.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-h.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-h.png Binary files differindex e02adb4..e02adb4 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-h.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-h.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-v.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-v.png Binary files differnew file mode 100644 index 0000000..bc8ed5e --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-v.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-1.png Binary files differindex b50f7cf..b50f7cf 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-1.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-1-2.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-2.png Binary files differnew file mode 100644 index 0000000..368e08f --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-2.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-1-3.png b/assets/blocks/distribution/conveyors/titanium-conveyor-1-3.png Binary files differnew file mode 100644 index 0000000..d17a367 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-1-3.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-h.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-h.png Binary files differnew file mode 100644 index 0000000..3775277 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-h.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-v.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-v.png Binary files differnew file mode 100644 index 0000000..fd4c2fb --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-v.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-2-0.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-0.png Binary files differnew file mode 100644 index 0000000..f5ba433 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-0.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-1-h.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-1-h.png Binary files differindex 0ba3653..0ba3653 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-1-h.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-1-h.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-1.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-1.png Binary files differindex 4f5b154..4f5b154 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-1.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-1.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-2-2.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-2.png Binary files differnew file mode 100644 index 0000000..39379a8 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-2.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-3-h.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-3-h.png Binary files differindex 3bd7270..3bd7270 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-3-h.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-3-h.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-2-3.png b/assets/blocks/distribution/conveyors/titanium-conveyor-2-3.png Binary files differnew file mode 100644 index 0000000..546bd31 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-2-3.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-3-0-h.png b/assets/blocks/distribution/conveyors/titanium-conveyor-3-0-h.png Binary files differnew file mode 100644 index 0000000..09f7114 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-3-0-h.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-3-0.png b/assets/blocks/distribution/conveyors/titanium-conveyor-3-0.png Binary files differnew file mode 100644 index 0000000..24525f2 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-3-0.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-3-1.png b/assets/blocks/distribution/conveyors/titanium-conveyor-3-1.png Binary files differnew file mode 100644 index 0000000..2ef4cdf --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-3-1.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-3-3.png b/assets/blocks/distribution/conveyors/titanium-conveyor-3-3.png Binary files differnew file mode 100644 index 0000000..4877112 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-3-3.png diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-0.png b/assets/blocks/distribution/conveyors/titanium-conveyor-4-0.png Binary files differindex 079d383..079d383 100644 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-0.png +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-4-0.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-4-1.png b/assets/blocks/distribution/conveyors/titanium-conveyor-4-1.png Binary files differnew file mode 100644 index 0000000..e2b9517 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-4-1.png diff --git a/assets/blocks/distribution/conveyors/titanium-conveyor-4-3.png b/assets/blocks/distribution/conveyors/titanium-conveyor-4-3.png Binary files differnew file mode 100644 index 0000000..2a1ca44 --- /dev/null +++ b/assets/blocks/distribution/conveyors/titanium-conveyor-4-3.png diff --git a/mindus/assets/blocks/distribution/distributor.png b/assets/blocks/distribution/distributor.png Binary files differindex e4445dd..e4445dd 100644 --- a/mindus/assets/blocks/distribution/distributor.png +++ b/assets/blocks/distribution/distributor.png diff --git a/assets/blocks/distribution/ducts/armored-duct-0-0.png b/assets/blocks/distribution/ducts/armored-duct-0-0.png Binary files differnew file mode 100644 index 0000000..7cdf0be --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-0-0.png diff --git a/assets/blocks/distribution/ducts/armored-duct-0-1.png b/assets/blocks/distribution/ducts/armored-duct-0-1.png Binary files differnew file mode 100644 index 0000000..9a5cd4d --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-0-1.png diff --git a/assets/blocks/distribution/ducts/armored-duct-0-2.png b/assets/blocks/distribution/ducts/armored-duct-0-2.png Binary files differnew file mode 100644 index 0000000..793a84b --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-0-2.png diff --git a/assets/blocks/distribution/ducts/armored-duct-0-3.png b/assets/blocks/distribution/ducts/armored-duct-0-3.png Binary files differnew file mode 100644 index 0000000..94aca00 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-0-3.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-0-h.png b/assets/blocks/distribution/ducts/armored-duct-1-0-h.png Binary files differnew file mode 100644 index 0000000..d9a6ca8 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-0-h.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-0.png b/assets/blocks/distribution/ducts/armored-duct-1-0.png Binary files differnew file mode 100644 index 0000000..4c02046 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-0.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-1-h.png b/assets/blocks/distribution/ducts/armored-duct-1-1-h.png Binary files differnew file mode 100644 index 0000000..220ea63 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-1-h.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-1-v.png b/assets/blocks/distribution/ducts/armored-duct-1-1-v.png Binary files differnew file mode 100644 index 0000000..107e5e1 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-1-v.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-1.png b/assets/blocks/distribution/ducts/armored-duct-1-1.png Binary files differnew file mode 100644 index 0000000..ba68180 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-1.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-2.png b/assets/blocks/distribution/ducts/armored-duct-1-2.png Binary files differnew file mode 100644 index 0000000..102b6c4 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-2.png diff --git a/assets/blocks/distribution/ducts/armored-duct-1-3.png b/assets/blocks/distribution/ducts/armored-duct-1-3.png Binary files differnew file mode 100644 index 0000000..d5c7688 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-1-3.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-0-h.png b/assets/blocks/distribution/ducts/armored-duct-2-0-h.png Binary files differnew file mode 100644 index 0000000..e2b75b7 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-0-h.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-0-v.png b/assets/blocks/distribution/ducts/armored-duct-2-0-v.png Binary files differnew file mode 100644 index 0000000..51690bf --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-0-v.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-0.png b/assets/blocks/distribution/ducts/armored-duct-2-0.png Binary files differnew file mode 100644 index 0000000..fd0c731 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-0.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-1-h.png b/assets/blocks/distribution/ducts/armored-duct-2-1-h.png Binary files differnew file mode 100644 index 0000000..209c984 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-1-h.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-1.png b/assets/blocks/distribution/ducts/armored-duct-2-1.png Binary files differnew file mode 100644 index 0000000..ab5b160 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-1.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-2.png b/assets/blocks/distribution/ducts/armored-duct-2-2.png Binary files differnew file mode 100644 index 0000000..3a1d156 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-2.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-3-h.png b/assets/blocks/distribution/ducts/armored-duct-2-3-h.png Binary files differnew file mode 100644 index 0000000..018ebc1 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-3-h.png diff --git a/assets/blocks/distribution/ducts/armored-duct-2-3.png b/assets/blocks/distribution/ducts/armored-duct-2-3.png Binary files differnew file mode 100644 index 0000000..ee904a0 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-2-3.png diff --git a/assets/blocks/distribution/ducts/armored-duct-3-0-h.png b/assets/blocks/distribution/ducts/armored-duct-3-0-h.png Binary files differnew file mode 100644 index 0000000..0a384b3 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-3-0-h.png diff --git a/assets/blocks/distribution/ducts/armored-duct-3-0.png b/assets/blocks/distribution/ducts/armored-duct-3-0.png Binary files differnew file mode 100644 index 0000000..9371f1c --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-3-0.png diff --git a/assets/blocks/distribution/ducts/armored-duct-3-1.png b/assets/blocks/distribution/ducts/armored-duct-3-1.png Binary files differnew file mode 100644 index 0000000..2a82680 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-3-1.png diff --git a/assets/blocks/distribution/ducts/armored-duct-3-3.png b/assets/blocks/distribution/ducts/armored-duct-3-3.png Binary files differnew file mode 100644 index 0000000..d4ef678 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-3-3.png diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-4-0.png b/assets/blocks/distribution/ducts/armored-duct-4-0.png Binary files differindex 985626c..985626c 100644 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-4-0.png +++ b/assets/blocks/distribution/ducts/armored-duct-4-0.png diff --git a/assets/blocks/distribution/ducts/armored-duct-4-1.png b/assets/blocks/distribution/ducts/armored-duct-4-1.png Binary files differnew file mode 100644 index 0000000..44f767f --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-4-1.png diff --git a/assets/blocks/distribution/ducts/armored-duct-4-3.png b/assets/blocks/distribution/ducts/armored-duct-4-3.png Binary files differnew file mode 100644 index 0000000..4024c61 --- /dev/null +++ b/assets/blocks/distribution/ducts/armored-duct-4-3.png diff --git a/assets/blocks/distribution/ducts/duct-0-0.png b/assets/blocks/distribution/ducts/duct-0-0.png Binary files differnew file mode 100644 index 0000000..3cec9b5 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-0-0.png diff --git a/assets/blocks/distribution/ducts/duct-0-1.png b/assets/blocks/distribution/ducts/duct-0-1.png Binary files differnew file mode 100644 index 0000000..2db5439 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-0-1.png diff --git a/assets/blocks/distribution/ducts/duct-0-2.png b/assets/blocks/distribution/ducts/duct-0-2.png Binary files differnew file mode 100644 index 0000000..6dac9e5 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-0-2.png diff --git a/assets/blocks/distribution/ducts/duct-0-3.png b/assets/blocks/distribution/ducts/duct-0-3.png Binary files differnew file mode 100644 index 0000000..e25d7bb --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-0-3.png diff --git a/assets/blocks/distribution/ducts/duct-1-0-h.png b/assets/blocks/distribution/ducts/duct-1-0-h.png Binary files differnew file mode 100644 index 0000000..11e4482 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-0-h.png diff --git a/assets/blocks/distribution/ducts/duct-1-0.png b/assets/blocks/distribution/ducts/duct-1-0.png Binary files differnew file mode 100644 index 0000000..6adcdeb --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-0.png diff --git a/assets/blocks/distribution/ducts/duct-1-1-h.png b/assets/blocks/distribution/ducts/duct-1-1-h.png Binary files differnew file mode 100644 index 0000000..1461ef0 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-1-h.png diff --git a/assets/blocks/distribution/ducts/duct-1-1-v.png b/assets/blocks/distribution/ducts/duct-1-1-v.png Binary files differnew file mode 100644 index 0000000..50bdb4f --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-1-v.png diff --git a/assets/blocks/distribution/ducts/duct-1-1.png b/assets/blocks/distribution/ducts/duct-1-1.png Binary files differnew file mode 100644 index 0000000..093189f --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-1.png diff --git a/assets/blocks/distribution/ducts/duct-1-2.png b/assets/blocks/distribution/ducts/duct-1-2.png Binary files differnew file mode 100644 index 0000000..5b7aae2 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-2.png diff --git a/assets/blocks/distribution/ducts/duct-1-3.png b/assets/blocks/distribution/ducts/duct-1-3.png Binary files differnew file mode 100644 index 0000000..cb72859 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-1-3.png diff --git a/assets/blocks/distribution/ducts/duct-2-0-h.png b/assets/blocks/distribution/ducts/duct-2-0-h.png Binary files differnew file mode 100644 index 0000000..4ddb3d1 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-0-h.png diff --git a/assets/blocks/distribution/ducts/duct-2-0-v.png b/assets/blocks/distribution/ducts/duct-2-0-v.png Binary files differnew file mode 100644 index 0000000..f841ec1 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-0-v.png diff --git a/assets/blocks/distribution/ducts/duct-2-0.png b/assets/blocks/distribution/ducts/duct-2-0.png Binary files differnew file mode 100644 index 0000000..c0afcfb --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-0.png diff --git a/assets/blocks/distribution/ducts/duct-2-1-h.png b/assets/blocks/distribution/ducts/duct-2-1-h.png Binary files differnew file mode 100644 index 0000000..b40e77e --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-1-h.png diff --git a/assets/blocks/distribution/ducts/duct-2-1.png b/assets/blocks/distribution/ducts/duct-2-1.png Binary files differnew file mode 100644 index 0000000..09eb774 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-1.png diff --git a/assets/blocks/distribution/ducts/duct-2-2.png b/assets/blocks/distribution/ducts/duct-2-2.png Binary files differnew file mode 100644 index 0000000..4da21f8 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-2.png diff --git a/assets/blocks/distribution/ducts/duct-2-3-h.png b/assets/blocks/distribution/ducts/duct-2-3-h.png Binary files differnew file mode 100644 index 0000000..1506bac --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-3-h.png diff --git a/assets/blocks/distribution/ducts/duct-2-3.png b/assets/blocks/distribution/ducts/duct-2-3.png Binary files differnew file mode 100644 index 0000000..0dd6aa3 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-2-3.png diff --git a/assets/blocks/distribution/ducts/duct-3-0-h.png b/assets/blocks/distribution/ducts/duct-3-0-h.png Binary files differnew file mode 100644 index 0000000..4b51f6d --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-3-0-h.png diff --git a/assets/blocks/distribution/ducts/duct-3-0.png b/assets/blocks/distribution/ducts/duct-3-0.png Binary files differnew file mode 100644 index 0000000..d1a331c --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-3-0.png diff --git a/assets/blocks/distribution/ducts/duct-3-1.png b/assets/blocks/distribution/ducts/duct-3-1.png Binary files differnew file mode 100644 index 0000000..6b20424 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-3-1.png diff --git a/assets/blocks/distribution/ducts/duct-3-3.png b/assets/blocks/distribution/ducts/duct-3-3.png Binary files differnew file mode 100644 index 0000000..e457a4c --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-3-3.png diff --git a/assets/blocks/distribution/ducts/duct-4-0.png b/assets/blocks/distribution/ducts/duct-4-0.png Binary files differnew file mode 100644 index 0000000..d490c36 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-4-0.png diff --git a/assets/blocks/distribution/ducts/duct-4-1.png b/assets/blocks/distribution/ducts/duct-4-1.png Binary files differnew file mode 100644 index 0000000..ea57f4a --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-4-1.png diff --git a/assets/blocks/distribution/ducts/duct-4-3.png b/assets/blocks/distribution/ducts/duct-4-3.png Binary files differnew file mode 100644 index 0000000..50eef92 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-4-3.png diff --git a/assets/blocks/distribution/ducts/duct-base.png b/assets/blocks/distribution/ducts/duct-base.png Binary files differnew file mode 100644 index 0000000..6aa0df3 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-base.png diff --git a/assets/blocks/distribution/ducts/duct-bridge-arrow.png b/assets/blocks/distribution/ducts/duct-bridge-arrow.png Binary files differnew file mode 100644 index 0000000..a00c8e9 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-bridge-arrow.png diff --git a/assets/blocks/distribution/ducts/duct-bridge-bridge-bottom.png b/assets/blocks/distribution/ducts/duct-bridge-bridge-bottom.png Binary files differnew file mode 100644 index 0000000..1625679 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-bridge-bridge-bottom.png diff --git a/assets/blocks/distribution/ducts/duct-bridge-bridge.png b/assets/blocks/distribution/ducts/duct-bridge-bridge.png Binary files differnew file mode 100644 index 0000000..533f3c3 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-bridge-bridge.png diff --git a/assets/blocks/distribution/ducts/duct-bridge-dir.png b/assets/blocks/distribution/ducts/duct-bridge-dir.png Binary files differnew file mode 100644 index 0000000..edca5f1 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-bridge-dir.png diff --git a/assets/blocks/distribution/ducts/duct-bridge.png b/assets/blocks/distribution/ducts/duct-bridge.png Binary files differnew file mode 100644 index 0000000..2448bc8 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-bridge.png diff --git a/assets/blocks/distribution/ducts/duct-router.png b/assets/blocks/distribution/ducts/duct-router.png Binary files differnew file mode 100644 index 0000000..2448bc8 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-router.png diff --git a/assets/blocks/distribution/ducts/duct-unloader-top.png b/assets/blocks/distribution/ducts/duct-unloader-top.png Binary files differnew file mode 100644 index 0000000..781bea4 --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-unloader-top.png diff --git a/assets/blocks/distribution/ducts/duct-unloader.png b/assets/blocks/distribution/ducts/duct-unloader.png Binary files differnew file mode 100644 index 0000000..b9ba79c --- /dev/null +++ b/assets/blocks/distribution/ducts/duct-unloader.png diff --git a/mindus/assets/blocks/distribution/ducts/overflow-duct.png b/assets/blocks/distribution/ducts/overflow-duct.png Binary files differindex 6b3e6d0..6b3e6d0 100644 --- a/mindus/assets/blocks/distribution/ducts/overflow-duct.png +++ b/assets/blocks/distribution/ducts/overflow-duct.png diff --git a/assets/blocks/distribution/ducts/surge-router.png b/assets/blocks/distribution/ducts/surge-router.png Binary files differnew file mode 100644 index 0000000..c1cf722 --- /dev/null +++ b/assets/blocks/distribution/ducts/surge-router.png diff --git a/assets/blocks/distribution/ducts/top.png b/assets/blocks/distribution/ducts/top.png Binary files differnew file mode 100644 index 0000000..c7f9cd6 --- /dev/null +++ b/assets/blocks/distribution/ducts/top.png diff --git a/mindus/assets/blocks/distribution/ducts/underflow-duct.png b/assets/blocks/distribution/ducts/underflow-duct.png Binary files differindex f36bc41..f36bc41 100644 --- a/mindus/assets/blocks/distribution/ducts/underflow-duct.png +++ b/assets/blocks/distribution/ducts/underflow-duct.png diff --git a/assets/blocks/distribution/inverted-sorter.png b/assets/blocks/distribution/inverted-sorter.png Binary files differnew file mode 100644 index 0000000..2a75d17 --- /dev/null +++ b/assets/blocks/distribution/inverted-sorter.png diff --git a/assets/blocks/distribution/item-source.png b/assets/blocks/distribution/item-source.png Binary files differnew file mode 100644 index 0000000..d38ce01 --- /dev/null +++ b/assets/blocks/distribution/item-source.png diff --git a/assets/blocks/distribution/item-void.png b/assets/blocks/distribution/item-void.png Binary files differnew file mode 100644 index 0000000..0ef9612 --- /dev/null +++ b/assets/blocks/distribution/item-void.png diff --git a/mindus/assets/blocks/distribution/junction.png b/assets/blocks/distribution/junction.png Binary files differindex 0cdb020..0cdb020 100644 --- a/mindus/assets/blocks/distribution/junction.png +++ b/assets/blocks/distribution/junction.png diff --git a/assets/blocks/distribution/mass-driver-base.png b/assets/blocks/distribution/mass-driver-base.png Binary files differnew file mode 100644 index 0000000..23ad8cc --- /dev/null +++ b/assets/blocks/distribution/mass-driver-base.png diff --git a/assets/blocks/distribution/mass-driver.png b/assets/blocks/distribution/mass-driver.png Binary files differnew file mode 100644 index 0000000..6c65bf1 --- /dev/null +++ b/assets/blocks/distribution/mass-driver.png diff --git a/assets/blocks/distribution/overflow-gate.png b/assets/blocks/distribution/overflow-gate.png Binary files differnew file mode 100644 index 0000000..534859f --- /dev/null +++ b/assets/blocks/distribution/overflow-gate.png diff --git a/assets/blocks/distribution/phase-conveyor-arrow.png b/assets/blocks/distribution/phase-conveyor-arrow.png Binary files differnew file mode 100644 index 0000000..22198e8 --- /dev/null +++ b/assets/blocks/distribution/phase-conveyor-arrow.png diff --git a/assets/blocks/distribution/phase-conveyor-bridge.png b/assets/blocks/distribution/phase-conveyor-bridge.png Binary files differnew file mode 100644 index 0000000..176c3fc --- /dev/null +++ b/assets/blocks/distribution/phase-conveyor-bridge.png diff --git a/assets/blocks/distribution/phase-conveyor-end.png b/assets/blocks/distribution/phase-conveyor-end.png Binary files differnew file mode 100644 index 0000000..090155a --- /dev/null +++ b/assets/blocks/distribution/phase-conveyor-end.png diff --git a/assets/blocks/distribution/phase-conveyor.png b/assets/blocks/distribution/phase-conveyor.png Binary files differnew file mode 100644 index 0000000..6911b37 --- /dev/null +++ b/assets/blocks/distribution/phase-conveyor.png diff --git a/mindus/assets/blocks/distribution/router.png b/assets/blocks/distribution/router.png Binary files differindex c45605f..c45605f 100644 --- a/mindus/assets/blocks/distribution/router.png +++ b/assets/blocks/distribution/router.png diff --git a/assets/blocks/distribution/sorter.png b/assets/blocks/distribution/sorter.png Binary files differnew file mode 100644 index 0000000..9345206 --- /dev/null +++ b/assets/blocks/distribution/sorter.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-0.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-0.png Binary files differnew file mode 100644 index 0000000..2dc44db --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-0.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-1.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-1.png Binary files differnew file mode 100644 index 0000000..e6d57f6 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-1.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-2.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-2.png Binary files differnew file mode 100644 index 0000000..5c0272b --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-2.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png Binary files differnew file mode 100644 index 0000000..7057c6c --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png Binary files differnew file mode 100644 index 0000000..cc9890d --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png Binary files differnew file mode 100644 index 0000000..0abdfc5 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png diff --git a/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png Binary files differnew file mode 100644 index 0000000..34924be --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-stack.png b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-stack.png Binary files differindex dd3cd77..a0e5afe 100644 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-stack.png +++ b/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-stack.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-0.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-0.png Binary files differnew file mode 100644 index 0000000..67e479f --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-0.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-1.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-1.png Binary files differnew file mode 100644 index 0000000..3f3cf2d --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-1.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png Binary files differnew file mode 100644 index 0000000..5ef6959 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png Binary files differnew file mode 100644 index 0000000..ccc72e5 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png Binary files differnew file mode 100644 index 0000000..05d6385 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png Binary files differnew file mode 100644 index 0000000..8ae4559 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png diff --git a/assets/blocks/distribution/stack-conveyors/surge-conveyor-stack.png b/assets/blocks/distribution/stack-conveyors/surge-conveyor-stack.png Binary files differnew file mode 100644 index 0000000..3e82595 --- /dev/null +++ b/assets/blocks/distribution/stack-conveyors/surge-conveyor-stack.png diff --git a/assets/blocks/distribution/underflow-gate.png b/assets/blocks/distribution/underflow-gate.png Binary files differnew file mode 100644 index 0000000..92b6f26 --- /dev/null +++ b/assets/blocks/distribution/underflow-gate.png diff --git a/assets/blocks/distribution/unit-cargo-unload-point-top.png b/assets/blocks/distribution/unit-cargo-unload-point-top.png Binary files differnew file mode 100644 index 0000000..f447882 --- /dev/null +++ b/assets/blocks/distribution/unit-cargo-unload-point-top.png diff --git a/assets/blocks/distribution/unit-cargo-unload-point.png b/assets/blocks/distribution/unit-cargo-unload-point.png Binary files differnew file mode 100644 index 0000000..24cae6c --- /dev/null +++ b/assets/blocks/distribution/unit-cargo-unload-point.png diff --git a/assets/blocks/drills/blast-drill.png b/assets/blocks/drills/blast-drill.png Binary files differnew file mode 100644 index 0000000..13ff22b --- /dev/null +++ b/assets/blocks/drills/blast-drill.png diff --git a/assets/blocks/drills/cliff-crusher-rotator.png b/assets/blocks/drills/cliff-crusher-rotator.png Binary files differnew file mode 100644 index 0000000..6db2c8b --- /dev/null +++ b/assets/blocks/drills/cliff-crusher-rotator.png diff --git a/mindus/assets/blocks/drills/cliff-crusher-top.png b/assets/blocks/drills/cliff-crusher-top.png Binary files differindex d883816..d883816 100644 --- a/mindus/assets/blocks/drills/cliff-crusher-top.png +++ b/assets/blocks/drills/cliff-crusher-top.png diff --git a/assets/blocks/drills/cliff-crusher.png b/assets/blocks/drills/cliff-crusher.png Binary files differnew file mode 100644 index 0000000..3c82a82 --- /dev/null +++ b/assets/blocks/drills/cliff-crusher.png diff --git a/assets/blocks/drills/eruption-drill.png b/assets/blocks/drills/eruption-drill.png Binary files differnew file mode 100644 index 0000000..0b43aa7 --- /dev/null +++ b/assets/blocks/drills/eruption-drill.png diff --git a/assets/blocks/drills/impact-drill.png b/assets/blocks/drills/impact-drill.png Binary files differnew file mode 100644 index 0000000..62be316 --- /dev/null +++ b/assets/blocks/drills/impact-drill.png diff --git a/assets/blocks/drills/large-plasma-bore-top.png b/assets/blocks/drills/large-plasma-bore-top.png Binary files differnew file mode 100644 index 0000000..6bc63a7 --- /dev/null +++ b/assets/blocks/drills/large-plasma-bore-top.png diff --git a/assets/blocks/drills/large-plasma-bore.png b/assets/blocks/drills/large-plasma-bore.png Binary files differnew file mode 100644 index 0000000..704a773 --- /dev/null +++ b/assets/blocks/drills/large-plasma-bore.png diff --git a/assets/blocks/drills/laser-drill.png b/assets/blocks/drills/laser-drill.png Binary files differnew file mode 100644 index 0000000..b0f94cb --- /dev/null +++ b/assets/blocks/drills/laser-drill.png diff --git a/assets/blocks/drills/mechanical-drill.png b/assets/blocks/drills/mechanical-drill.png Binary files differnew file mode 100644 index 0000000..354b9b0 --- /dev/null +++ b/assets/blocks/drills/mechanical-drill.png diff --git a/assets/blocks/drills/oil-extractor.png b/assets/blocks/drills/oil-extractor.png Binary files differnew file mode 100644 index 0000000..18e84d7 --- /dev/null +++ b/assets/blocks/drills/oil-extractor.png diff --git a/assets/blocks/drills/plasma-bore-top.png b/assets/blocks/drills/plasma-bore-top.png Binary files differnew file mode 100644 index 0000000..c6cffe7 --- /dev/null +++ b/assets/blocks/drills/plasma-bore-top.png diff --git a/assets/blocks/drills/plasma-bore.png b/assets/blocks/drills/plasma-bore.png Binary files differnew file mode 100644 index 0000000..3fb5950 --- /dev/null +++ b/assets/blocks/drills/plasma-bore.png diff --git a/assets/blocks/drills/pneumatic-drill.png b/assets/blocks/drills/pneumatic-drill.png Binary files differnew file mode 100644 index 0000000..3bbada9 --- /dev/null +++ b/assets/blocks/drills/pneumatic-drill.png diff --git a/assets/blocks/drills/vent-condenser.png b/assets/blocks/drills/vent-condenser.png Binary files differnew file mode 100644 index 0000000..ed715bd --- /dev/null +++ b/assets/blocks/drills/vent-condenser.png diff --git a/assets/blocks/drills/water-extractor.png b/assets/blocks/drills/water-extractor.png Binary files differnew file mode 100644 index 0000000..3579707 --- /dev/null +++ b/assets/blocks/drills/water-extractor.png diff --git a/assets/blocks/environment/arkycite-floor.png b/assets/blocks/environment/arkycite-floor.png Binary files differnew file mode 100644 index 0000000..5ae0096 --- /dev/null +++ b/assets/blocks/environment/arkycite-floor.png diff --git a/assets/blocks/environment/arkyic-boulder.png b/assets/blocks/environment/arkyic-boulder.png Binary files differnew file mode 100644 index 0000000..de89b97 --- /dev/null +++ b/assets/blocks/environment/arkyic-boulder.png diff --git a/assets/blocks/environment/arkyic-stone.png b/assets/blocks/environment/arkyic-stone.png Binary files differnew file mode 100644 index 0000000..5f396a8 --- /dev/null +++ b/assets/blocks/environment/arkyic-stone.png diff --git a/assets/blocks/environment/arkyic-vent.png b/assets/blocks/environment/arkyic-vent.png Binary files differnew file mode 100644 index 0000000..f67cbe3 --- /dev/null +++ b/assets/blocks/environment/arkyic-vent.png diff --git a/assets/blocks/environment/arkyic-wall-large.png b/assets/blocks/environment/arkyic-wall-large.png Binary files differnew file mode 100644 index 0000000..6e1f48a --- /dev/null +++ b/assets/blocks/environment/arkyic-wall-large.png diff --git a/assets/blocks/environment/arkyic-wall.png b/assets/blocks/environment/arkyic-wall.png Binary files differnew file mode 100644 index 0000000..2977b20 --- /dev/null +++ b/assets/blocks/environment/arkyic-wall.png diff --git a/assets/blocks/environment/basalt-boulder.png b/assets/blocks/environment/basalt-boulder.png Binary files differnew file mode 100644 index 0000000..6f4ce91 --- /dev/null +++ b/assets/blocks/environment/basalt-boulder.png diff --git a/assets/blocks/environment/basalt.png b/assets/blocks/environment/basalt.png Binary files differnew file mode 100644 index 0000000..93ee858 --- /dev/null +++ b/assets/blocks/environment/basalt.png diff --git a/assets/blocks/environment/beryllic-boulder.png b/assets/blocks/environment/beryllic-boulder.png Binary files differnew file mode 100644 index 0000000..a039a47 --- /dev/null +++ b/assets/blocks/environment/beryllic-boulder.png diff --git a/assets/blocks/environment/beryllic-stone-wall-large.png b/assets/blocks/environment/beryllic-stone-wall-large.png Binary files differnew file mode 100644 index 0000000..4f6eccf --- /dev/null +++ b/assets/blocks/environment/beryllic-stone-wall-large.png diff --git a/assets/blocks/environment/beryllic-stone-wall.png b/assets/blocks/environment/beryllic-stone-wall.png Binary files differnew file mode 100644 index 0000000..081d262 --- /dev/null +++ b/assets/blocks/environment/beryllic-stone-wall.png diff --git a/assets/blocks/environment/beryllic-stone.png b/assets/blocks/environment/beryllic-stone.png Binary files differnew file mode 100644 index 0000000..6a6720a --- /dev/null +++ b/assets/blocks/environment/beryllic-stone.png diff --git a/assets/blocks/environment/bluemat.png b/assets/blocks/environment/bluemat.png Binary files differnew file mode 100644 index 0000000..e15530a --- /dev/null +++ b/assets/blocks/environment/bluemat.png diff --git a/assets/blocks/environment/boulder.png b/assets/blocks/environment/boulder.png Binary files differnew file mode 100644 index 0000000..a9bf280 --- /dev/null +++ b/assets/blocks/environment/boulder.png diff --git a/assets/blocks/environment/carbon-boulder.png b/assets/blocks/environment/carbon-boulder.png Binary files differnew file mode 100644 index 0000000..48c8efc --- /dev/null +++ b/assets/blocks/environment/carbon-boulder.png diff --git a/assets/blocks/environment/carbon-stone.png b/assets/blocks/environment/carbon-stone.png Binary files differnew file mode 100644 index 0000000..76bde92 --- /dev/null +++ b/assets/blocks/environment/carbon-stone.png diff --git a/assets/blocks/environment/carbon-vent.png b/assets/blocks/environment/carbon-vent.png Binary files differnew file mode 100644 index 0000000..d3e2570 --- /dev/null +++ b/assets/blocks/environment/carbon-vent.png diff --git a/assets/blocks/environment/carbon-wall-large.png b/assets/blocks/environment/carbon-wall-large.png Binary files differnew file mode 100644 index 0000000..653ae35 --- /dev/null +++ b/assets/blocks/environment/carbon-wall-large.png diff --git a/assets/blocks/environment/carbon-wall.png b/assets/blocks/environment/carbon-wall.png Binary files differnew file mode 100644 index 0000000..92a5e81 --- /dev/null +++ b/assets/blocks/environment/carbon-wall.png diff --git a/assets/blocks/environment/char.png b/assets/blocks/environment/char.png Binary files differnew file mode 100644 index 0000000..c6340ed --- /dev/null +++ b/assets/blocks/environment/char.png diff --git a/assets/blocks/environment/core-zone.png b/assets/blocks/environment/core-zone.png Binary files differnew file mode 100644 index 0000000..0a7bf40 --- /dev/null +++ b/assets/blocks/environment/core-zone.png diff --git a/assets/blocks/environment/crater-stone.png b/assets/blocks/environment/crater-stone.png Binary files differnew file mode 100644 index 0000000..9cfc92f --- /dev/null +++ b/assets/blocks/environment/crater-stone.png diff --git a/assets/blocks/environment/crystal-blocks.png b/assets/blocks/environment/crystal-blocks.png Binary files differnew file mode 100644 index 0000000..0acc3d3 --- /dev/null +++ b/assets/blocks/environment/crystal-blocks.png diff --git a/assets/blocks/environment/crystal-cluster.png b/assets/blocks/environment/crystal-cluster.png Binary files differnew file mode 100644 index 0000000..b3454ef --- /dev/null +++ b/assets/blocks/environment/crystal-cluster.png diff --git a/mindus/assets/blocks/environment/crystal-floor1.png b/assets/blocks/environment/crystal-floor.png Binary files differindex 4ff6b86..4ff6b86 100644 --- a/mindus/assets/blocks/environment/crystal-floor1.png +++ b/assets/blocks/environment/crystal-floor.png diff --git a/assets/blocks/environment/crystal-orbs.png b/assets/blocks/environment/crystal-orbs.png Binary files differnew file mode 100644 index 0000000..4055f3b --- /dev/null +++ b/assets/blocks/environment/crystal-orbs.png diff --git a/assets/blocks/environment/crystalline-boulder.png b/assets/blocks/environment/crystalline-boulder.png Binary files differnew file mode 100644 index 0000000..462dccd --- /dev/null +++ b/assets/blocks/environment/crystalline-boulder.png diff --git a/assets/blocks/environment/crystalline-stone-wall-large.png b/assets/blocks/environment/crystalline-stone-wall-large.png Binary files differnew file mode 100644 index 0000000..17962ee --- /dev/null +++ b/assets/blocks/environment/crystalline-stone-wall-large.png diff --git a/assets/blocks/environment/crystalline-stone-wall.png b/assets/blocks/environment/crystalline-stone-wall.png Binary files differnew file mode 100644 index 0000000..427bf7f --- /dev/null +++ b/assets/blocks/environment/crystalline-stone-wall.png diff --git a/assets/blocks/environment/crystalline-stone.png b/assets/blocks/environment/crystalline-stone.png Binary files differnew file mode 100644 index 0000000..01fe740 --- /dev/null +++ b/assets/blocks/environment/crystalline-stone.png diff --git a/assets/blocks/environment/crystalline-vent.png b/assets/blocks/environment/crystalline-vent.png Binary files differnew file mode 100644 index 0000000..2de8864 --- /dev/null +++ b/assets/blocks/environment/crystalline-vent.png diff --git a/assets/blocks/environment/dacite-boulder.png b/assets/blocks/environment/dacite-boulder.png Binary files differnew file mode 100644 index 0000000..1a550b2 --- /dev/null +++ b/assets/blocks/environment/dacite-boulder.png diff --git a/assets/blocks/environment/dacite-wall-large.png b/assets/blocks/environment/dacite-wall-large.png Binary files differnew file mode 100644 index 0000000..a1d94c5 --- /dev/null +++ b/assets/blocks/environment/dacite-wall-large.png diff --git a/assets/blocks/environment/dacite-wall.png b/assets/blocks/environment/dacite-wall.png Binary files differnew file mode 100644 index 0000000..23ef79d --- /dev/null +++ b/assets/blocks/environment/dacite-wall.png diff --git a/assets/blocks/environment/dacite.png b/assets/blocks/environment/dacite.png Binary files differnew file mode 100644 index 0000000..470473a --- /dev/null +++ b/assets/blocks/environment/dacite.png diff --git a/assets/blocks/environment/dark-metal-large.png b/assets/blocks/environment/dark-metal-large.png Binary files differnew file mode 100644 index 0000000..aba348c --- /dev/null +++ b/assets/blocks/environment/dark-metal-large.png diff --git a/assets/blocks/environment/dark-metal.png b/assets/blocks/environment/dark-metal.png Binary files differnew file mode 100644 index 0000000..2adeae1 --- /dev/null +++ b/assets/blocks/environment/dark-metal.png diff --git a/assets/blocks/environment/dark-panel-1.png b/assets/blocks/environment/dark-panel-1.png Binary files differnew file mode 100644 index 0000000..04e6b15 --- /dev/null +++ b/assets/blocks/environment/dark-panel-1.png diff --git a/assets/blocks/environment/dark-panel-2.png b/assets/blocks/environment/dark-panel-2.png Binary files differnew file mode 100644 index 0000000..adbc44f --- /dev/null +++ b/assets/blocks/environment/dark-panel-2.png diff --git a/assets/blocks/environment/dark-panel-3.png b/assets/blocks/environment/dark-panel-3.png Binary files differnew file mode 100644 index 0000000..7a3c38e --- /dev/null +++ b/assets/blocks/environment/dark-panel-3.png diff --git a/assets/blocks/environment/dark-panel-4.png b/assets/blocks/environment/dark-panel-4.png Binary files differnew file mode 100644 index 0000000..3030229 --- /dev/null +++ b/assets/blocks/environment/dark-panel-4.png diff --git a/mindus/assets/blocks/environment/dark-panel-5.png b/assets/blocks/environment/dark-panel-5.png Binary files differindex c956695..c956695 100644 --- a/mindus/assets/blocks/environment/dark-panel-5.png +++ b/assets/blocks/environment/dark-panel-5.png diff --git a/assets/blocks/environment/dark-panel-6.png b/assets/blocks/environment/dark-panel-6.png Binary files differnew file mode 100644 index 0000000..d7d3ba2 --- /dev/null +++ b/assets/blocks/environment/dark-panel-6.png diff --git a/assets/blocks/environment/darksand-tainted-water.png b/assets/blocks/environment/darksand-tainted-water.png Binary files differnew file mode 100644 index 0000000..7f74cca --- /dev/null +++ b/assets/blocks/environment/darksand-tainted-water.png diff --git a/assets/blocks/environment/darksand-water.png b/assets/blocks/environment/darksand-water.png Binary files differnew file mode 100644 index 0000000..61c769d --- /dev/null +++ b/assets/blocks/environment/darksand-water.png diff --git a/assets/blocks/environment/darksand.png b/assets/blocks/environment/darksand.png Binary files differnew file mode 100644 index 0000000..ef61797 --- /dev/null +++ b/assets/blocks/environment/darksand.png diff --git a/assets/blocks/environment/deep-tainted-water.png b/assets/blocks/environment/deep-tainted-water.png Binary files differnew file mode 100644 index 0000000..e06ab6a --- /dev/null +++ b/assets/blocks/environment/deep-tainted-water.png diff --git a/assets/blocks/environment/deep-water.png b/assets/blocks/environment/deep-water.png Binary files differnew file mode 100644 index 0000000..ff4ee69 --- /dev/null +++ b/assets/blocks/environment/deep-water.png diff --git a/assets/blocks/environment/dense-red-stone.png b/assets/blocks/environment/dense-red-stone.png Binary files differnew file mode 100644 index 0000000..40d1694 --- /dev/null +++ b/assets/blocks/environment/dense-red-stone.png diff --git a/assets/blocks/environment/dirt-wall-large.png b/assets/blocks/environment/dirt-wall-large.png Binary files differnew file mode 100644 index 0000000..7e5f8f0 --- /dev/null +++ b/assets/blocks/environment/dirt-wall-large.png diff --git a/mindus/assets/blocks/environment/dirt-wall2.png b/assets/blocks/environment/dirt-wall.png Binary files differindex f76d30d..f76d30d 100644 --- a/mindus/assets/blocks/environment/dirt-wall2.png +++ b/assets/blocks/environment/dirt-wall.png diff --git a/assets/blocks/environment/dirt.png b/assets/blocks/environment/dirt.png Binary files differnew file mode 100644 index 0000000..1f2b788 --- /dev/null +++ b/assets/blocks/environment/dirt.png diff --git a/assets/blocks/environment/dune-wall-large.png b/assets/blocks/environment/dune-wall-large.png Binary files differnew file mode 100644 index 0000000..737b09d --- /dev/null +++ b/assets/blocks/environment/dune-wall-large.png diff --git a/assets/blocks/environment/dune-wall.png b/assets/blocks/environment/dune-wall.png Binary files differnew file mode 100644 index 0000000..22341de --- /dev/null +++ b/assets/blocks/environment/dune-wall.png diff --git a/assets/blocks/environment/ferric-boulder.png b/assets/blocks/environment/ferric-boulder.png Binary files differnew file mode 100644 index 0000000..e7221a8 --- /dev/null +++ b/assets/blocks/environment/ferric-boulder.png diff --git a/assets/blocks/environment/ferric-craters.png b/assets/blocks/environment/ferric-craters.png Binary files differnew file mode 100644 index 0000000..83155f5 --- /dev/null +++ b/assets/blocks/environment/ferric-craters.png diff --git a/assets/blocks/environment/ferric-stone-wall-large.png b/assets/blocks/environment/ferric-stone-wall-large.png Binary files differnew file mode 100644 index 0000000..a0bbb83 --- /dev/null +++ b/assets/blocks/environment/ferric-stone-wall-large.png diff --git a/mindus/assets/blocks/environment/ferric-stone-wall2.png b/assets/blocks/environment/ferric-stone-wall.png Binary files differindex fac2fcc..fac2fcc 100644 --- a/mindus/assets/blocks/environment/ferric-stone-wall2.png +++ b/assets/blocks/environment/ferric-stone-wall.png diff --git a/assets/blocks/environment/ferric-stone.png b/assets/blocks/environment/ferric-stone.png Binary files differnew file mode 100644 index 0000000..2dabf3d --- /dev/null +++ b/assets/blocks/environment/ferric-stone.png diff --git a/assets/blocks/environment/graphitic-wall-large.png b/assets/blocks/environment/graphitic-wall-large.png Binary files differnew file mode 100644 index 0000000..0148959 --- /dev/null +++ b/assets/blocks/environment/graphitic-wall-large.png diff --git a/assets/blocks/environment/graphitic-wall.png b/assets/blocks/environment/graphitic-wall.png Binary files differnew file mode 100644 index 0000000..0d5bbfa --- /dev/null +++ b/assets/blocks/environment/graphitic-wall.png diff --git a/assets/blocks/environment/grass.png b/assets/blocks/environment/grass.png Binary files differnew file mode 100644 index 0000000..662dc7b --- /dev/null +++ b/assets/blocks/environment/grass.png diff --git a/assets/blocks/environment/hotrock.png b/assets/blocks/environment/hotrock.png Binary files differnew file mode 100644 index 0000000..1aa6bb3 --- /dev/null +++ b/assets/blocks/environment/hotrock.png diff --git a/assets/blocks/environment/ice-snow.png b/assets/blocks/environment/ice-snow.png Binary files differnew file mode 100644 index 0000000..3711749 --- /dev/null +++ b/assets/blocks/environment/ice-snow.png diff --git a/assets/blocks/environment/ice-wall-large.png b/assets/blocks/environment/ice-wall-large.png Binary files differnew file mode 100644 index 0000000..e0ffd14 --- /dev/null +++ b/assets/blocks/environment/ice-wall-large.png diff --git a/assets/blocks/environment/ice-wall.png b/assets/blocks/environment/ice-wall.png Binary files differnew file mode 100644 index 0000000..3e38dbc --- /dev/null +++ b/assets/blocks/environment/ice-wall.png diff --git a/assets/blocks/environment/ice.png b/assets/blocks/environment/ice.png Binary files differnew file mode 100644 index 0000000..664678d --- /dev/null +++ b/assets/blocks/environment/ice.png diff --git a/assets/blocks/environment/magmarock.png b/assets/blocks/environment/magmarock.png Binary files differnew file mode 100644 index 0000000..45626c1 --- /dev/null +++ b/assets/blocks/environment/magmarock.png diff --git a/assets/blocks/environment/metal-floor-2.png b/assets/blocks/environment/metal-floor-2.png Binary files differnew file mode 100644 index 0000000..4b0569e --- /dev/null +++ b/assets/blocks/environment/metal-floor-2.png diff --git a/assets/blocks/environment/metal-floor-3.png b/assets/blocks/environment/metal-floor-3.png Binary files differnew file mode 100644 index 0000000..38ecedb --- /dev/null +++ b/assets/blocks/environment/metal-floor-3.png diff --git a/mindus/assets/blocks/environment/metal-floor-4.png b/assets/blocks/environment/metal-floor-4.png Binary files differindex 6c17203..6c17203 100644 --- a/mindus/assets/blocks/environment/metal-floor-4.png +++ b/assets/blocks/environment/metal-floor-4.png diff --git a/assets/blocks/environment/metal-floor-5.png b/assets/blocks/environment/metal-floor-5.png Binary files differnew file mode 100644 index 0000000..ae13ed0 --- /dev/null +++ b/assets/blocks/environment/metal-floor-5.png diff --git a/assets/blocks/environment/metal-floor-damaged.png b/assets/blocks/environment/metal-floor-damaged.png Binary files differnew file mode 100644 index 0000000..5f60992 --- /dev/null +++ b/assets/blocks/environment/metal-floor-damaged.png diff --git a/assets/blocks/environment/metal-floor.png b/assets/blocks/environment/metal-floor.png Binary files differnew file mode 100644 index 0000000..c8483c7 --- /dev/null +++ b/assets/blocks/environment/metal-floor.png diff --git a/assets/blocks/environment/molten-slag.png b/assets/blocks/environment/molten-slag.png Binary files differnew file mode 100644 index 0000000..1d41627 --- /dev/null +++ b/assets/blocks/environment/molten-slag.png diff --git a/assets/blocks/environment/moss.png b/assets/blocks/environment/moss.png Binary files differnew file mode 100644 index 0000000..a835175 --- /dev/null +++ b/assets/blocks/environment/moss.png diff --git a/assets/blocks/environment/mud.png b/assets/blocks/environment/mud.png Binary files differnew file mode 100644 index 0000000..834c1ee --- /dev/null +++ b/assets/blocks/environment/mud.png diff --git a/assets/blocks/environment/ore-beryllium.png b/assets/blocks/environment/ore-beryllium.png Binary files differnew file mode 100644 index 0000000..f44c8aa --- /dev/null +++ b/assets/blocks/environment/ore-beryllium.png diff --git a/assets/blocks/environment/ore-coal.png b/assets/blocks/environment/ore-coal.png Binary files differnew file mode 100644 index 0000000..1c81d5f --- /dev/null +++ b/assets/blocks/environment/ore-coal.png diff --git a/assets/blocks/environment/ore-copper.png b/assets/blocks/environment/ore-copper.png Binary files differnew file mode 100644 index 0000000..2bc09fb --- /dev/null +++ b/assets/blocks/environment/ore-copper.png diff --git a/assets/blocks/environment/ore-crystal-thorium.png b/assets/blocks/environment/ore-crystal-thorium.png Binary files differnew file mode 100644 index 0000000..82bd3f2 --- /dev/null +++ b/assets/blocks/environment/ore-crystal-thorium.png diff --git a/assets/blocks/environment/ore-lead.png b/assets/blocks/environment/ore-lead.png Binary files differnew file mode 100644 index 0000000..0058d07 --- /dev/null +++ b/assets/blocks/environment/ore-lead.png diff --git a/assets/blocks/environment/ore-scrap.png b/assets/blocks/environment/ore-scrap.png Binary files differnew file mode 100644 index 0000000..27f40ac --- /dev/null +++ b/assets/blocks/environment/ore-scrap.png diff --git a/assets/blocks/environment/ore-thorium.png b/assets/blocks/environment/ore-thorium.png Binary files differnew file mode 100644 index 0000000..f374c01 --- /dev/null +++ b/assets/blocks/environment/ore-thorium.png diff --git a/assets/blocks/environment/ore-titanium.png b/assets/blocks/environment/ore-titanium.png Binary files differnew file mode 100644 index 0000000..944c4ff --- /dev/null +++ b/assets/blocks/environment/ore-titanium.png diff --git a/assets/blocks/environment/ore-tungsten.png b/assets/blocks/environment/ore-tungsten.png Binary files differnew file mode 100644 index 0000000..10d2923 --- /dev/null +++ b/assets/blocks/environment/ore-tungsten.png diff --git a/assets/blocks/environment/ore-wall-beryllium.png b/assets/blocks/environment/ore-wall-beryllium.png Binary files differnew file mode 100644 index 0000000..a1116d2 --- /dev/null +++ b/assets/blocks/environment/ore-wall-beryllium.png diff --git a/assets/blocks/environment/ore-wall-thorium.png b/assets/blocks/environment/ore-wall-thorium.png Binary files differnew file mode 100644 index 0000000..32b255a --- /dev/null +++ b/assets/blocks/environment/ore-wall-thorium.png diff --git a/assets/blocks/environment/ore-wall-tungsten.png b/assets/blocks/environment/ore-wall-tungsten.png Binary files differnew file mode 100644 index 0000000..8c1b599 --- /dev/null +++ b/assets/blocks/environment/ore-wall-tungsten.png diff --git a/assets/blocks/environment/pebbles.png b/assets/blocks/environment/pebbles.png Binary files differnew file mode 100644 index 0000000..03b56d6 --- /dev/null +++ b/assets/blocks/environment/pebbles.png diff --git a/assets/blocks/environment/pine.png b/assets/blocks/environment/pine.png Binary files differnew file mode 100644 index 0000000..dd252cc --- /dev/null +++ b/assets/blocks/environment/pine.png diff --git a/assets/blocks/environment/pooled-cryofluid.png b/assets/blocks/environment/pooled-cryofluid.png Binary files differnew file mode 100644 index 0000000..aa36067 --- /dev/null +++ b/assets/blocks/environment/pooled-cryofluid.png diff --git a/assets/blocks/environment/pur-bush.png b/assets/blocks/environment/pur-bush.png Binary files differnew file mode 100644 index 0000000..24fee97 --- /dev/null +++ b/assets/blocks/environment/pur-bush.png diff --git a/assets/blocks/environment/red-diamond-wall.png b/assets/blocks/environment/red-diamond-wall.png Binary files differnew file mode 100644 index 0000000..b751674 --- /dev/null +++ b/assets/blocks/environment/red-diamond-wall.png diff --git a/assets/blocks/environment/red-ice-boulder.png b/assets/blocks/environment/red-ice-boulder.png Binary files differnew file mode 100644 index 0000000..4ad47a5 --- /dev/null +++ b/assets/blocks/environment/red-ice-boulder.png diff --git a/assets/blocks/environment/red-ice-wall-large.png b/assets/blocks/environment/red-ice-wall-large.png Binary files differnew file mode 100644 index 0000000..7fe0b04 --- /dev/null +++ b/assets/blocks/environment/red-ice-wall-large.png diff --git a/assets/blocks/environment/red-ice-wall.png b/assets/blocks/environment/red-ice-wall.png Binary files differnew file mode 100644 index 0000000..048c572 --- /dev/null +++ b/assets/blocks/environment/red-ice-wall.png diff --git a/assets/blocks/environment/red-ice.png b/assets/blocks/environment/red-ice.png Binary files differnew file mode 100644 index 0000000..d54cf8a --- /dev/null +++ b/assets/blocks/environment/red-ice.png diff --git a/assets/blocks/environment/red-stone-boulder.png b/assets/blocks/environment/red-stone-boulder.png Binary files differnew file mode 100644 index 0000000..2770255 --- /dev/null +++ b/assets/blocks/environment/red-stone-boulder.png diff --git a/assets/blocks/environment/red-stone-vent.png b/assets/blocks/environment/red-stone-vent.png Binary files differnew file mode 100644 index 0000000..b71ab18 --- /dev/null +++ b/assets/blocks/environment/red-stone-vent.png diff --git a/assets/blocks/environment/red-stone-wall-large.png b/assets/blocks/environment/red-stone-wall-large.png Binary files differnew file mode 100644 index 0000000..1cb7808 --- /dev/null +++ b/assets/blocks/environment/red-stone-wall-large.png diff --git a/mindus/assets/blocks/environment/red-stone-wall3.png b/assets/blocks/environment/red-stone-wall.png Binary files differindex 9c9182c..9c9182c 100644 --- a/mindus/assets/blocks/environment/red-stone-wall3.png +++ b/assets/blocks/environment/red-stone-wall.png diff --git a/assets/blocks/environment/red-stone.png b/assets/blocks/environment/red-stone.png Binary files differnew file mode 100644 index 0000000..66e5b06 --- /dev/null +++ b/assets/blocks/environment/red-stone.png diff --git a/assets/blocks/environment/redmat.png b/assets/blocks/environment/redmat.png Binary files differnew file mode 100644 index 0000000..f9df183 --- /dev/null +++ b/assets/blocks/environment/redmat.png diff --git a/assets/blocks/environment/redweed.png b/assets/blocks/environment/redweed.png Binary files differnew file mode 100644 index 0000000..2ac97d5 --- /dev/null +++ b/assets/blocks/environment/redweed.png diff --git a/assets/blocks/environment/regolith-wall-large.png b/assets/blocks/environment/regolith-wall-large.png Binary files differnew file mode 100644 index 0000000..271ed82 --- /dev/null +++ b/assets/blocks/environment/regolith-wall-large.png diff --git a/assets/blocks/environment/regolith-wall.png b/assets/blocks/environment/regolith-wall.png Binary files differnew file mode 100644 index 0000000..a8b0ec4 --- /dev/null +++ b/assets/blocks/environment/regolith-wall.png diff --git a/assets/blocks/environment/regolith.png b/assets/blocks/environment/regolith.png Binary files differnew file mode 100644 index 0000000..cb318b5 --- /dev/null +++ b/assets/blocks/environment/regolith.png diff --git a/assets/blocks/environment/rhyolite-boulder.png b/assets/blocks/environment/rhyolite-boulder.png Binary files differnew file mode 100644 index 0000000..26bb4e4 --- /dev/null +++ b/assets/blocks/environment/rhyolite-boulder.png diff --git a/assets/blocks/environment/rhyolite-crater.png b/assets/blocks/environment/rhyolite-crater.png Binary files differnew file mode 100644 index 0000000..e35a1b3 --- /dev/null +++ b/assets/blocks/environment/rhyolite-crater.png diff --git a/assets/blocks/environment/rhyolite-vent.png b/assets/blocks/environment/rhyolite-vent.png Binary files differnew file mode 100644 index 0000000..d7b7ed0 --- /dev/null +++ b/assets/blocks/environment/rhyolite-vent.png diff --git a/assets/blocks/environment/rhyolite-wall-large.png b/assets/blocks/environment/rhyolite-wall-large.png Binary files differnew file mode 100644 index 0000000..187550b --- /dev/null +++ b/assets/blocks/environment/rhyolite-wall-large.png diff --git a/assets/blocks/environment/rhyolite-wall.png b/assets/blocks/environment/rhyolite-wall.png Binary files differnew file mode 100644 index 0000000..5b84e45 --- /dev/null +++ b/assets/blocks/environment/rhyolite-wall.png diff --git a/assets/blocks/environment/rhyolite.png b/assets/blocks/environment/rhyolite.png Binary files differnew file mode 100644 index 0000000..37fba67 --- /dev/null +++ b/assets/blocks/environment/rhyolite.png diff --git a/assets/blocks/environment/rough-rhyolite.png b/assets/blocks/environment/rough-rhyolite.png Binary files differnew file mode 100644 index 0000000..9700fff --- /dev/null +++ b/assets/blocks/environment/rough-rhyolite.png diff --git a/mindus/assets/blocks/environment/salt-wall-large.png b/assets/blocks/environment/salt-wall-large.png Binary files differindex 48aa491..48aa491 100644 --- a/mindus/assets/blocks/environment/salt-wall-large.png +++ b/assets/blocks/environment/salt-wall-large.png diff --git a/assets/blocks/environment/salt-wall.png b/assets/blocks/environment/salt-wall.png Binary files differnew file mode 100644 index 0000000..037a1ce --- /dev/null +++ b/assets/blocks/environment/salt-wall.png diff --git a/assets/blocks/environment/salt.png b/assets/blocks/environment/salt.png Binary files differnew file mode 100644 index 0000000..a693c13 --- /dev/null +++ b/assets/blocks/environment/salt.png diff --git a/assets/blocks/environment/sand-boulder.png b/assets/blocks/environment/sand-boulder.png Binary files differnew file mode 100644 index 0000000..3019018 --- /dev/null +++ b/assets/blocks/environment/sand-boulder.png diff --git a/assets/blocks/environment/sand-floor.png b/assets/blocks/environment/sand-floor.png Binary files differnew file mode 100644 index 0000000..9c5f4e9 --- /dev/null +++ b/assets/blocks/environment/sand-floor.png diff --git a/assets/blocks/environment/sand-wall-large.png b/assets/blocks/environment/sand-wall-large.png Binary files differnew file mode 100644 index 0000000..eed7bc9 --- /dev/null +++ b/assets/blocks/environment/sand-wall-large.png diff --git a/assets/blocks/environment/sand-wall.png b/assets/blocks/environment/sand-wall.png Binary files differnew file mode 100644 index 0000000..a67d570 --- /dev/null +++ b/assets/blocks/environment/sand-wall.png diff --git a/assets/blocks/environment/sand-water.png b/assets/blocks/environment/sand-water.png Binary files differnew file mode 100644 index 0000000..0ff663c --- /dev/null +++ b/assets/blocks/environment/sand-water.png diff --git a/assets/blocks/environment/shale-boulder.png b/assets/blocks/environment/shale-boulder.png Binary files differnew file mode 100644 index 0000000..b12a026 --- /dev/null +++ b/assets/blocks/environment/shale-boulder.png diff --git a/assets/blocks/environment/shale-wall-large.png b/assets/blocks/environment/shale-wall-large.png Binary files differnew file mode 100644 index 0000000..0bdf3e2 --- /dev/null +++ b/assets/blocks/environment/shale-wall-large.png diff --git a/assets/blocks/environment/shale-wall.png b/assets/blocks/environment/shale-wall.png Binary files differnew file mode 100644 index 0000000..a102590 --- /dev/null +++ b/assets/blocks/environment/shale-wall.png diff --git a/assets/blocks/environment/shale.png b/assets/blocks/environment/shale.png Binary files differnew file mode 100644 index 0000000..a0469bc --- /dev/null +++ b/assets/blocks/environment/shale.png diff --git a/assets/blocks/environment/shallow-water.png b/assets/blocks/environment/shallow-water.png Binary files differnew file mode 100644 index 0000000..16dc4d0 --- /dev/null +++ b/assets/blocks/environment/shallow-water.png diff --git a/assets/blocks/environment/shrubs-large.png b/assets/blocks/environment/shrubs-large.png Binary files differnew file mode 100644 index 0000000..26fb5d3 --- /dev/null +++ b/assets/blocks/environment/shrubs-large.png diff --git a/assets/blocks/environment/shrubs.png b/assets/blocks/environment/shrubs.png Binary files differnew file mode 100644 index 0000000..635a0d2 --- /dev/null +++ b/assets/blocks/environment/shrubs.png diff --git a/assets/blocks/environment/snow-boulder.png b/assets/blocks/environment/snow-boulder.png Binary files differnew file mode 100644 index 0000000..f0cd270 --- /dev/null +++ b/assets/blocks/environment/snow-boulder.png diff --git a/assets/blocks/environment/snow-pine.png b/assets/blocks/environment/snow-pine.png Binary files differnew file mode 100644 index 0000000..bb2d115 --- /dev/null +++ b/assets/blocks/environment/snow-pine.png diff --git a/assets/blocks/environment/snow-wall-large.png b/assets/blocks/environment/snow-wall-large.png Binary files differnew file mode 100644 index 0000000..d597a66 --- /dev/null +++ b/assets/blocks/environment/snow-wall-large.png diff --git a/assets/blocks/environment/snow-wall.png b/assets/blocks/environment/snow-wall.png Binary files differnew file mode 100644 index 0000000..718cff7 --- /dev/null +++ b/assets/blocks/environment/snow-wall.png diff --git a/assets/blocks/environment/snow.png b/assets/blocks/environment/snow.png Binary files differnew file mode 100644 index 0000000..afad902 --- /dev/null +++ b/assets/blocks/environment/snow.png diff --git a/mindus/assets/blocks/environment/space.png b/assets/blocks/environment/space.png Binary files differindex bccf464..bccf464 100644 --- a/mindus/assets/blocks/environment/space.png +++ b/assets/blocks/environment/space.png diff --git a/assets/blocks/environment/spawn.png b/assets/blocks/environment/spawn.png Binary files differnew file mode 100644 index 0000000..01da5b5 --- /dev/null +++ b/assets/blocks/environment/spawn.png diff --git a/assets/blocks/environment/spore-cluster.png b/assets/blocks/environment/spore-cluster.png Binary files differnew file mode 100644 index 0000000..4b272a3 --- /dev/null +++ b/assets/blocks/environment/spore-cluster.png diff --git a/assets/blocks/environment/spore-moss.png b/assets/blocks/environment/spore-moss.png Binary files differnew file mode 100644 index 0000000..3661e8b --- /dev/null +++ b/assets/blocks/environment/spore-moss.png diff --git a/assets/blocks/environment/spore-pine.png b/assets/blocks/environment/spore-pine.png Binary files differnew file mode 100644 index 0000000..14f6f59 --- /dev/null +++ b/assets/blocks/environment/spore-pine.png diff --git a/assets/blocks/environment/spore-wall-large.png b/assets/blocks/environment/spore-wall-large.png Binary files differnew file mode 100644 index 0000000..3e5b976 --- /dev/null +++ b/assets/blocks/environment/spore-wall-large.png diff --git a/assets/blocks/environment/spore-wall.png b/assets/blocks/environment/spore-wall.png Binary files differnew file mode 100644 index 0000000..b2dec36 --- /dev/null +++ b/assets/blocks/environment/spore-wall.png diff --git a/assets/blocks/environment/stone-wall-large.png b/assets/blocks/environment/stone-wall-large.png Binary files differnew file mode 100644 index 0000000..26173e9 --- /dev/null +++ b/assets/blocks/environment/stone-wall-large.png diff --git a/assets/blocks/environment/stone-wall.png b/assets/blocks/environment/stone-wall.png Binary files differnew file mode 100644 index 0000000..39c0d9c --- /dev/null +++ b/assets/blocks/environment/stone-wall.png diff --git a/assets/blocks/environment/stone.png b/assets/blocks/environment/stone.png Binary files differnew file mode 100644 index 0000000..9fdeff0 --- /dev/null +++ b/assets/blocks/environment/stone.png diff --git a/assets/blocks/environment/tainted-water.png b/assets/blocks/environment/tainted-water.png Binary files differnew file mode 100644 index 0000000..244610a --- /dev/null +++ b/assets/blocks/environment/tainted-water.png diff --git a/mindus/assets/blocks/environment/tar.png b/assets/blocks/environment/tar.png Binary files differindex a9bafc3..a9bafc3 100644 --- a/mindus/assets/blocks/environment/tar.png +++ b/assets/blocks/environment/tar.png diff --git a/assets/blocks/environment/tendrils.png b/assets/blocks/environment/tendrils.png Binary files differnew file mode 100644 index 0000000..31727ee --- /dev/null +++ b/assets/blocks/environment/tendrils.png diff --git a/assets/blocks/environment/vibrant-crystal-cluster.png b/assets/blocks/environment/vibrant-crystal-cluster.png Binary files differnew file mode 100644 index 0000000..0f61531 --- /dev/null +++ b/assets/blocks/environment/vibrant-crystal-cluster.png diff --git a/assets/blocks/environment/white-tree-dead.png b/assets/blocks/environment/white-tree-dead.png Binary files differnew file mode 100644 index 0000000..f313de4 --- /dev/null +++ b/assets/blocks/environment/white-tree-dead.png diff --git a/mindus/assets/blocks/environment/white-tree.png b/assets/blocks/environment/white-tree.png Binary files differindex 7daea26..7e6b30e 100644 --- a/mindus/assets/blocks/environment/white-tree.png +++ b/assets/blocks/environment/white-tree.png diff --git a/assets/blocks/environment/yellow-stone-boulder.png b/assets/blocks/environment/yellow-stone-boulder.png Binary files differnew file mode 100644 index 0000000..bafe3b5 --- /dev/null +++ b/assets/blocks/environment/yellow-stone-boulder.png diff --git a/mindus/assets/blocks/environment/yellow-stone-plates3.png b/assets/blocks/environment/yellow-stone-plates.png Binary files differindex 9f8a04b..9f8a04b 100644 --- a/mindus/assets/blocks/environment/yellow-stone-plates3.png +++ b/assets/blocks/environment/yellow-stone-plates.png diff --git a/assets/blocks/environment/yellow-stone-vent.png b/assets/blocks/environment/yellow-stone-vent.png Binary files differnew file mode 100644 index 0000000..effb1ca --- /dev/null +++ b/assets/blocks/environment/yellow-stone-vent.png diff --git a/assets/blocks/environment/yellow-stone-wall-large.png b/assets/blocks/environment/yellow-stone-wall-large.png Binary files differnew file mode 100644 index 0000000..d3189b2 --- /dev/null +++ b/assets/blocks/environment/yellow-stone-wall-large.png diff --git a/mindus/assets/blocks/environment/yellow-stone-wall2.png b/assets/blocks/environment/yellow-stone-wall.png Binary files differindex dc91f82..dc91f82 100644 --- a/mindus/assets/blocks/environment/yellow-stone-wall2.png +++ b/assets/blocks/environment/yellow-stone-wall.png diff --git a/assets/blocks/environment/yellow-stone.png b/assets/blocks/environment/yellow-stone.png Binary files differnew file mode 100644 index 0000000..fb0c640 --- /dev/null +++ b/assets/blocks/environment/yellow-stone.png diff --git a/assets/blocks/environment/yellowcoral.png b/assets/blocks/environment/yellowcoral.png Binary files differnew file mode 100644 index 0000000..5e3d6cc --- /dev/null +++ b/assets/blocks/environment/yellowcoral.png diff --git a/assets/blocks/liquid/bridge-conduit-arrow.png b/assets/blocks/liquid/bridge-conduit-arrow.png Binary files differnew file mode 100644 index 0000000..b8b62bc --- /dev/null +++ b/assets/blocks/liquid/bridge-conduit-arrow.png diff --git a/assets/blocks/liquid/bridge-conduit-bridge.png b/assets/blocks/liquid/bridge-conduit-bridge.png Binary files differnew file mode 100644 index 0000000..5f23ff3 --- /dev/null +++ b/assets/blocks/liquid/bridge-conduit-bridge.png diff --git a/assets/blocks/liquid/bridge-conduit-end.png b/assets/blocks/liquid/bridge-conduit-end.png Binary files differnew file mode 100644 index 0000000..844be19 --- /dev/null +++ b/assets/blocks/liquid/bridge-conduit-end.png diff --git a/assets/blocks/liquid/bridge-conduit.png b/assets/blocks/liquid/bridge-conduit.png Binary files differnew file mode 100644 index 0000000..d57c2bb --- /dev/null +++ b/assets/blocks/liquid/bridge-conduit.png diff --git a/assets/blocks/liquid/conduits/conduit-0-0.png b/assets/blocks/liquid/conduits/conduit-0-0.png Binary files differnew file mode 100644 index 0000000..89e0a19 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-0-0.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-0-1.png b/assets/blocks/liquid/conduits/conduit-0-1.png Binary files differindex 163d8c1..163d8c1 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-0-1.png +++ b/assets/blocks/liquid/conduits/conduit-0-1.png diff --git a/assets/blocks/liquid/conduits/conduit-0-2.png b/assets/blocks/liquid/conduits/conduit-0-2.png Binary files differnew file mode 100644 index 0000000..96b202c --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-0-2.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-0-3.png b/assets/blocks/liquid/conduits/conduit-0-3.png Binary files differindex 02eaeb8..02eaeb8 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-0-3.png +++ b/assets/blocks/liquid/conduits/conduit-0-3.png diff --git a/assets/blocks/liquid/conduits/conduit-1-0-h.png b/assets/blocks/liquid/conduits/conduit-1-0-h.png Binary files differnew file mode 100644 index 0000000..90ef53c --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-0-h.png diff --git a/assets/blocks/liquid/conduits/conduit-1-0.png b/assets/blocks/liquid/conduits/conduit-1-0.png Binary files differnew file mode 100644 index 0000000..dc86dd4 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-0.png diff --git a/assets/blocks/liquid/conduits/conduit-1-1-h.png b/assets/blocks/liquid/conduits/conduit-1-1-h.png Binary files differnew file mode 100644 index 0000000..3e2dec1 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-1-h.png diff --git a/assets/blocks/liquid/conduits/conduit-1-1-v.png b/assets/blocks/liquid/conduits/conduit-1-1-v.png Binary files differnew file mode 100644 index 0000000..ed292b3 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-1-v.png diff --git a/assets/blocks/liquid/conduits/conduit-1-1.png b/assets/blocks/liquid/conduits/conduit-1-1.png Binary files differnew file mode 100644 index 0000000..678f81a --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-1.png diff --git a/assets/blocks/liquid/conduits/conduit-1-2.png b/assets/blocks/liquid/conduits/conduit-1-2.png Binary files differnew file mode 100644 index 0000000..69c4473 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-2.png diff --git a/assets/blocks/liquid/conduits/conduit-1-3.png b/assets/blocks/liquid/conduits/conduit-1-3.png Binary files differnew file mode 100644 index 0000000..90ef53c --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-1-3.png diff --git a/assets/blocks/liquid/conduits/conduit-2-0-h.png b/assets/blocks/liquid/conduits/conduit-2-0-h.png Binary files differnew file mode 100644 index 0000000..d30d5f4 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-2-0-h.png diff --git a/assets/blocks/liquid/conduits/conduit-2-0-v.png b/assets/blocks/liquid/conduits/conduit-2-0-v.png Binary files differnew file mode 100644 index 0000000..67d0833 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-2-0-v.png diff --git a/assets/blocks/liquid/conduits/conduit-2-0.png b/assets/blocks/liquid/conduits/conduit-2-0.png Binary files differnew file mode 100644 index 0000000..e8a7bb0 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-2-0.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-1-h.png b/assets/blocks/liquid/conduits/conduit-2-1-h.png Binary files differindex 8122549..8122549 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-1-h.png +++ b/assets/blocks/liquid/conduits/conduit-2-1-h.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-1.png b/assets/blocks/liquid/conduits/conduit-2-1.png Binary files differindex 92f8b2a..92f8b2a 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-1.png +++ b/assets/blocks/liquid/conduits/conduit-2-1.png diff --git a/assets/blocks/liquid/conduits/conduit-2-2.png b/assets/blocks/liquid/conduits/conduit-2-2.png Binary files differnew file mode 100644 index 0000000..a3bbaab --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-2-2.png diff --git a/assets/blocks/liquid/conduits/conduit-2-3-h.png b/assets/blocks/liquid/conduits/conduit-2-3-h.png Binary files differnew file mode 100644 index 0000000..6815dd9 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-2-3-h.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-3.png b/assets/blocks/liquid/conduits/conduit-2-3.png Binary files differindex 9759bb9..9759bb9 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-3.png +++ b/assets/blocks/liquid/conduits/conduit-2-3.png diff --git a/assets/blocks/liquid/conduits/conduit-3-0-h.png b/assets/blocks/liquid/conduits/conduit-3-0-h.png Binary files differnew file mode 100644 index 0000000..31a4dec --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-3-0-h.png diff --git a/assets/blocks/liquid/conduits/conduit-3-0.png b/assets/blocks/liquid/conduits/conduit-3-0.png Binary files differnew file mode 100644 index 0000000..d27ac67 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-3-0.png diff --git a/assets/blocks/liquid/conduits/conduit-3-1.png b/assets/blocks/liquid/conduits/conduit-3-1.png Binary files differnew file mode 100644 index 0000000..0911857 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-3-1.png diff --git a/assets/blocks/liquid/conduits/conduit-3-3.png b/assets/blocks/liquid/conduits/conduit-3-3.png Binary files differnew file mode 100644 index 0000000..0f57eef --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-3-3.png diff --git a/assets/blocks/liquid/conduits/conduit-4-0.png b/assets/blocks/liquid/conduits/conduit-4-0.png Binary files differnew file mode 100644 index 0000000..3d0f869 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-4-0.png diff --git a/assets/blocks/liquid/conduits/conduit-4-1.png b/assets/blocks/liquid/conduits/conduit-4-1.png Binary files differnew file mode 100644 index 0000000..37cd8a9 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-4-1.png diff --git a/assets/blocks/liquid/conduits/conduit-4-3.png b/assets/blocks/liquid/conduits/conduit-4-3.png Binary files differnew file mode 100644 index 0000000..76501b4 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-4-3.png diff --git a/assets/blocks/liquid/conduits/conduit-bottom-0.png b/assets/blocks/liquid/conduits/conduit-bottom-0.png Binary files differnew file mode 100644 index 0000000..b5f2d11 --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-bottom-0.png diff --git a/assets/blocks/liquid/conduits/conduit-bottom-1.png b/assets/blocks/liquid/conduits/conduit-bottom-1.png Binary files differnew file mode 100644 index 0000000..82bcbcb --- /dev/null +++ b/assets/blocks/liquid/conduits/conduit-bottom-1.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-bottom-2.png b/assets/blocks/liquid/conduits/conduit-bottom-2.png Binary files differindex 0d9e7e3..0d9e7e3 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-bottom-2.png +++ b/assets/blocks/liquid/conduits/conduit-bottom-2.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-bottom-3.png b/assets/blocks/liquid/conduits/conduit-bottom-3.png Binary files differindex 0d9e7e3..0d9e7e3 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-bottom-3.png +++ b/assets/blocks/liquid/conduits/conduit-bottom-3.png diff --git a/mindus/assets/blocks/liquid/conduits/conduit-bottom-4.png b/assets/blocks/liquid/conduits/conduit-bottom-4.png Binary files differindex 0d9e7e3..0d9e7e3 100644 --- a/mindus/assets/blocks/liquid/conduits/conduit-bottom-4.png +++ b/assets/blocks/liquid/conduits/conduit-bottom-4.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-0-0.png b/assets/blocks/liquid/conduits/plated-conduit-0-0.png Binary files differnew file mode 100644 index 0000000..9b1dcd0 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-0-0.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-0-1.png b/assets/blocks/liquid/conduits/plated-conduit-0-1.png Binary files differnew file mode 100644 index 0000000..6363f68 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-0-1.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-0-2.png b/assets/blocks/liquid/conduits/plated-conduit-0-2.png Binary files differnew file mode 100644 index 0000000..2450421 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-0-2.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-0-3.png b/assets/blocks/liquid/conduits/plated-conduit-0-3.png Binary files differnew file mode 100644 index 0000000..e3f2046 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-0-3.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-0-h.png b/assets/blocks/liquid/conduits/plated-conduit-1-0-h.png Binary files differnew file mode 100644 index 0000000..deb7005 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-0-h.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-0.png b/assets/blocks/liquid/conduits/plated-conduit-1-0.png Binary files differnew file mode 100644 index 0000000..201ffa2 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-0.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-1-h.png b/assets/blocks/liquid/conduits/plated-conduit-1-1-h.png Binary files differnew file mode 100644 index 0000000..4bef575 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-1-h.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-1-v.png b/assets/blocks/liquid/conduits/plated-conduit-1-1-v.png Binary files differnew file mode 100644 index 0000000..ffb6987 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-1-v.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-1.png b/assets/blocks/liquid/conduits/plated-conduit-1-1.png Binary files differnew file mode 100644 index 0000000..6d6733a --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-1.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-2.png b/assets/blocks/liquid/conduits/plated-conduit-1-2.png Binary files differnew file mode 100644 index 0000000..8cff629 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-2.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-1-3.png b/assets/blocks/liquid/conduits/plated-conduit-1-3.png Binary files differnew file mode 100644 index 0000000..deb7005 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-1-3.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-2-0-h.png b/assets/blocks/liquid/conduits/plated-conduit-2-0-h.png Binary files differnew file mode 100644 index 0000000..8f2ce35 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-2-0-h.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-2-0-v.png b/assets/blocks/liquid/conduits/plated-conduit-2-0-v.png Binary files differnew file mode 100644 index 0000000..222edf9 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-2-0-v.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-2-0.png b/assets/blocks/liquid/conduits/plated-conduit-2-0.png Binary files differnew file mode 100644 index 0000000..4a32d66 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-2-0.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-2-1-h.png b/assets/blocks/liquid/conduits/plated-conduit-2-1-h.png Binary files differnew file mode 100644 index 0000000..67385d9 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-2-1-h.png diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-1.png b/assets/blocks/liquid/conduits/plated-conduit-2-1.png Binary files differindex 8130059..8130059 100644 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-1.png +++ b/assets/blocks/liquid/conduits/plated-conduit-2-1.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-2-2.png b/assets/blocks/liquid/conduits/plated-conduit-2-2.png Binary files differnew file mode 100644 index 0000000..334adad --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-2-2.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-2-3-h.png b/assets/blocks/liquid/conduits/plated-conduit-2-3-h.png Binary files differnew file mode 100644 index 0000000..416a574 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-2-3-h.png diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-3.png b/assets/blocks/liquid/conduits/plated-conduit-2-3.png Binary files differindex acd19b0..acd19b0 100644 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-3.png +++ b/assets/blocks/liquid/conduits/plated-conduit-2-3.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-3-0-h.png b/assets/blocks/liquid/conduits/plated-conduit-3-0-h.png Binary files differnew file mode 100644 index 0000000..cdff048 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-3-0-h.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-3-0.png b/assets/blocks/liquid/conduits/plated-conduit-3-0.png Binary files differnew file mode 100644 index 0000000..ea24f9a --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-3-0.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-3-1.png b/assets/blocks/liquid/conduits/plated-conduit-3-1.png Binary files differnew file mode 100644 index 0000000..a13c498 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-3-1.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-3-3.png b/assets/blocks/liquid/conduits/plated-conduit-3-3.png Binary files differnew file mode 100644 index 0000000..a78f468 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-3-3.png diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-4-0.png b/assets/blocks/liquid/conduits/plated-conduit-4-0.png Binary files differindex 5fd7ae2..5fd7ae2 100644 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-4-0.png +++ b/assets/blocks/liquid/conduits/plated-conduit-4-0.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-4-1.png b/assets/blocks/liquid/conduits/plated-conduit-4-1.png Binary files differnew file mode 100644 index 0000000..70e0859 --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-4-1.png diff --git a/assets/blocks/liquid/conduits/plated-conduit-4-3.png b/assets/blocks/liquid/conduits/plated-conduit-4-3.png Binary files differnew file mode 100644 index 0000000..8c0c95f --- /dev/null +++ b/assets/blocks/liquid/conduits/plated-conduit-4-3.png diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-cap.png b/assets/blocks/liquid/conduits/plated-conduit-cap.png Binary files differindex 6a9f67d..6a9f67d 100644 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-cap.png +++ b/assets/blocks/liquid/conduits/plated-conduit-cap.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-0-0.png b/assets/blocks/liquid/conduits/pulse-conduit-0-0.png Binary files differnew file mode 100644 index 0000000..09ee3e3 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-0-0.png diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-1.png b/assets/blocks/liquid/conduits/pulse-conduit-0-1.png Binary files differindex 36053a8..36053a8 100644 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-1.png +++ b/assets/blocks/liquid/conduits/pulse-conduit-0-1.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-0-2.png b/assets/blocks/liquid/conduits/pulse-conduit-0-2.png Binary files differnew file mode 100644 index 0000000..875ebfa --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-0-2.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-0-3.png b/assets/blocks/liquid/conduits/pulse-conduit-0-3.png Binary files differnew file mode 100644 index 0000000..b641d4d --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-0-3.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-0-h.png b/assets/blocks/liquid/conduits/pulse-conduit-1-0-h.png Binary files differnew file mode 100644 index 0000000..2f57ce8 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-0-h.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-0.png b/assets/blocks/liquid/conduits/pulse-conduit-1-0.png Binary files differnew file mode 100644 index 0000000..170ffc9 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-0.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-1-h.png b/assets/blocks/liquid/conduits/pulse-conduit-1-1-h.png Binary files differnew file mode 100644 index 0000000..7d7acf2 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-1-h.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-1-v.png b/assets/blocks/liquid/conduits/pulse-conduit-1-1-v.png Binary files differnew file mode 100644 index 0000000..ab23178 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-1-v.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-1.png b/assets/blocks/liquid/conduits/pulse-conduit-1-1.png Binary files differnew file mode 100644 index 0000000..fbbbc9c --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-1.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-2.png b/assets/blocks/liquid/conduits/pulse-conduit-1-2.png Binary files differnew file mode 100644 index 0000000..ff58bf2 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-2.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-1-3.png b/assets/blocks/liquid/conduits/pulse-conduit-1-3.png Binary files differnew file mode 100644 index 0000000..2f57ce8 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-1-3.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-2-0-h.png b/assets/blocks/liquid/conduits/pulse-conduit-2-0-h.png Binary files differnew file mode 100644 index 0000000..6e2f52b --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-0-h.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-2-0-v.png b/assets/blocks/liquid/conduits/pulse-conduit-2-0-v.png Binary files differnew file mode 100644 index 0000000..7ee5d5d --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-0-v.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-2-0.png b/assets/blocks/liquid/conduits/pulse-conduit-2-0.png Binary files differnew file mode 100644 index 0000000..35d1735 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-0.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-2-1-h.png b/assets/blocks/liquid/conduits/pulse-conduit-2-1-h.png Binary files differnew file mode 100644 index 0000000..b2978fb --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-1-h.png diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-1.png b/assets/blocks/liquid/conduits/pulse-conduit-2-1.png Binary files differindex 31d5bed..31d5bed 100644 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-1.png +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-1.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-2-2.png b/assets/blocks/liquid/conduits/pulse-conduit-2-2.png Binary files differnew file mode 100644 index 0000000..831d55e --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-2.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-2-3-h.png b/assets/blocks/liquid/conduits/pulse-conduit-2-3-h.png Binary files differnew file mode 100644 index 0000000..56a7446 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-3-h.png diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-3.png b/assets/blocks/liquid/conduits/pulse-conduit-2-3.png Binary files differindex 82de4d3..82de4d3 100644 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-3.png +++ b/assets/blocks/liquid/conduits/pulse-conduit-2-3.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-3-0-h.png b/assets/blocks/liquid/conduits/pulse-conduit-3-0-h.png Binary files differnew file mode 100644 index 0000000..6527245 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-3-0-h.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-3-0.png b/assets/blocks/liquid/conduits/pulse-conduit-3-0.png Binary files differnew file mode 100644 index 0000000..b7a411b --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-3-0.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-3-1.png b/assets/blocks/liquid/conduits/pulse-conduit-3-1.png Binary files differnew file mode 100644 index 0000000..ffb0e87 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-3-1.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-3-3.png b/assets/blocks/liquid/conduits/pulse-conduit-3-3.png Binary files differnew file mode 100644 index 0000000..cf614d2 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-3-3.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-4-0.png b/assets/blocks/liquid/conduits/pulse-conduit-4-0.png Binary files differnew file mode 100644 index 0000000..7958647 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-4-0.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-4-1.png b/assets/blocks/liquid/conduits/pulse-conduit-4-1.png Binary files differnew file mode 100644 index 0000000..d4a5e50 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-4-1.png diff --git a/assets/blocks/liquid/conduits/pulse-conduit-4-3.png b/assets/blocks/liquid/conduits/pulse-conduit-4-3.png Binary files differnew file mode 100644 index 0000000..949c1e2 --- /dev/null +++ b/assets/blocks/liquid/conduits/pulse-conduit-4-3.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-0-0.png b/assets/blocks/liquid/conduits/reinforced-conduit-0-0.png Binary files differnew file mode 100644 index 0000000..6280303 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-0-0.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-0-1.png b/assets/blocks/liquid/conduits/reinforced-conduit-0-1.png Binary files differnew file mode 100644 index 0000000..033767c --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-0-1.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-0-2.png b/assets/blocks/liquid/conduits/reinforced-conduit-0-2.png Binary files differnew file mode 100644 index 0000000..ec838d6 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-0-2.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-0-3.png b/assets/blocks/liquid/conduits/reinforced-conduit-0-3.png Binary files differnew file mode 100644 index 0000000..f795439 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-0-3.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-0-h.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-0-h.png Binary files differnew file mode 100644 index 0000000..5fb892c --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-0-h.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-0.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-0.png Binary files differnew file mode 100644 index 0000000..e393c9c --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-0.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-1-h.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-1-h.png Binary files differnew file mode 100644 index 0000000..2f4f9e9 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-1-h.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-1-v.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-1-v.png Binary files differnew file mode 100644 index 0000000..c303f7d --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-1-v.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-1.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-1.png Binary files differnew file mode 100644 index 0000000..2dce114 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-1.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-2.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-2.png Binary files differnew file mode 100644 index 0000000..115b526 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-2.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-1-3.png b/assets/blocks/liquid/conduits/reinforced-conduit-1-3.png Binary files differnew file mode 100644 index 0000000..95c1d9f --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-1-3.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-0-h.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-0-h.png Binary files differnew file mode 100644 index 0000000..eb069a9 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-0-h.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-0-v.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-0-v.png Binary files differnew file mode 100644 index 0000000..c6b9470 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-0-v.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-0.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-0.png Binary files differnew file mode 100644 index 0000000..5099798 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-0.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-1-h.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-1-h.png Binary files differnew file mode 100644 index 0000000..35606ba --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-1-h.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-1.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-1.png Binary files differnew file mode 100644 index 0000000..8037de2 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-1.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-2.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-2.png Binary files differnew file mode 100644 index 0000000..3402395 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-2.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-3-h.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-3-h.png Binary files differnew file mode 100644 index 0000000..32a2fd2 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-3-h.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-2-3.png b/assets/blocks/liquid/conduits/reinforced-conduit-2-3.png Binary files differnew file mode 100644 index 0000000..80ce744 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-2-3.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-3-0-h.png b/assets/blocks/liquid/conduits/reinforced-conduit-3-0-h.png Binary files differnew file mode 100644 index 0000000..f2ef533 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-3-0-h.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-3-0.png b/assets/blocks/liquid/conduits/reinforced-conduit-3-0.png Binary files differnew file mode 100644 index 0000000..2ed95f1 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-3-0.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-3-1.png b/assets/blocks/liquid/conduits/reinforced-conduit-3-1.png Binary files differnew file mode 100644 index 0000000..e52c759 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-3-1.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-3-3.png b/assets/blocks/liquid/conduits/reinforced-conduit-3-3.png Binary files differnew file mode 100644 index 0000000..3e6195d --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-3-3.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-4-0.png b/assets/blocks/liquid/conduits/reinforced-conduit-4-0.png Binary files differnew file mode 100644 index 0000000..46deb70 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-4-0.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-4-1.png b/assets/blocks/liquid/conduits/reinforced-conduit-4-1.png Binary files differnew file mode 100644 index 0000000..14845e4 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-4-1.png diff --git a/assets/blocks/liquid/conduits/reinforced-conduit-4-3.png b/assets/blocks/liquid/conduits/reinforced-conduit-4-3.png Binary files differnew file mode 100644 index 0000000..4901d38 --- /dev/null +++ b/assets/blocks/liquid/conduits/reinforced-conduit-4-3.png diff --git a/assets/blocks/liquid/impulse-pump-liquid.png b/assets/blocks/liquid/impulse-pump-liquid.png Binary files differnew file mode 100644 index 0000000..bd62682 --- /dev/null +++ b/assets/blocks/liquid/impulse-pump-liquid.png diff --git a/assets/blocks/liquid/impulse-pump.png b/assets/blocks/liquid/impulse-pump.png Binary files differnew file mode 100644 index 0000000..7f41faf --- /dev/null +++ b/assets/blocks/liquid/impulse-pump.png diff --git a/mindus/assets/blocks/liquid/liquid-container-bottom.png b/assets/blocks/liquid/liquid-container-bottom.png Binary files differindex 46f2081..46f2081 100644 --- a/mindus/assets/blocks/liquid/liquid-container-bottom.png +++ b/assets/blocks/liquid/liquid-container-bottom.png diff --git a/assets/blocks/liquid/liquid-container.png b/assets/blocks/liquid/liquid-container.png Binary files differnew file mode 100644 index 0000000..5336e28 --- /dev/null +++ b/assets/blocks/liquid/liquid-container.png diff --git a/assets/blocks/liquid/liquid-junction.png b/assets/blocks/liquid/liquid-junction.png Binary files differnew file mode 100644 index 0000000..0c92792 --- /dev/null +++ b/assets/blocks/liquid/liquid-junction.png diff --git a/mindus/assets/blocks/liquid/liquid-router-bottom.png b/assets/blocks/liquid/liquid-router-bottom.png Binary files differindex 977f5d8..977f5d8 100644 --- a/mindus/assets/blocks/liquid/liquid-router-bottom.png +++ b/assets/blocks/liquid/liquid-router-bottom.png diff --git a/assets/blocks/liquid/liquid-router.png b/assets/blocks/liquid/liquid-router.png Binary files differnew file mode 100644 index 0000000..75adcb1 --- /dev/null +++ b/assets/blocks/liquid/liquid-router.png diff --git a/assets/blocks/liquid/liquid-source.png b/assets/blocks/liquid/liquid-source.png Binary files differnew file mode 100644 index 0000000..3f230be --- /dev/null +++ b/assets/blocks/liquid/liquid-source.png diff --git a/assets/blocks/liquid/liquid-tank-bottom.png b/assets/blocks/liquid/liquid-tank-bottom.png Binary files differnew file mode 100644 index 0000000..5133507 --- /dev/null +++ b/assets/blocks/liquid/liquid-tank-bottom.png diff --git a/assets/blocks/liquid/liquid-tank.png b/assets/blocks/liquid/liquid-tank.png Binary files differnew file mode 100644 index 0000000..f4e9396 --- /dev/null +++ b/assets/blocks/liquid/liquid-tank.png diff --git a/assets/blocks/liquid/liquid-void.png b/assets/blocks/liquid/liquid-void.png Binary files differnew file mode 100644 index 0000000..34b20dd --- /dev/null +++ b/assets/blocks/liquid/liquid-void.png diff --git a/assets/blocks/liquid/mechanical-pump-liquid.png b/assets/blocks/liquid/mechanical-pump-liquid.png Binary files differnew file mode 100644 index 0000000..bd62682 --- /dev/null +++ b/assets/blocks/liquid/mechanical-pump-liquid.png diff --git a/assets/blocks/liquid/mechanical-pump.png b/assets/blocks/liquid/mechanical-pump.png Binary files differnew file mode 100644 index 0000000..771d52d --- /dev/null +++ b/assets/blocks/liquid/mechanical-pump.png diff --git a/assets/blocks/liquid/phase-conduit-arrow.png b/assets/blocks/liquid/phase-conduit-arrow.png Binary files differnew file mode 100644 index 0000000..62bcb0c --- /dev/null +++ b/assets/blocks/liquid/phase-conduit-arrow.png diff --git a/assets/blocks/liquid/phase-conduit-bridge.png b/assets/blocks/liquid/phase-conduit-bridge.png Binary files differnew file mode 100644 index 0000000..fcdef72 --- /dev/null +++ b/assets/blocks/liquid/phase-conduit-bridge.png diff --git a/assets/blocks/liquid/phase-conduit-end.png b/assets/blocks/liquid/phase-conduit-end.png Binary files differnew file mode 100644 index 0000000..cdcc522 --- /dev/null +++ b/assets/blocks/liquid/phase-conduit-end.png diff --git a/assets/blocks/liquid/phase-conduit.png b/assets/blocks/liquid/phase-conduit.png Binary files differnew file mode 100644 index 0000000..a571e30 --- /dev/null +++ b/assets/blocks/liquid/phase-conduit.png diff --git a/assets/blocks/liquid/reinforced-bridge-conduit-arrow.png b/assets/blocks/liquid/reinforced-bridge-conduit-arrow.png Binary files differnew file mode 100644 index 0000000..5309b37 --- /dev/null +++ b/assets/blocks/liquid/reinforced-bridge-conduit-arrow.png diff --git a/assets/blocks/liquid/reinforced-bridge-conduit-bridge-liquid.png b/assets/blocks/liquid/reinforced-bridge-conduit-bridge-liquid.png Binary files differnew file mode 100644 index 0000000..afef676 --- /dev/null +++ b/assets/blocks/liquid/reinforced-bridge-conduit-bridge-liquid.png diff --git a/assets/blocks/liquid/reinforced-bridge-conduit-bridge.png b/assets/blocks/liquid/reinforced-bridge-conduit-bridge.png Binary files differnew file mode 100644 index 0000000..12c5bde --- /dev/null +++ b/assets/blocks/liquid/reinforced-bridge-conduit-bridge.png diff --git a/assets/blocks/liquid/reinforced-bridge-conduit-dir.png b/assets/blocks/liquid/reinforced-bridge-conduit-dir.png Binary files differnew file mode 100644 index 0000000..233e43a --- /dev/null +++ b/assets/blocks/liquid/reinforced-bridge-conduit-dir.png diff --git a/assets/blocks/liquid/reinforced-bridge-conduit-liquid.png b/assets/blocks/liquid/reinforced-bridge-conduit-liquid.png Binary files differnew file mode 100644 index 0000000..6c42419 --- /dev/null +++ b/assets/blocks/liquid/reinforced-bridge-conduit-liquid.png diff --git a/assets/blocks/liquid/reinforced-bridge-conduit.png b/assets/blocks/liquid/reinforced-bridge-conduit.png Binary files differnew file mode 100644 index 0000000..9e694e0 --- /dev/null +++ b/assets/blocks/liquid/reinforced-bridge-conduit.png diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-container-bottom.png b/assets/blocks/liquid/reinforced-liquid-container-bottom.png Binary files differindex 85194f9..85194f9 100644 --- a/mindus/assets/blocks/liquid/reinforced-liquid-container-bottom.png +++ b/assets/blocks/liquid/reinforced-liquid-container-bottom.png diff --git a/assets/blocks/liquid/reinforced-liquid-container.png b/assets/blocks/liquid/reinforced-liquid-container.png Binary files differnew file mode 100644 index 0000000..b769691 --- /dev/null +++ b/assets/blocks/liquid/reinforced-liquid-container.png diff --git a/assets/blocks/liquid/reinforced-liquid-junction.png b/assets/blocks/liquid/reinforced-liquid-junction.png Binary files differnew file mode 100644 index 0000000..778c5a6 --- /dev/null +++ b/assets/blocks/liquid/reinforced-liquid-junction.png diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-router-bottom.png b/assets/blocks/liquid/reinforced-liquid-router-bottom.png Binary files differindex 3b2c81c..3b2c81c 100644 --- a/mindus/assets/blocks/liquid/reinforced-liquid-router-bottom.png +++ b/assets/blocks/liquid/reinforced-liquid-router-bottom.png diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-router.png b/assets/blocks/liquid/reinforced-liquid-router.png Binary files differindex 0fdb7ba..0fdb7ba 100644 --- a/mindus/assets/blocks/liquid/reinforced-liquid-router.png +++ b/assets/blocks/liquid/reinforced-liquid-router.png diff --git a/assets/blocks/liquid/reinforced-liquid-tank-bottom.png b/assets/blocks/liquid/reinforced-liquid-tank-bottom.png Binary files differnew file mode 100644 index 0000000..9b95d26 --- /dev/null +++ b/assets/blocks/liquid/reinforced-liquid-tank-bottom.png diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-tank.png b/assets/blocks/liquid/reinforced-liquid-tank.png Binary files differindex 94cbfe1..94cbfe1 100644 --- a/mindus/assets/blocks/liquid/reinforced-liquid-tank.png +++ b/assets/blocks/liquid/reinforced-liquid-tank.png diff --git a/assets/blocks/liquid/reinforced-pump-liquid.png b/assets/blocks/liquid/reinforced-pump-liquid.png Binary files differnew file mode 100644 index 0000000..25f07b0 --- /dev/null +++ b/assets/blocks/liquid/reinforced-pump-liquid.png diff --git a/assets/blocks/liquid/reinforced-pump.png b/assets/blocks/liquid/reinforced-pump.png Binary files differnew file mode 100644 index 0000000..22f25d4 --- /dev/null +++ b/assets/blocks/liquid/reinforced-pump.png diff --git a/assets/blocks/liquid/rotary-pump-liquid.png b/assets/blocks/liquid/rotary-pump-liquid.png Binary files differnew file mode 100644 index 0000000..bd62682 --- /dev/null +++ b/assets/blocks/liquid/rotary-pump-liquid.png diff --git a/assets/blocks/liquid/rotary-pump.png b/assets/blocks/liquid/rotary-pump.png Binary files differnew file mode 100644 index 0000000..0b94fea --- /dev/null +++ b/assets/blocks/liquid/rotary-pump.png diff --git a/assets/blocks/logic/canvas.png b/assets/blocks/logic/canvas.png Binary files differnew file mode 100644 index 0000000..8f05174 --- /dev/null +++ b/assets/blocks/logic/canvas.png diff --git a/assets/blocks/logic/hyper-processor.png b/assets/blocks/logic/hyper-processor.png Binary files differnew file mode 100644 index 0000000..7976567 --- /dev/null +++ b/assets/blocks/logic/hyper-processor.png diff --git a/assets/blocks/logic/large-logic-display.png b/assets/blocks/logic/large-logic-display.png Binary files differnew file mode 100644 index 0000000..28c8c75 --- /dev/null +++ b/assets/blocks/logic/large-logic-display.png diff --git a/assets/blocks/logic/logic-display.png b/assets/blocks/logic/logic-display.png Binary files differnew file mode 100644 index 0000000..5d38ebe --- /dev/null +++ b/assets/blocks/logic/logic-display.png diff --git a/assets/blocks/logic/logic-processor.png b/assets/blocks/logic/logic-processor.png Binary files differnew file mode 100644 index 0000000..85dffe9 --- /dev/null +++ b/assets/blocks/logic/logic-processor.png diff --git a/assets/blocks/logic/memory-bank.png b/assets/blocks/logic/memory-bank.png Binary files differnew file mode 100644 index 0000000..f4a4b48 --- /dev/null +++ b/assets/blocks/logic/memory-bank.png diff --git a/assets/blocks/logic/memory-cell.png b/assets/blocks/logic/memory-cell.png Binary files differnew file mode 100644 index 0000000..a8a5343 --- /dev/null +++ b/assets/blocks/logic/memory-cell.png diff --git a/assets/blocks/logic/message.png b/assets/blocks/logic/message.png Binary files differnew file mode 100644 index 0000000..0e7b631 --- /dev/null +++ b/assets/blocks/logic/message.png diff --git a/assets/blocks/logic/micro-processor.png b/assets/blocks/logic/micro-processor.png Binary files differnew file mode 100644 index 0000000..9995834 --- /dev/null +++ b/assets/blocks/logic/micro-processor.png diff --git a/assets/blocks/logic/reinforced-message.png b/assets/blocks/logic/reinforced-message.png Binary files differnew file mode 100644 index 0000000..7ed093c --- /dev/null +++ b/assets/blocks/logic/reinforced-message.png diff --git a/assets/blocks/logic/switch-on.png b/assets/blocks/logic/switch-on.png Binary files differnew file mode 100644 index 0000000..5560abf --- /dev/null +++ b/assets/blocks/logic/switch-on.png diff --git a/assets/blocks/logic/switch.png b/assets/blocks/logic/switch.png Binary files differnew file mode 100644 index 0000000..37a1c02 --- /dev/null +++ b/assets/blocks/logic/switch.png diff --git a/assets/blocks/logic/world-cell.png b/assets/blocks/logic/world-cell.png Binary files differnew file mode 100644 index 0000000..4397cb2 --- /dev/null +++ b/assets/blocks/logic/world-cell.png diff --git a/assets/blocks/logic/world-message.png b/assets/blocks/logic/world-message.png Binary files differnew file mode 100644 index 0000000..6fa79f9 --- /dev/null +++ b/assets/blocks/logic/world-message.png diff --git a/assets/blocks/logic/world-processor.png b/assets/blocks/logic/world-processor.png Binary files differnew file mode 100644 index 0000000..7638016 --- /dev/null +++ b/assets/blocks/logic/world-processor.png diff --git a/assets/blocks/payload/constructor-top.png b/assets/blocks/payload/constructor-top.png Binary files differnew file mode 100644 index 0000000..ca8288c --- /dev/null +++ b/assets/blocks/payload/constructor-top.png diff --git a/assets/blocks/payload/constructor.png b/assets/blocks/payload/constructor.png Binary files differnew file mode 100644 index 0000000..c982f18 --- /dev/null +++ b/assets/blocks/payload/constructor.png diff --git a/assets/blocks/payload/deconstructor-top.png b/assets/blocks/payload/deconstructor-top.png Binary files differnew file mode 100644 index 0000000..102c5fb --- /dev/null +++ b/assets/blocks/payload/deconstructor-top.png diff --git a/assets/blocks/payload/deconstructor.png b/assets/blocks/payload/deconstructor.png Binary files differnew file mode 100644 index 0000000..f2dd416 --- /dev/null +++ b/assets/blocks/payload/deconstructor.png diff --git a/assets/blocks/payload/factory-in-3-dark.png b/assets/blocks/payload/factory-in-3-dark.png Binary files differnew file mode 100644 index 0000000..c7a3c0e --- /dev/null +++ b/assets/blocks/payload/factory-in-3-dark.png diff --git a/assets/blocks/payload/factory-in-3.png b/assets/blocks/payload/factory-in-3.png Binary files differnew file mode 100644 index 0000000..19f0b7d --- /dev/null +++ b/assets/blocks/payload/factory-in-3.png diff --git a/assets/blocks/payload/factory-in-5-dark.png b/assets/blocks/payload/factory-in-5-dark.png Binary files differnew file mode 100644 index 0000000..c6eb89b --- /dev/null +++ b/assets/blocks/payload/factory-in-5-dark.png diff --git a/assets/blocks/payload/factory-in-5.png b/assets/blocks/payload/factory-in-5.png Binary files differnew file mode 100644 index 0000000..1a65fed --- /dev/null +++ b/assets/blocks/payload/factory-in-5.png diff --git a/mindus/assets/blocks/payload/factory-in-7.png b/assets/blocks/payload/factory-in-7.png Binary files differindex d67986a..e7f4f07 100644 --- a/mindus/assets/blocks/payload/factory-in-7.png +++ b/assets/blocks/payload/factory-in-7.png diff --git a/mindus/assets/blocks/payload/factory-in-9.png b/assets/blocks/payload/factory-in-9.png Binary files differindex 6f7dc51..75638ba 100644 --- a/mindus/assets/blocks/payload/factory-in-9.png +++ b/assets/blocks/payload/factory-in-9.png diff --git a/assets/blocks/payload/factory-out-3-dark.png b/assets/blocks/payload/factory-out-3-dark.png Binary files differnew file mode 100644 index 0000000..11d66aa --- /dev/null +++ b/assets/blocks/payload/factory-out-3-dark.png diff --git a/assets/blocks/payload/factory-out-3.png b/assets/blocks/payload/factory-out-3.png Binary files differnew file mode 100644 index 0000000..da9153d --- /dev/null +++ b/assets/blocks/payload/factory-out-3.png diff --git a/assets/blocks/payload/factory-out-5-dark.png b/assets/blocks/payload/factory-out-5-dark.png Binary files differnew file mode 100644 index 0000000..40a3ed8 --- /dev/null +++ b/assets/blocks/payload/factory-out-5-dark.png diff --git a/assets/blocks/payload/factory-out-5.png b/assets/blocks/payload/factory-out-5.png Binary files differnew file mode 100644 index 0000000..3a8d9ed --- /dev/null +++ b/assets/blocks/payload/factory-out-5.png diff --git a/assets/blocks/payload/factory-out-7.png b/assets/blocks/payload/factory-out-7.png Binary files differnew file mode 100644 index 0000000..c1fcf4b --- /dev/null +++ b/assets/blocks/payload/factory-out-7.png diff --git a/assets/blocks/payload/factory-out-9.png b/assets/blocks/payload/factory-out-9.png Binary files differnew file mode 100644 index 0000000..007369a --- /dev/null +++ b/assets/blocks/payload/factory-out-9.png diff --git a/assets/blocks/payload/factory-top-3.png b/assets/blocks/payload/factory-top-3.png Binary files differnew file mode 100644 index 0000000..2b69b0a --- /dev/null +++ b/assets/blocks/payload/factory-top-3.png diff --git a/assets/blocks/payload/large-constructor-top.png b/assets/blocks/payload/large-constructor-top.png Binary files differnew file mode 100644 index 0000000..ef4e9fc --- /dev/null +++ b/assets/blocks/payload/large-constructor-top.png diff --git a/assets/blocks/payload/large-constructor.png b/assets/blocks/payload/large-constructor.png Binary files differnew file mode 100644 index 0000000..b45e650 --- /dev/null +++ b/assets/blocks/payload/large-constructor.png diff --git a/assets/blocks/payload/large-payload-mass-driver.png b/assets/blocks/payload/large-payload-mass-driver.png Binary files differnew file mode 100644 index 0000000..42e9350 --- /dev/null +++ b/assets/blocks/payload/large-payload-mass-driver.png diff --git a/assets/blocks/payload/payload-conveyor.png b/assets/blocks/payload/payload-conveyor.png Binary files differnew file mode 100644 index 0000000..ea511d4 --- /dev/null +++ b/assets/blocks/payload/payload-conveyor.png diff --git a/assets/blocks/payload/payload-loader-top.png b/assets/blocks/payload/payload-loader-top.png Binary files differnew file mode 100644 index 0000000..3612bef --- /dev/null +++ b/assets/blocks/payload/payload-loader-top.png diff --git a/assets/blocks/payload/payload-loader.png b/assets/blocks/payload/payload-loader.png Binary files differnew file mode 100644 index 0000000..acbb9a6 --- /dev/null +++ b/assets/blocks/payload/payload-loader.png diff --git a/assets/blocks/payload/payload-mass-driver.png b/assets/blocks/payload/payload-mass-driver.png Binary files differnew file mode 100644 index 0000000..df38883 --- /dev/null +++ b/assets/blocks/payload/payload-mass-driver.png diff --git a/mindus/assets/blocks/payload/payload-router-over.png b/assets/blocks/payload/payload-router-over.png Binary files differindex 5166951..5166951 100644 --- a/mindus/assets/blocks/payload/payload-router-over.png +++ b/assets/blocks/payload/payload-router-over.png diff --git a/assets/blocks/payload/payload-router.png b/assets/blocks/payload/payload-router.png Binary files differnew file mode 100644 index 0000000..43e4c68 --- /dev/null +++ b/assets/blocks/payload/payload-router.png diff --git a/assets/blocks/payload/payload-source-top.png b/assets/blocks/payload/payload-source-top.png Binary files differnew file mode 100644 index 0000000..6b54ca6 --- /dev/null +++ b/assets/blocks/payload/payload-source-top.png diff --git a/mindus/assets/blocks/payload/payload-source.png b/assets/blocks/payload/payload-source.png Binary files differindex cf0844c..1c4585b 100644 --- a/mindus/assets/blocks/payload/payload-source.png +++ b/assets/blocks/payload/payload-source.png diff --git a/assets/blocks/payload/payload-unloader-top.png b/assets/blocks/payload/payload-unloader-top.png Binary files differnew file mode 100644 index 0000000..caad844 --- /dev/null +++ b/assets/blocks/payload/payload-unloader-top.png diff --git a/assets/blocks/payload/payload-unloader.png b/assets/blocks/payload/payload-unloader.png Binary files differnew file mode 100644 index 0000000..9b564db --- /dev/null +++ b/assets/blocks/payload/payload-unloader.png diff --git a/assets/blocks/payload/payload-void-top.png b/assets/blocks/payload/payload-void-top.png Binary files differnew file mode 100644 index 0000000..8725a43 --- /dev/null +++ b/assets/blocks/payload/payload-void-top.png diff --git a/assets/blocks/payload/payload-void.png b/assets/blocks/payload/payload-void.png Binary files differnew file mode 100644 index 0000000..a2390c4 --- /dev/null +++ b/assets/blocks/payload/payload-void.png diff --git a/assets/blocks/payload/reinforced-payload-conveyor.png b/assets/blocks/payload/reinforced-payload-conveyor.png Binary files differnew file mode 100644 index 0000000..ee67544 --- /dev/null +++ b/assets/blocks/payload/reinforced-payload-conveyor.png diff --git a/mindus/assets/blocks/payload/reinforced-payload-router-over.png b/assets/blocks/payload/reinforced-payload-router-over.png Binary files differindex 14dda8a..14dda8a 100644 --- a/mindus/assets/blocks/payload/reinforced-payload-router-over.png +++ b/assets/blocks/payload/reinforced-payload-router-over.png diff --git a/assets/blocks/payload/reinforced-payload-router.png b/assets/blocks/payload/reinforced-payload-router.png Binary files differnew file mode 100644 index 0000000..4d426a9 --- /dev/null +++ b/assets/blocks/payload/reinforced-payload-router.png diff --git a/assets/blocks/payload/small-deconstructor-top.png b/assets/blocks/payload/small-deconstructor-top.png Binary files differnew file mode 100644 index 0000000..e9b25ed --- /dev/null +++ b/assets/blocks/payload/small-deconstructor-top.png diff --git a/assets/blocks/payload/small-deconstructor.png b/assets/blocks/payload/small-deconstructor.png Binary files differnew file mode 100644 index 0000000..c04f6d4 --- /dev/null +++ b/assets/blocks/payload/small-deconstructor.png diff --git a/assets/blocks/power/battery-large.png b/assets/blocks/power/battery-large.png Binary files differnew file mode 100644 index 0000000..bc90f9c --- /dev/null +++ b/assets/blocks/power/battery-large.png diff --git a/assets/blocks/power/battery.png b/assets/blocks/power/battery.png Binary files differnew file mode 100644 index 0000000..66aea4b --- /dev/null +++ b/assets/blocks/power/battery.png diff --git a/assets/blocks/power/beam-link.png b/assets/blocks/power/beam-link.png Binary files differnew file mode 100644 index 0000000..1804555 --- /dev/null +++ b/assets/blocks/power/beam-link.png diff --git a/assets/blocks/power/beam-node.png b/assets/blocks/power/beam-node.png Binary files differnew file mode 100644 index 0000000..67c3a94 --- /dev/null +++ b/assets/blocks/power/beam-node.png diff --git a/assets/blocks/power/beam-tower.png b/assets/blocks/power/beam-tower.png Binary files differnew file mode 100644 index 0000000..f86568c --- /dev/null +++ b/assets/blocks/power/beam-tower.png diff --git a/assets/blocks/power/chemical-combustion-chamber.png b/assets/blocks/power/chemical-combustion-chamber.png Binary files differnew file mode 100644 index 0000000..9d25357 --- /dev/null +++ b/assets/blocks/power/chemical-combustion-chamber.png diff --git a/assets/blocks/power/combustion-generator.png b/assets/blocks/power/combustion-generator.png Binary files differnew file mode 100644 index 0000000..dcf2039 --- /dev/null +++ b/assets/blocks/power/combustion-generator.png diff --git a/assets/blocks/power/differential-generator-liquid.png b/assets/blocks/power/differential-generator-liquid.png Binary files differnew file mode 100644 index 0000000..83eb5ca --- /dev/null +++ b/assets/blocks/power/differential-generator-liquid.png diff --git a/assets/blocks/power/differential-generator.png b/assets/blocks/power/differential-generator.png Binary files differnew file mode 100644 index 0000000..a4986a6 --- /dev/null +++ b/assets/blocks/power/differential-generator.png diff --git a/assets/blocks/power/diode-arrow.png b/assets/blocks/power/diode-arrow.png Binary files differnew file mode 100644 index 0000000..91b3090 --- /dev/null +++ b/assets/blocks/power/diode-arrow.png diff --git a/assets/blocks/power/diode.png b/assets/blocks/power/diode.png Binary files differnew file mode 100644 index 0000000..3963401 --- /dev/null +++ b/assets/blocks/power/diode.png diff --git a/assets/blocks/power/flux-reactor-bottom.png b/assets/blocks/power/flux-reactor-bottom.png Binary files differnew file mode 100644 index 0000000..31b441e --- /dev/null +++ b/assets/blocks/power/flux-reactor-bottom.png diff --git a/assets/blocks/power/flux-reactor-mid.png b/assets/blocks/power/flux-reactor-mid.png Binary files differnew file mode 100644 index 0000000..25c0b27 --- /dev/null +++ b/assets/blocks/power/flux-reactor-mid.png diff --git a/assets/blocks/power/flux-reactor.png b/assets/blocks/power/flux-reactor.png Binary files differnew file mode 100644 index 0000000..5cbbb43 --- /dev/null +++ b/assets/blocks/power/flux-reactor.png diff --git a/assets/blocks/power/illuminator.png b/assets/blocks/power/illuminator.png Binary files differnew file mode 100644 index 0000000..5c7607d --- /dev/null +++ b/assets/blocks/power/illuminator.png diff --git a/assets/blocks/power/impact-reactor-bottom.png b/assets/blocks/power/impact-reactor-bottom.png Binary files differnew file mode 100644 index 0000000..40d985c --- /dev/null +++ b/assets/blocks/power/impact-reactor-bottom.png diff --git a/assets/blocks/power/impact-reactor.png b/assets/blocks/power/impact-reactor.png Binary files differnew file mode 100644 index 0000000..1f3d2dd --- /dev/null +++ b/assets/blocks/power/impact-reactor.png diff --git a/assets/blocks/power/neoplasia-reactor-bottom.png b/assets/blocks/power/neoplasia-reactor-bottom.png Binary files differnew file mode 100644 index 0000000..25cd97e --- /dev/null +++ b/assets/blocks/power/neoplasia-reactor-bottom.png diff --git a/assets/blocks/power/neoplasia-reactor-center.png b/assets/blocks/power/neoplasia-reactor-center.png Binary files differnew file mode 100644 index 0000000..7336772 --- /dev/null +++ b/assets/blocks/power/neoplasia-reactor-center.png diff --git a/mindus/assets/blocks/power/neoplasia-reactor-top1.png b/assets/blocks/power/neoplasia-reactor-top1.png Binary files differindex 73ecc4d..73ecc4d 100644 --- a/mindus/assets/blocks/power/neoplasia-reactor-top1.png +++ b/assets/blocks/power/neoplasia-reactor-top1.png diff --git a/mindus/assets/blocks/power/neoplasia-reactor-top2.png b/assets/blocks/power/neoplasia-reactor-top2.png Binary files differindex 08a24c4..08a24c4 100644 --- a/mindus/assets/blocks/power/neoplasia-reactor-top2.png +++ b/assets/blocks/power/neoplasia-reactor-top2.png diff --git a/assets/blocks/power/neoplasia-reactor.png b/assets/blocks/power/neoplasia-reactor.png Binary files differnew file mode 100644 index 0000000..3376dec --- /dev/null +++ b/assets/blocks/power/neoplasia-reactor.png diff --git a/assets/blocks/power/power-node-large.png b/assets/blocks/power/power-node-large.png Binary files differnew file mode 100644 index 0000000..a5ebe5e --- /dev/null +++ b/assets/blocks/power/power-node-large.png diff --git a/assets/blocks/power/power-node.png b/assets/blocks/power/power-node.png Binary files differnew file mode 100644 index 0000000..3d98ab0 --- /dev/null +++ b/assets/blocks/power/power-node.png diff --git a/assets/blocks/power/power-source.png b/assets/blocks/power/power-source.png Binary files differnew file mode 100644 index 0000000..9d5c8ed --- /dev/null +++ b/assets/blocks/power/power-source.png diff --git a/assets/blocks/power/power-void.png b/assets/blocks/power/power-void.png Binary files differnew file mode 100644 index 0000000..5fd2c22 --- /dev/null +++ b/assets/blocks/power/power-void.png diff --git a/assets/blocks/power/pyrolysis-generator.png b/assets/blocks/power/pyrolysis-generator.png Binary files differnew file mode 100644 index 0000000..5f6556d --- /dev/null +++ b/assets/blocks/power/pyrolysis-generator.png diff --git a/assets/blocks/power/rtg-generator.png b/assets/blocks/power/rtg-generator.png Binary files differnew file mode 100644 index 0000000..3578bbc --- /dev/null +++ b/assets/blocks/power/rtg-generator.png diff --git a/assets/blocks/power/solar-panel-large.png b/assets/blocks/power/solar-panel-large.png Binary files differnew file mode 100644 index 0000000..a994aaf --- /dev/null +++ b/assets/blocks/power/solar-panel-large.png diff --git a/assets/blocks/power/solar-panel.png b/assets/blocks/power/solar-panel.png Binary files differnew file mode 100644 index 0000000..af53536 --- /dev/null +++ b/assets/blocks/power/solar-panel.png diff --git a/assets/blocks/power/steam-generator-liquid.png b/assets/blocks/power/steam-generator-liquid.png Binary files differnew file mode 100644 index 0000000..da16999 --- /dev/null +++ b/assets/blocks/power/steam-generator-liquid.png diff --git a/assets/blocks/power/steam-generator.png b/assets/blocks/power/steam-generator.png Binary files differnew file mode 100644 index 0000000..3b2bcd6 --- /dev/null +++ b/assets/blocks/power/steam-generator.png diff --git a/mindus/assets/blocks/power/surge-tower.png b/assets/blocks/power/surge-tower.png Binary files differindex abf3ce1..abf3ce1 100644 --- a/mindus/assets/blocks/power/surge-tower.png +++ b/assets/blocks/power/surge-tower.png diff --git a/assets/blocks/power/thermal-generator.png b/assets/blocks/power/thermal-generator.png Binary files differnew file mode 100644 index 0000000..6700994 --- /dev/null +++ b/assets/blocks/power/thermal-generator.png diff --git a/assets/blocks/power/thorium-reactor.png b/assets/blocks/power/thorium-reactor.png Binary files differnew file mode 100644 index 0000000..f7dfb2e --- /dev/null +++ b/assets/blocks/power/thorium-reactor.png diff --git a/assets/blocks/power/turbine-condenser.png b/assets/blocks/power/turbine-condenser.png Binary files differnew file mode 100644 index 0000000..3c29973 --- /dev/null +++ b/assets/blocks/power/turbine-condenser.png diff --git a/assets/blocks/production/atmospheric-concentrator-bottom.png b/assets/blocks/production/atmospheric-concentrator-bottom.png Binary files differnew file mode 100644 index 0000000..61dde0d --- /dev/null +++ b/assets/blocks/production/atmospheric-concentrator-bottom.png diff --git a/assets/blocks/production/atmospheric-concentrator.png b/assets/blocks/production/atmospheric-concentrator.png Binary files differnew file mode 100644 index 0000000..f535fde --- /dev/null +++ b/assets/blocks/production/atmospheric-concentrator.png diff --git a/assets/blocks/production/blast-mixer.png b/assets/blocks/production/blast-mixer.png Binary files differnew file mode 100644 index 0000000..81e8d86 --- /dev/null +++ b/assets/blocks/production/blast-mixer.png diff --git a/assets/blocks/production/carbide-crucible-bottom.png b/assets/blocks/production/carbide-crucible-bottom.png Binary files differnew file mode 100644 index 0000000..3fcb6ab --- /dev/null +++ b/assets/blocks/production/carbide-crucible-bottom.png diff --git a/assets/blocks/production/carbide-crucible.png b/assets/blocks/production/carbide-crucible.png Binary files differnew file mode 100644 index 0000000..309d70f --- /dev/null +++ b/assets/blocks/production/carbide-crucible.png diff --git a/assets/blocks/production/coal-centrifuge.png b/assets/blocks/production/coal-centrifuge.png Binary files differnew file mode 100644 index 0000000..10265b6 --- /dev/null +++ b/assets/blocks/production/coal-centrifuge.png diff --git a/mindus/assets/blocks/production/cryofluid-mixer-bottom.png b/assets/blocks/production/cryofluid-mixer-bottom.png Binary files differindex 6e5ed2c..6e5ed2c 100644 --- a/mindus/assets/blocks/production/cryofluid-mixer-bottom.png +++ b/assets/blocks/production/cryofluid-mixer-bottom.png diff --git a/assets/blocks/production/cryofluid-mixer.png b/assets/blocks/production/cryofluid-mixer.png Binary files differnew file mode 100644 index 0000000..e9e4ecb --- /dev/null +++ b/assets/blocks/production/cryofluid-mixer.png diff --git a/assets/blocks/production/cultivator.png b/assets/blocks/production/cultivator.png Binary files differnew file mode 100644 index 0000000..5d7e152 --- /dev/null +++ b/assets/blocks/production/cultivator.png diff --git a/assets/blocks/production/cyanogen-synthesizer-bottom.png b/assets/blocks/production/cyanogen-synthesizer-bottom.png Binary files differnew file mode 100644 index 0000000..3452f9d --- /dev/null +++ b/assets/blocks/production/cyanogen-synthesizer-bottom.png diff --git a/assets/blocks/production/cyanogen-synthesizer.png b/assets/blocks/production/cyanogen-synthesizer.png Binary files differnew file mode 100644 index 0000000..b67f16f --- /dev/null +++ b/assets/blocks/production/cyanogen-synthesizer.png diff --git a/assets/blocks/production/disassembler-bottom.png b/assets/blocks/production/disassembler-bottom.png Binary files differnew file mode 100644 index 0000000..87f0295 --- /dev/null +++ b/assets/blocks/production/disassembler-bottom.png diff --git a/assets/blocks/production/disassembler.png b/assets/blocks/production/disassembler.png Binary files differnew file mode 100644 index 0000000..9860ac0 --- /dev/null +++ b/assets/blocks/production/disassembler.png diff --git a/assets/blocks/production/electric-heater-top1.png b/assets/blocks/production/electric-heater-top1.png Binary files differnew file mode 100644 index 0000000..b807ab9 --- /dev/null +++ b/assets/blocks/production/electric-heater-top1.png diff --git a/assets/blocks/production/electric-heater-top2.png b/assets/blocks/production/electric-heater-top2.png Binary files differnew file mode 100644 index 0000000..78c0e49 --- /dev/null +++ b/assets/blocks/production/electric-heater-top2.png diff --git a/assets/blocks/production/electric-heater.png b/assets/blocks/production/electric-heater.png Binary files differnew file mode 100644 index 0000000..62ca7c7 --- /dev/null +++ b/assets/blocks/production/electric-heater.png diff --git a/assets/blocks/production/electrolyzer-bottom.png b/assets/blocks/production/electrolyzer-bottom.png Binary files differnew file mode 100644 index 0000000..bb2d46e --- /dev/null +++ b/assets/blocks/production/electrolyzer-bottom.png diff --git a/mindus/assets/blocks/production/electrolyzer-hydrogen-output1.png b/assets/blocks/production/electrolyzer-hydrogen-output1.png Binary files differindex defb12c..defb12c 100644 --- a/mindus/assets/blocks/production/electrolyzer-hydrogen-output1.png +++ b/assets/blocks/production/electrolyzer-hydrogen-output1.png diff --git a/mindus/assets/blocks/production/electrolyzer-hydrogen-output2.png b/assets/blocks/production/electrolyzer-hydrogen-output2.png Binary files differindex b62e50c..b62e50c 100644 --- a/mindus/assets/blocks/production/electrolyzer-hydrogen-output2.png +++ b/assets/blocks/production/electrolyzer-hydrogen-output2.png diff --git a/mindus/assets/blocks/production/electrolyzer-ozone-output1.png b/assets/blocks/production/electrolyzer-ozone-output1.png Binary files differindex 6601210..6601210 100644 --- a/mindus/assets/blocks/production/electrolyzer-ozone-output1.png +++ b/assets/blocks/production/electrolyzer-ozone-output1.png diff --git a/mindus/assets/blocks/production/electrolyzer-ozone-output2.png b/assets/blocks/production/electrolyzer-ozone-output2.png Binary files differindex f8a5a9b..f8a5a9b 100644 --- a/mindus/assets/blocks/production/electrolyzer-ozone-output2.png +++ b/assets/blocks/production/electrolyzer-ozone-output2.png diff --git a/assets/blocks/production/electrolyzer.png b/assets/blocks/production/electrolyzer.png Binary files differnew file mode 100644 index 0000000..c8d66e4 --- /dev/null +++ b/assets/blocks/production/electrolyzer.png diff --git a/mindus/assets/blocks/production/graphite-press.png b/assets/blocks/production/graphite-press.png Binary files differindex 6f965a0..a356104 100644 --- a/mindus/assets/blocks/production/graphite-press.png +++ b/assets/blocks/production/graphite-press.png diff --git a/mindus/assets/blocks/production/heat-redirector-top1.png b/assets/blocks/production/heat-redirector-top1.png Binary files differindex 70fd7f6..b0610a9 100644 --- a/mindus/assets/blocks/production/heat-redirector-top1.png +++ b/assets/blocks/production/heat-redirector-top1.png diff --git a/assets/blocks/production/heat-redirector-top2.png b/assets/blocks/production/heat-redirector-top2.png Binary files differnew file mode 100644 index 0000000..2f6fc72 --- /dev/null +++ b/assets/blocks/production/heat-redirector-top2.png diff --git a/assets/blocks/production/heat-redirector.png b/assets/blocks/production/heat-redirector.png Binary files differnew file mode 100644 index 0000000..fd7dc0b --- /dev/null +++ b/assets/blocks/production/heat-redirector.png diff --git a/assets/blocks/production/heat-router-top1.png b/assets/blocks/production/heat-router-top1.png Binary files differnew file mode 100644 index 0000000..75a62a4 --- /dev/null +++ b/assets/blocks/production/heat-router-top1.png diff --git a/mindus/assets/blocks/production/heat-router-top2.png b/assets/blocks/production/heat-router-top2.png Binary files differindex c592618..c592618 100644 --- a/mindus/assets/blocks/production/heat-router-top2.png +++ b/assets/blocks/production/heat-router-top2.png diff --git a/assets/blocks/production/heat-router.png b/assets/blocks/production/heat-router.png Binary files differnew file mode 100644 index 0000000..7f71e4d --- /dev/null +++ b/assets/blocks/production/heat-router.png diff --git a/mindus/assets/blocks/production/heat-source-top1.png b/assets/blocks/production/heat-source-top1.png Binary files differindex 3f53d54..3f53d54 100644 --- a/mindus/assets/blocks/production/heat-source-top1.png +++ b/assets/blocks/production/heat-source-top1.png diff --git a/mindus/assets/blocks/production/heat-source-top2.png b/assets/blocks/production/heat-source-top2.png Binary files differindex 523d20f..523d20f 100644 --- a/mindus/assets/blocks/production/heat-source-top2.png +++ b/assets/blocks/production/heat-source-top2.png diff --git a/assets/blocks/production/heat-source.png b/assets/blocks/production/heat-source.png Binary files differnew file mode 100644 index 0000000..b4f09d9 --- /dev/null +++ b/assets/blocks/production/heat-source.png diff --git a/assets/blocks/production/incinerator.png b/assets/blocks/production/incinerator.png Binary files differnew file mode 100644 index 0000000..ae6a34f --- /dev/null +++ b/assets/blocks/production/incinerator.png diff --git a/assets/blocks/production/kiln.png b/assets/blocks/production/kiln.png Binary files differnew file mode 100644 index 0000000..4180563 --- /dev/null +++ b/assets/blocks/production/kiln.png diff --git a/mindus/assets/blocks/production/melter-bottom.png b/assets/blocks/production/melter-bottom.png Binary files differindex 380776f..380776f 100644 --- a/mindus/assets/blocks/production/melter-bottom.png +++ b/assets/blocks/production/melter-bottom.png diff --git a/assets/blocks/production/melter.png b/assets/blocks/production/melter.png Binary files differnew file mode 100644 index 0000000..97b0278 --- /dev/null +++ b/assets/blocks/production/melter.png diff --git a/assets/blocks/production/multi-press.png b/assets/blocks/production/multi-press.png Binary files differnew file mode 100644 index 0000000..d8874fd --- /dev/null +++ b/assets/blocks/production/multi-press.png diff --git a/mindus/assets/blocks/production/oxidation-chamber-liquid.png b/assets/blocks/production/oxidation-chamber-liquid.png Binary files differindex 84098de..84098de 100644 --- a/mindus/assets/blocks/production/oxidation-chamber-liquid.png +++ b/assets/blocks/production/oxidation-chamber-liquid.png diff --git a/assets/blocks/production/oxidation-chamber-top1.png b/assets/blocks/production/oxidation-chamber-top1.png Binary files differnew file mode 100644 index 0000000..580c74b --- /dev/null +++ b/assets/blocks/production/oxidation-chamber-top1.png diff --git a/assets/blocks/production/oxidation-chamber-top2.png b/assets/blocks/production/oxidation-chamber-top2.png Binary files differnew file mode 100644 index 0000000..9e5489f --- /dev/null +++ b/assets/blocks/production/oxidation-chamber-top2.png diff --git a/assets/blocks/production/oxidation-chamber.png b/assets/blocks/production/oxidation-chamber.png Binary files differnew file mode 100644 index 0000000..55ce729 --- /dev/null +++ b/assets/blocks/production/oxidation-chamber.png diff --git a/assets/blocks/production/phase-heater-top1.png b/assets/blocks/production/phase-heater-top1.png Binary files differnew file mode 100644 index 0000000..2374f39 --- /dev/null +++ b/assets/blocks/production/phase-heater-top1.png diff --git a/assets/blocks/production/phase-heater-top2.png b/assets/blocks/production/phase-heater-top2.png Binary files differnew file mode 100644 index 0000000..750434c --- /dev/null +++ b/assets/blocks/production/phase-heater-top2.png diff --git a/assets/blocks/production/phase-heater.png b/assets/blocks/production/phase-heater.png Binary files differnew file mode 100644 index 0000000..28302b2 --- /dev/null +++ b/assets/blocks/production/phase-heater.png diff --git a/assets/blocks/production/phase-synthesizer.png b/assets/blocks/production/phase-synthesizer.png Binary files differnew file mode 100644 index 0000000..8081f6d --- /dev/null +++ b/assets/blocks/production/phase-synthesizer.png diff --git a/assets/blocks/production/phase-weaver.png b/assets/blocks/production/phase-weaver.png Binary files differnew file mode 100644 index 0000000..576fa32 --- /dev/null +++ b/assets/blocks/production/phase-weaver.png diff --git a/assets/blocks/production/plastanium-compressor.png b/assets/blocks/production/plastanium-compressor.png Binary files differnew file mode 100644 index 0000000..2556143 --- /dev/null +++ b/assets/blocks/production/plastanium-compressor.png diff --git a/assets/blocks/production/pulverizer.png b/assets/blocks/production/pulverizer.png Binary files differnew file mode 100644 index 0000000..0d5d93a --- /dev/null +++ b/assets/blocks/production/pulverizer.png diff --git a/assets/blocks/production/pyratite-mixer.png b/assets/blocks/production/pyratite-mixer.png Binary files differnew file mode 100644 index 0000000..206a970 --- /dev/null +++ b/assets/blocks/production/pyratite-mixer.png diff --git a/assets/blocks/production/separator.png b/assets/blocks/production/separator.png Binary files differnew file mode 100644 index 0000000..7c72cc3 --- /dev/null +++ b/assets/blocks/production/separator.png diff --git a/assets/blocks/production/silicon-arc-furnace.png b/assets/blocks/production/silicon-arc-furnace.png Binary files differnew file mode 100644 index 0000000..6d4f0b5 --- /dev/null +++ b/assets/blocks/production/silicon-arc-furnace.png diff --git a/assets/blocks/production/silicon-crucible.png b/assets/blocks/production/silicon-crucible.png Binary files differnew file mode 100644 index 0000000..2efe121 --- /dev/null +++ b/assets/blocks/production/silicon-crucible.png diff --git a/assets/blocks/production/silicon-smelter.png b/assets/blocks/production/silicon-smelter.png Binary files differnew file mode 100644 index 0000000..4cb470e --- /dev/null +++ b/assets/blocks/production/silicon-smelter.png diff --git a/assets/blocks/production/slag-heater-bottom.png b/assets/blocks/production/slag-heater-bottom.png Binary files differnew file mode 100644 index 0000000..836d531 --- /dev/null +++ b/assets/blocks/production/slag-heater-bottom.png diff --git a/mindus/assets/blocks/production/slag-heater-top1.png b/assets/blocks/production/slag-heater-top1.png Binary files differindex 72ab2df..72ab2df 100644 --- a/mindus/assets/blocks/production/slag-heater-top1.png +++ b/assets/blocks/production/slag-heater-top1.png diff --git a/mindus/assets/blocks/production/slag-heater-top2.png b/assets/blocks/production/slag-heater-top2.png Binary files differindex 4d21c9e..4d21c9e 100644 --- a/mindus/assets/blocks/production/slag-heater-top2.png +++ b/assets/blocks/production/slag-heater-top2.png diff --git a/assets/blocks/production/slag-heater.png b/assets/blocks/production/slag-heater.png Binary files differnew file mode 100644 index 0000000..4709577 --- /dev/null +++ b/assets/blocks/production/slag-heater.png diff --git a/assets/blocks/production/slag-incinerator-liquid.png b/assets/blocks/production/slag-incinerator-liquid.png Binary files differnew file mode 100644 index 0000000..618be80 --- /dev/null +++ b/assets/blocks/production/slag-incinerator-liquid.png diff --git a/assets/blocks/production/slag-incinerator.png b/assets/blocks/production/slag-incinerator.png Binary files differnew file mode 100644 index 0000000..8cb0be7 --- /dev/null +++ b/assets/blocks/production/slag-incinerator.png diff --git a/assets/blocks/production/spore-press.png b/assets/blocks/production/spore-press.png Binary files differnew file mode 100644 index 0000000..6d9271c --- /dev/null +++ b/assets/blocks/production/spore-press.png diff --git a/assets/blocks/production/surge-crucible-bottom.png b/assets/blocks/production/surge-crucible-bottom.png Binary files differnew file mode 100644 index 0000000..302d76b --- /dev/null +++ b/assets/blocks/production/surge-crucible-bottom.png diff --git a/assets/blocks/production/surge-crucible-liquid.png b/assets/blocks/production/surge-crucible-liquid.png Binary files differnew file mode 100644 index 0000000..e628a34 --- /dev/null +++ b/assets/blocks/production/surge-crucible-liquid.png diff --git a/assets/blocks/production/surge-crucible.png b/assets/blocks/production/surge-crucible.png Binary files differnew file mode 100644 index 0000000..33af200 --- /dev/null +++ b/assets/blocks/production/surge-crucible.png diff --git a/assets/blocks/production/surge-smelter.png b/assets/blocks/production/surge-smelter.png Binary files differnew file mode 100644 index 0000000..a0f863b --- /dev/null +++ b/assets/blocks/production/surge-smelter.png diff --git a/mindus/assets/blocks/storage/container-team.png b/assets/blocks/storage/container-team.png Binary files differindex 3aa6105..3aa6105 100644 --- a/mindus/assets/blocks/storage/container-team.png +++ b/assets/blocks/storage/container-team.png diff --git a/mindus/assets/blocks/storage/container.png b/assets/blocks/storage/container.png Binary files differindex ff346df..ff346df 100644 --- a/mindus/assets/blocks/storage/container.png +++ b/assets/blocks/storage/container.png diff --git a/assets/blocks/storage/core-acropolis-team.png b/assets/blocks/storage/core-acropolis-team.png Binary files differnew file mode 100644 index 0000000..1c7a3f0 --- /dev/null +++ b/assets/blocks/storage/core-acropolis-team.png diff --git a/assets/blocks/storage/core-acropolis.png b/assets/blocks/storage/core-acropolis.png Binary files differnew file mode 100644 index 0000000..5ad4e3e --- /dev/null +++ b/assets/blocks/storage/core-acropolis.png diff --git a/assets/blocks/storage/core-bastion-team.png b/assets/blocks/storage/core-bastion-team.png Binary files differnew file mode 100644 index 0000000..8848dff --- /dev/null +++ b/assets/blocks/storage/core-bastion-team.png diff --git a/assets/blocks/storage/core-bastion.png b/assets/blocks/storage/core-bastion.png Binary files differnew file mode 100644 index 0000000..0e8f6e5 --- /dev/null +++ b/assets/blocks/storage/core-bastion.png diff --git a/assets/blocks/storage/core-citadel-team.png b/assets/blocks/storage/core-citadel-team.png Binary files differnew file mode 100644 index 0000000..1df2773 --- /dev/null +++ b/assets/blocks/storage/core-citadel-team.png diff --git a/assets/blocks/storage/core-citadel.png b/assets/blocks/storage/core-citadel.png Binary files differnew file mode 100644 index 0000000..9451f70 --- /dev/null +++ b/assets/blocks/storage/core-citadel.png diff --git a/assets/blocks/storage/core-foundation-team.png b/assets/blocks/storage/core-foundation-team.png Binary files differnew file mode 100644 index 0000000..d8a5374 --- /dev/null +++ b/assets/blocks/storage/core-foundation-team.png diff --git a/assets/blocks/storage/core-foundation.png b/assets/blocks/storage/core-foundation.png Binary files differnew file mode 100644 index 0000000..8c02e4f --- /dev/null +++ b/assets/blocks/storage/core-foundation.png diff --git a/assets/blocks/storage/core-nucleus-team.png b/assets/blocks/storage/core-nucleus-team.png Binary files differnew file mode 100644 index 0000000..0b9533d --- /dev/null +++ b/assets/blocks/storage/core-nucleus-team.png diff --git a/mindus/assets/blocks/storage/core-nucleus.png b/assets/blocks/storage/core-nucleus.png Binary files differindex 59394e4..59394e4 100644 --- a/mindus/assets/blocks/storage/core-nucleus.png +++ b/assets/blocks/storage/core-nucleus.png diff --git a/assets/blocks/storage/core-shard-team.png b/assets/blocks/storage/core-shard-team.png Binary files differnew file mode 100644 index 0000000..d8cef0e --- /dev/null +++ b/assets/blocks/storage/core-shard-team.png diff --git a/assets/blocks/storage/core-shard.png b/assets/blocks/storage/core-shard.png Binary files differnew file mode 100644 index 0000000..f6ce140 --- /dev/null +++ b/assets/blocks/storage/core-shard.png diff --git a/assets/blocks/storage/reinforced-container-team.png b/assets/blocks/storage/reinforced-container-team.png Binary files differnew file mode 100644 index 0000000..9283811 --- /dev/null +++ b/assets/blocks/storage/reinforced-container-team.png diff --git a/assets/blocks/storage/reinforced-container.png b/assets/blocks/storage/reinforced-container.png Binary files differnew file mode 100644 index 0000000..2c52768 --- /dev/null +++ b/assets/blocks/storage/reinforced-container.png diff --git a/mindus/assets/blocks/storage/reinforced-vault-team.png b/assets/blocks/storage/reinforced-vault-team.png Binary files differindex 429e1e3..429e1e3 100644 --- a/mindus/assets/blocks/storage/reinforced-vault-team.png +++ b/assets/blocks/storage/reinforced-vault-team.png diff --git a/assets/blocks/storage/reinforced-vault.png b/assets/blocks/storage/reinforced-vault.png Binary files differnew file mode 100644 index 0000000..82afb8c --- /dev/null +++ b/assets/blocks/storage/reinforced-vault.png diff --git a/assets/blocks/storage/unloader-center.png b/assets/blocks/storage/unloader-center.png Binary files differnew file mode 100644 index 0000000..847b884 --- /dev/null +++ b/assets/blocks/storage/unloader-center.png diff --git a/assets/blocks/storage/unloader.png b/assets/blocks/storage/unloader.png Binary files differnew file mode 100644 index 0000000..e5f891e --- /dev/null +++ b/assets/blocks/storage/unloader.png diff --git a/assets/blocks/storage/vault-team.png b/assets/blocks/storage/vault-team.png Binary files differnew file mode 100644 index 0000000..be63faf --- /dev/null +++ b/assets/blocks/storage/vault-team.png diff --git a/mindus/assets/blocks/storage/vault.png b/assets/blocks/storage/vault.png Binary files differindex 43eda41..43eda41 100644 --- a/mindus/assets/blocks/storage/vault.png +++ b/assets/blocks/storage/vault.png diff --git a/assets/blocks/turrets/afflict.png b/assets/blocks/turrets/afflict.png Binary files differnew file mode 100644 index 0000000..7b37826 --- /dev/null +++ b/assets/blocks/turrets/afflict.png diff --git a/assets/blocks/turrets/arc.png b/assets/blocks/turrets/arc.png Binary files differnew file mode 100644 index 0000000..be61590 --- /dev/null +++ b/assets/blocks/turrets/arc.png diff --git a/assets/blocks/turrets/breach.png b/assets/blocks/turrets/breach.png Binary files differnew file mode 100644 index 0000000..e9a490c --- /dev/null +++ b/assets/blocks/turrets/breach.png diff --git a/assets/blocks/turrets/cyclone.png b/assets/blocks/turrets/cyclone.png Binary files differnew file mode 100644 index 0000000..96cabd4 --- /dev/null +++ b/assets/blocks/turrets/cyclone.png diff --git a/assets/blocks/turrets/diffuse.png b/assets/blocks/turrets/diffuse.png Binary files differnew file mode 100644 index 0000000..3475747 --- /dev/null +++ b/assets/blocks/turrets/diffuse.png diff --git a/assets/blocks/turrets/disperse.png b/assets/blocks/turrets/disperse.png Binary files differnew file mode 100644 index 0000000..641ae4b --- /dev/null +++ b/assets/blocks/turrets/disperse.png diff --git a/assets/blocks/turrets/duo.png b/assets/blocks/turrets/duo.png Binary files differnew file mode 100644 index 0000000..2f7e385 --- /dev/null +++ b/assets/blocks/turrets/duo.png diff --git a/assets/blocks/turrets/foreshadow.png b/assets/blocks/turrets/foreshadow.png Binary files differnew file mode 100644 index 0000000..381a2fe --- /dev/null +++ b/assets/blocks/turrets/foreshadow.png diff --git a/assets/blocks/turrets/fuse.png b/assets/blocks/turrets/fuse.png Binary files differnew file mode 100644 index 0000000..bb9a0b6 --- /dev/null +++ b/assets/blocks/turrets/fuse.png diff --git a/assets/blocks/turrets/hail.png b/assets/blocks/turrets/hail.png Binary files differnew file mode 100644 index 0000000..8250d37 --- /dev/null +++ b/assets/blocks/turrets/hail.png diff --git a/assets/blocks/turrets/lancer.png b/assets/blocks/turrets/lancer.png Binary files differnew file mode 100644 index 0000000..9fff5ba --- /dev/null +++ b/assets/blocks/turrets/lancer.png diff --git a/assets/blocks/turrets/lustre.png b/assets/blocks/turrets/lustre.png Binary files differnew file mode 100644 index 0000000..e436f52 --- /dev/null +++ b/assets/blocks/turrets/lustre.png diff --git a/assets/blocks/turrets/malign.png b/assets/blocks/turrets/malign.png Binary files differnew file mode 100644 index 0000000..03e692f --- /dev/null +++ b/assets/blocks/turrets/malign.png diff --git a/assets/blocks/turrets/meltdown.png b/assets/blocks/turrets/meltdown.png Binary files differnew file mode 100644 index 0000000..d63c8fb --- /dev/null +++ b/assets/blocks/turrets/meltdown.png diff --git a/assets/blocks/turrets/parallax.png b/assets/blocks/turrets/parallax.png Binary files differnew file mode 100644 index 0000000..4d581dd --- /dev/null +++ b/assets/blocks/turrets/parallax.png diff --git a/assets/blocks/turrets/ripple.png b/assets/blocks/turrets/ripple.png Binary files differnew file mode 100644 index 0000000..507f0b6 --- /dev/null +++ b/assets/blocks/turrets/ripple.png diff --git a/assets/blocks/turrets/salvo.png b/assets/blocks/turrets/salvo.png Binary files differnew file mode 100644 index 0000000..09136e0 --- /dev/null +++ b/assets/blocks/turrets/salvo.png diff --git a/assets/blocks/turrets/scathe.png b/assets/blocks/turrets/scathe.png Binary files differnew file mode 100644 index 0000000..897532a --- /dev/null +++ b/assets/blocks/turrets/scathe.png diff --git a/assets/blocks/turrets/scatter.png b/assets/blocks/turrets/scatter.png Binary files differnew file mode 100644 index 0000000..1cc620a --- /dev/null +++ b/assets/blocks/turrets/scatter.png diff --git a/assets/blocks/turrets/scorch.png b/assets/blocks/turrets/scorch.png Binary files differnew file mode 100644 index 0000000..473e8d3 --- /dev/null +++ b/assets/blocks/turrets/scorch.png diff --git a/assets/blocks/turrets/segment.png b/assets/blocks/turrets/segment.png Binary files differnew file mode 100644 index 0000000..c34929c --- /dev/null +++ b/assets/blocks/turrets/segment.png diff --git a/assets/blocks/turrets/smite.png b/assets/blocks/turrets/smite.png Binary files differnew file mode 100644 index 0000000..3402149 --- /dev/null +++ b/assets/blocks/turrets/smite.png diff --git a/assets/blocks/turrets/spectre.png b/assets/blocks/turrets/spectre.png Binary files differnew file mode 100644 index 0000000..811ef6e --- /dev/null +++ b/assets/blocks/turrets/spectre.png diff --git a/assets/blocks/turrets/sublimate.png b/assets/blocks/turrets/sublimate.png Binary files differnew file mode 100644 index 0000000..5155235 --- /dev/null +++ b/assets/blocks/turrets/sublimate.png diff --git a/assets/blocks/turrets/swarmer.png b/assets/blocks/turrets/swarmer.png Binary files differnew file mode 100644 index 0000000..1680beb --- /dev/null +++ b/assets/blocks/turrets/swarmer.png diff --git a/assets/blocks/turrets/titan.png b/assets/blocks/turrets/titan.png Binary files differnew file mode 100644 index 0000000..e781843 --- /dev/null +++ b/assets/blocks/turrets/titan.png diff --git a/assets/blocks/turrets/tsunami.png b/assets/blocks/turrets/tsunami.png Binary files differnew file mode 100644 index 0000000..6f72793 --- /dev/null +++ b/assets/blocks/turrets/tsunami.png diff --git a/assets/blocks/turrets/wave.png b/assets/blocks/turrets/wave.png Binary files differnew file mode 100644 index 0000000..360994d --- /dev/null +++ b/assets/blocks/turrets/wave.png diff --git a/assets/blocks/units/additive-reconstructor-top.png b/assets/blocks/units/additive-reconstructor-top.png Binary files differnew file mode 100644 index 0000000..235e672 --- /dev/null +++ b/assets/blocks/units/additive-reconstructor-top.png diff --git a/assets/blocks/units/additive-reconstructor.png b/assets/blocks/units/additive-reconstructor.png Binary files differnew file mode 100644 index 0000000..fbc893b --- /dev/null +++ b/assets/blocks/units/additive-reconstructor.png diff --git a/assets/blocks/units/air-factory.png b/assets/blocks/units/air-factory.png Binary files differnew file mode 100644 index 0000000..0644c21 --- /dev/null +++ b/assets/blocks/units/air-factory.png diff --git a/assets/blocks/units/basic-assembler-module-side1.png b/assets/blocks/units/basic-assembler-module-side1.png Binary files differnew file mode 100644 index 0000000..2bc2f85 --- /dev/null +++ b/assets/blocks/units/basic-assembler-module-side1.png diff --git a/assets/blocks/units/basic-assembler-module-side2.png b/assets/blocks/units/basic-assembler-module-side2.png Binary files differnew file mode 100644 index 0000000..6ac7279 --- /dev/null +++ b/assets/blocks/units/basic-assembler-module-side2.png diff --git a/assets/blocks/units/basic-assembler-module.png b/assets/blocks/units/basic-assembler-module.png Binary files differnew file mode 100644 index 0000000..328c982 --- /dev/null +++ b/assets/blocks/units/basic-assembler-module.png diff --git a/assets/blocks/units/exponential-reconstructor-top.png b/assets/blocks/units/exponential-reconstructor-top.png Binary files differnew file mode 100644 index 0000000..fb14b35 --- /dev/null +++ b/assets/blocks/units/exponential-reconstructor-top.png diff --git a/assets/blocks/units/exponential-reconstructor.png b/assets/blocks/units/exponential-reconstructor.png Binary files differnew file mode 100644 index 0000000..d448f39 --- /dev/null +++ b/assets/blocks/units/exponential-reconstructor.png diff --git a/assets/blocks/units/ground-factory.png b/assets/blocks/units/ground-factory.png Binary files differnew file mode 100644 index 0000000..4897ec4 --- /dev/null +++ b/assets/blocks/units/ground-factory.png diff --git a/assets/blocks/units/mech-assembler-side1.png b/assets/blocks/units/mech-assembler-side1.png Binary files differnew file mode 100644 index 0000000..bfa591c --- /dev/null +++ b/assets/blocks/units/mech-assembler-side1.png diff --git a/assets/blocks/units/mech-assembler-side2.png b/assets/blocks/units/mech-assembler-side2.png Binary files differnew file mode 100644 index 0000000..9cd4cde --- /dev/null +++ b/assets/blocks/units/mech-assembler-side2.png diff --git a/assets/blocks/units/mech-assembler-top.png b/assets/blocks/units/mech-assembler-top.png Binary files differnew file mode 100644 index 0000000..eaeb699 --- /dev/null +++ b/assets/blocks/units/mech-assembler-top.png diff --git a/assets/blocks/units/mech-assembler.png b/assets/blocks/units/mech-assembler.png Binary files differnew file mode 100644 index 0000000..d49f5a2 --- /dev/null +++ b/assets/blocks/units/mech-assembler.png diff --git a/assets/blocks/units/mech-fabricator-top.png b/assets/blocks/units/mech-fabricator-top.png Binary files differnew file mode 100644 index 0000000..d4e4d62 --- /dev/null +++ b/assets/blocks/units/mech-fabricator-top.png diff --git a/assets/blocks/units/mech-fabricator.png b/assets/blocks/units/mech-fabricator.png Binary files differnew file mode 100644 index 0000000..2556a96 --- /dev/null +++ b/assets/blocks/units/mech-fabricator.png diff --git a/assets/blocks/units/mech-refabricator-top.png b/assets/blocks/units/mech-refabricator-top.png Binary files differnew file mode 100644 index 0000000..48446c0 --- /dev/null +++ b/assets/blocks/units/mech-refabricator-top.png diff --git a/assets/blocks/units/mech-refabricator.png b/assets/blocks/units/mech-refabricator.png Binary files differnew file mode 100644 index 0000000..5d89f8f --- /dev/null +++ b/assets/blocks/units/mech-refabricator.png diff --git a/assets/blocks/units/multiplicative-reconstructor-top.png b/assets/blocks/units/multiplicative-reconstructor-top.png Binary files differnew file mode 100644 index 0000000..e319530 --- /dev/null +++ b/assets/blocks/units/multiplicative-reconstructor-top.png diff --git a/assets/blocks/units/multiplicative-reconstructor.png b/assets/blocks/units/multiplicative-reconstructor.png Binary files differnew file mode 100644 index 0000000..5ea5f9f --- /dev/null +++ b/assets/blocks/units/multiplicative-reconstructor.png diff --git a/assets/blocks/units/naval-factory.png b/assets/blocks/units/naval-factory.png Binary files differnew file mode 100644 index 0000000..f022ba2 --- /dev/null +++ b/assets/blocks/units/naval-factory.png diff --git a/assets/blocks/units/prime-refabricator-top.png b/assets/blocks/units/prime-refabricator-top.png Binary files differnew file mode 100644 index 0000000..675639a --- /dev/null +++ b/assets/blocks/units/prime-refabricator-top.png diff --git a/assets/blocks/units/prime-refabricator.png b/assets/blocks/units/prime-refabricator.png Binary files differnew file mode 100644 index 0000000..d48e63c --- /dev/null +++ b/assets/blocks/units/prime-refabricator.png diff --git a/assets/blocks/units/repair-point.png b/assets/blocks/units/repair-point.png Binary files differnew file mode 100644 index 0000000..1f81c2c --- /dev/null +++ b/assets/blocks/units/repair-point.png diff --git a/assets/blocks/units/repair-turret.png b/assets/blocks/units/repair-turret.png Binary files differnew file mode 100644 index 0000000..f410dbf --- /dev/null +++ b/assets/blocks/units/repair-turret.png diff --git a/assets/blocks/units/ship-assembler-side1.png b/assets/blocks/units/ship-assembler-side1.png Binary files differnew file mode 100644 index 0000000..ec57520 --- /dev/null +++ b/assets/blocks/units/ship-assembler-side1.png diff --git a/assets/blocks/units/ship-assembler-side2.png b/assets/blocks/units/ship-assembler-side2.png Binary files differnew file mode 100644 index 0000000..5bac81c --- /dev/null +++ b/assets/blocks/units/ship-assembler-side2.png diff --git a/assets/blocks/units/ship-assembler-top.png b/assets/blocks/units/ship-assembler-top.png Binary files differnew file mode 100644 index 0000000..c055289 --- /dev/null +++ b/assets/blocks/units/ship-assembler-top.png diff --git a/assets/blocks/units/ship-assembler.png b/assets/blocks/units/ship-assembler.png Binary files differnew file mode 100644 index 0000000..1617c27 --- /dev/null +++ b/assets/blocks/units/ship-assembler.png diff --git a/assets/blocks/units/ship-fabricator-top.png b/assets/blocks/units/ship-fabricator-top.png Binary files differnew file mode 100644 index 0000000..b120238 --- /dev/null +++ b/assets/blocks/units/ship-fabricator-top.png diff --git a/assets/blocks/units/ship-fabricator.png b/assets/blocks/units/ship-fabricator.png Binary files differnew file mode 100644 index 0000000..3f02145 --- /dev/null +++ b/assets/blocks/units/ship-fabricator.png diff --git a/assets/blocks/units/ship-refabricator-top.png b/assets/blocks/units/ship-refabricator-top.png Binary files differnew file mode 100644 index 0000000..aa8cc85 --- /dev/null +++ b/assets/blocks/units/ship-refabricator-top.png diff --git a/assets/blocks/units/ship-refabricator.png b/assets/blocks/units/ship-refabricator.png Binary files differnew file mode 100644 index 0000000..1c921a4 --- /dev/null +++ b/assets/blocks/units/ship-refabricator.png diff --git a/assets/blocks/units/tank-assembler-side1.png b/assets/blocks/units/tank-assembler-side1.png Binary files differnew file mode 100644 index 0000000..6ea0859 --- /dev/null +++ b/assets/blocks/units/tank-assembler-side1.png diff --git a/assets/blocks/units/tank-assembler-side2.png b/assets/blocks/units/tank-assembler-side2.png Binary files differnew file mode 100644 index 0000000..c549831 --- /dev/null +++ b/assets/blocks/units/tank-assembler-side2.png diff --git a/assets/blocks/units/tank-assembler-top.png b/assets/blocks/units/tank-assembler-top.png Binary files differnew file mode 100644 index 0000000..1478f2c --- /dev/null +++ b/assets/blocks/units/tank-assembler-top.png diff --git a/assets/blocks/units/tank-assembler.png b/assets/blocks/units/tank-assembler.png Binary files differnew file mode 100644 index 0000000..74e2017 --- /dev/null +++ b/assets/blocks/units/tank-assembler.png diff --git a/assets/blocks/units/tank-fabricator-top.png b/assets/blocks/units/tank-fabricator-top.png Binary files differnew file mode 100644 index 0000000..18ef34f --- /dev/null +++ b/assets/blocks/units/tank-fabricator-top.png diff --git a/assets/blocks/units/tank-fabricator.png b/assets/blocks/units/tank-fabricator.png Binary files differnew file mode 100644 index 0000000..91eec5d --- /dev/null +++ b/assets/blocks/units/tank-fabricator.png diff --git a/assets/blocks/units/tank-refabricator-top.png b/assets/blocks/units/tank-refabricator-top.png Binary files differnew file mode 100644 index 0000000..f57933e --- /dev/null +++ b/assets/blocks/units/tank-refabricator-top.png diff --git a/assets/blocks/units/tank-refabricator.png b/assets/blocks/units/tank-refabricator.png Binary files differnew file mode 100644 index 0000000..3d73664 --- /dev/null +++ b/assets/blocks/units/tank-refabricator.png diff --git a/assets/blocks/units/tetrative-reconstructor-top.png b/assets/blocks/units/tetrative-reconstructor-top.png Binary files differnew file mode 100644 index 0000000..9db3308 --- /dev/null +++ b/assets/blocks/units/tetrative-reconstructor-top.png diff --git a/assets/blocks/units/tetrative-reconstructor.png b/assets/blocks/units/tetrative-reconstructor.png Binary files differnew file mode 100644 index 0000000..391f483 --- /dev/null +++ b/assets/blocks/units/tetrative-reconstructor.png diff --git a/assets/blocks/units/unit-cargo-loader.png b/assets/blocks/units/unit-cargo-loader.png Binary files differnew file mode 100644 index 0000000..6b8de38 --- /dev/null +++ b/assets/blocks/units/unit-cargo-loader.png diff --git a/assets/blocks/units/unit-repair-tower.png b/assets/blocks/units/unit-repair-tower.png Binary files differnew file mode 100644 index 0000000..59530d8 --- /dev/null +++ b/assets/blocks/units/unit-repair-tower.png diff --git a/assets/blocks/walls/beryllium-wall-large.png b/assets/blocks/walls/beryllium-wall-large.png Binary files differnew file mode 100644 index 0000000..6280f13 --- /dev/null +++ b/assets/blocks/walls/beryllium-wall-large.png diff --git a/assets/blocks/walls/beryllium-wall.png b/assets/blocks/walls/beryllium-wall.png Binary files differnew file mode 100644 index 0000000..575bfe0 --- /dev/null +++ b/assets/blocks/walls/beryllium-wall.png diff --git a/assets/blocks/walls/blast-door-open.png b/assets/blocks/walls/blast-door-open.png Binary files differnew file mode 100644 index 0000000..ba18d5a --- /dev/null +++ b/assets/blocks/walls/blast-door-open.png diff --git a/assets/blocks/walls/blast-door.png b/assets/blocks/walls/blast-door.png Binary files differnew file mode 100644 index 0000000..088eed5 --- /dev/null +++ b/assets/blocks/walls/blast-door.png diff --git a/assets/blocks/walls/carbide-wall-large.png b/assets/blocks/walls/carbide-wall-large.png Binary files differnew file mode 100644 index 0000000..959b005 --- /dev/null +++ b/assets/blocks/walls/carbide-wall-large.png diff --git a/assets/blocks/walls/carbide-wall.png b/assets/blocks/walls/carbide-wall.png Binary files differnew file mode 100644 index 0000000..98ea5f4 --- /dev/null +++ b/assets/blocks/walls/carbide-wall.png diff --git a/mindus/assets/blocks/walls/copper-wall-large.png b/assets/blocks/walls/copper-wall-large.png Binary files differindex 3d4286e..3d4286e 100644 --- a/mindus/assets/blocks/walls/copper-wall-large.png +++ b/assets/blocks/walls/copper-wall-large.png diff --git a/assets/blocks/walls/copper-wall.png b/assets/blocks/walls/copper-wall.png Binary files differnew file mode 100644 index 0000000..04d0cf8 --- /dev/null +++ b/assets/blocks/walls/copper-wall.png diff --git a/assets/blocks/walls/door-large-open.png b/assets/blocks/walls/door-large-open.png Binary files differnew file mode 100644 index 0000000..bd1a2b1 --- /dev/null +++ b/assets/blocks/walls/door-large-open.png diff --git a/assets/blocks/walls/door-large.png b/assets/blocks/walls/door-large.png Binary files differnew file mode 100644 index 0000000..3527334 --- /dev/null +++ b/assets/blocks/walls/door-large.png diff --git a/assets/blocks/walls/door-open.png b/assets/blocks/walls/door-open.png Binary files differnew file mode 100644 index 0000000..78e5708 --- /dev/null +++ b/assets/blocks/walls/door-open.png diff --git a/assets/blocks/walls/door.png b/assets/blocks/walls/door.png Binary files differnew file mode 100644 index 0000000..63d2431 --- /dev/null +++ b/assets/blocks/walls/door.png diff --git a/assets/blocks/walls/phase-wall-large.png b/assets/blocks/walls/phase-wall-large.png Binary files differnew file mode 100644 index 0000000..c571315 --- /dev/null +++ b/assets/blocks/walls/phase-wall-large.png diff --git a/assets/blocks/walls/phase-wall.png b/assets/blocks/walls/phase-wall.png Binary files differnew file mode 100644 index 0000000..ffd84f0 --- /dev/null +++ b/assets/blocks/walls/phase-wall.png diff --git a/assets/blocks/walls/plastanium-wall-large.png b/assets/blocks/walls/plastanium-wall-large.png Binary files differnew file mode 100644 index 0000000..3c61d22 --- /dev/null +++ b/assets/blocks/walls/plastanium-wall-large.png diff --git a/assets/blocks/walls/plastanium-wall.png b/assets/blocks/walls/plastanium-wall.png Binary files differnew file mode 100644 index 0000000..2278aa3 --- /dev/null +++ b/assets/blocks/walls/plastanium-wall.png diff --git a/assets/blocks/walls/reinforced-surge-wall-large.png b/assets/blocks/walls/reinforced-surge-wall-large.png Binary files differnew file mode 100644 index 0000000..626dc9e --- /dev/null +++ b/assets/blocks/walls/reinforced-surge-wall-large.png diff --git a/assets/blocks/walls/reinforced-surge-wall.png b/assets/blocks/walls/reinforced-surge-wall.png Binary files differnew file mode 100644 index 0000000..2268733 --- /dev/null +++ b/assets/blocks/walls/reinforced-surge-wall.png diff --git a/mindus/assets/blocks/walls/scrap-wall-gigantic.png b/assets/blocks/walls/scrap-wall-gigantic.png Binary files differindex c503468..c503468 100644 --- a/mindus/assets/blocks/walls/scrap-wall-gigantic.png +++ b/assets/blocks/walls/scrap-wall-gigantic.png diff --git a/assets/blocks/walls/scrap-wall-huge.png b/assets/blocks/walls/scrap-wall-huge.png Binary files differnew file mode 100644 index 0000000..d5c5822 --- /dev/null +++ b/assets/blocks/walls/scrap-wall-huge.png diff --git a/assets/blocks/walls/scrap-wall-large.png b/assets/blocks/walls/scrap-wall-large.png Binary files differnew file mode 100644 index 0000000..5785da4 --- /dev/null +++ b/assets/blocks/walls/scrap-wall-large.png diff --git a/assets/blocks/walls/scrap-wall.png b/assets/blocks/walls/scrap-wall.png Binary files differnew file mode 100644 index 0000000..49ac797 --- /dev/null +++ b/assets/blocks/walls/scrap-wall.png diff --git a/mindus/assets/blocks/walls/shielded-wall.png b/assets/blocks/walls/shielded-wall.png Binary files differindex 1c6f453..1c6f453 100644 --- a/mindus/assets/blocks/walls/shielded-wall.png +++ b/assets/blocks/walls/shielded-wall.png diff --git a/assets/blocks/walls/surge-wall-large.png b/assets/blocks/walls/surge-wall-large.png Binary files differnew file mode 100644 index 0000000..6ecdbfa --- /dev/null +++ b/assets/blocks/walls/surge-wall-large.png diff --git a/assets/blocks/walls/surge-wall.png b/assets/blocks/walls/surge-wall.png Binary files differnew file mode 100644 index 0000000..5a24918 --- /dev/null +++ b/assets/blocks/walls/surge-wall.png diff --git a/mindus/assets/blocks/walls/thorium-wall-large.png b/assets/blocks/walls/thorium-wall-large.png Binary files differindex 551f775..551f775 100644 --- a/mindus/assets/blocks/walls/thorium-wall-large.png +++ b/assets/blocks/walls/thorium-wall-large.png diff --git a/assets/blocks/walls/thorium-wall.png b/assets/blocks/walls/thorium-wall.png Binary files differnew file mode 100644 index 0000000..6e10b09 --- /dev/null +++ b/assets/blocks/walls/thorium-wall.png diff --git a/assets/blocks/walls/thruster-top.png b/assets/blocks/walls/thruster-top.png Binary files differnew file mode 100644 index 0000000..4b8e315 --- /dev/null +++ b/assets/blocks/walls/thruster-top.png diff --git a/mindus/assets/blocks/walls/thruster.png b/assets/blocks/walls/thruster.png Binary files differindex ec800a0..ec800a0 100644 --- a/mindus/assets/blocks/walls/thruster.png +++ b/assets/blocks/walls/thruster.png diff --git a/mindus/assets/blocks/walls/titanium-wall-large.png b/assets/blocks/walls/titanium-wall-large.png Binary files differindex 6573133..6573133 100644 --- a/mindus/assets/blocks/walls/titanium-wall-large.png +++ b/assets/blocks/walls/titanium-wall-large.png diff --git a/assets/blocks/walls/titanium-wall.png b/assets/blocks/walls/titanium-wall.png Binary files differnew file mode 100644 index 0000000..d712b42 --- /dev/null +++ b/assets/blocks/walls/titanium-wall.png diff --git a/assets/blocks/walls/tungsten-wall-large.png b/assets/blocks/walls/tungsten-wall-large.png Binary files differnew file mode 100644 index 0000000..8f10e22 --- /dev/null +++ b/assets/blocks/walls/tungsten-wall-large.png diff --git a/assets/blocks/walls/tungsten-wall.png b/assets/blocks/walls/tungsten-wall.png Binary files differnew file mode 100644 index 0000000..d8d7615 --- /dev/null +++ b/assets/blocks/walls/tungsten-wall.png diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..94230a4 --- /dev/null +++ b/build.rs @@ -0,0 +1,115 @@ +#![feature(let_chains)] +use image::codecs::png::PngDecoder; +use image::DynamicImage; +use std::fs::File; +use std::io::{BufReader, Write as _}; +use std::iter::Iterator; +use std::path::Path; +use walkdir::WalkDir; + +macro_rules! wr { + ($dst:expr => $($arg:tt)*) => { writeln!($dst, $($arg)*).unwrap() }; +} + +fn kebab2bigsnek(kebab: &str) -> String { + let mut n = String::new(); + n.reserve(kebab.len()); + for c in kebab.chars() { + if c == '-' { + n.push('_'); + } else { + n.push(c.to_ascii_uppercase()); + } + } + n +} + +fn main() { + let _ = std::fs::remove_dir_all("target/out"); + let walkdir = WalkDir::new("assets"); + println!("cargo:rerun-if-changed=assets/"); + println!("cargo:rerun-if-changed=build.rs"); + let o = std::env::var("OUT_DIR").unwrap(); + let o = Path::new(&o); + let mut full = File::create(o.join("full.rs")).unwrap(); + // let mut half = File::create(o.join("half.rs")).unwrap(); + let mut quar = File::create(o.join("quar.rs")).unwrap(); + let mut eigh = File::create(o.join("eigh.rs")).unwrap(); + let mut n = 22usize; + + wr!(full => "pub mod full {{"); + wr!(full => "pub static EMPTY: Image<&[u8], 4> = Image::new(unsafe {{ std::num::NonZeroU32::new_unchecked(32) }}, unsafe {{ std::num::NonZeroU32::new_unchecked(32) }}, &[0; 32 * 32 * 4]);"); + + wr!(quar => "pub mod quar {{"); + // forced to do this because try_into isnt const + wr!(quar => "pub static EMPTY: Image<&[u8], 4> = Image::new(unsafe {{ std::num::NonZeroU32::new_unchecked(8) }}, unsafe {{ std::num::NonZeroU32::new_unchecked(8) }}, &[0; 8 * 8 * 4]);"); + + wr!(eigh => "pub mod eigh {{"); + wr!(eigh => "pub static EMPTY: Image<&[u8], 4> = Image::new(unsafe {{ std::num::NonZeroU32::new_unchecked(4) }}, unsafe {{ std::num::NonZeroU32::new_unchecked(4) }}, &[0; 4 * 4 * 4]);"); + + for mut file in [&full, &quar, &eigh] { + wr!(file => "use crate::utils::Image;"); + wr!(file => "pub static CLIFF: Image<&[u8], 4> = EMPTY.copy();"); + for i in 1..=16 { + wr!(file => "pub static BUILD{}: Image<&[u8], 4> = EMPTY.copy();", i); + } + } + for e in walkdir.into_iter().filter_map(Result::ok) { + let path = e.path(); + if path.is_file() && let Some(e) = path.extension() && e == "png" { + let p = DynamicImage::from_decoder(PngDecoder::new(BufReader::new(File::open(path).unwrap())).unwrap()).unwrap().into_rgba8(); + if path.file_name().unwrap().to_str().unwrap().contains("-liquid.png") { + continue + } + let f = path.file_name().unwrap().to_str().unwrap(); + if f.contains("bottom") || f.contains("-team") || f.contains("-end") || f.contains("stack") { + continue; + } + let path = kebab2bigsnek(path.with_extension("").file_name().unwrap().to_str().unwrap()); + if matches!(path.as_str(), "CLIFF_CRUSHER_ROTATOR" | "NEOPLASIA_REACTOR_CENTER" | "FLUX_REACTOR_MID" | "EDGE" | "PHASE_CONVEYOR_BRIDGE" | "BRIDGE_ARROW" | "DUCT_BRIDGE_BRIDGE" | "DUCT_BRIDGE_ARROW" | "LAUNCHPOD" | "BRIDGE_CONVEYOR_BRIDGE" | "BRIDGE_CONVEYOR_ARROW" | "PHASE_CONVEYOR_ARROW" | "REINFORCED_BRIDGE_CONDUIT_ARROW" | "REINFORCED_BRIDGE_CONDUIT_BRIDGE" | "PHASE_CONDUIT_BRIDGE" | "BRIDGE_CONDUIT_ARROW" | "PHASE_CONDUIT_ARROW" | "BRIDGE_CONDUIT_BRIDGE" | "PLATED_CONDUIT_CAP") { + continue + } + macro_rules! writ { + ($ext:ident / $scale:literal) => { + let mut buf = File::create(o.join(n.to_string() + "-" + stringify!($ext))).unwrap(); + let new = if $scale == 1 { + p.clone() + } else { + // boulders + let (mx, my) = if p.width() + p.height() == 48+48 { + (32, 32) + // vents (dont match VENT_CONDENSER, do match (RHYOLITE_VENT) + } else if path.contains("_VENT") + // talls + || matches!(path.as_str(), "YELLOWCORAL" | "WHITE_TREE" | "WHITE_TREE_DEAD" | "REDWEED" | "SPORE_CLUSTER" | "CRYSTAL_BLOCKS" | "CRYSTAL_CLUSTER" | "VIBRANT_CRYSTAL_CLUSTER" | "CRYSTAL_ORBS") { + (32, 32) + } else { + (p.height(), p.height()) + }; + image::imageops::resize( + &p, + mx / $scale, + my / $scale, + image::imageops::Nearest, + ) + }; + let x = new.width(); + let y = new.height(); + buf.write_all(&new.into_raw()).unwrap(); + wr!($ext => + r#"pub(crate) static {path}: Image<&[u8], 4> = Image::new(unsafe {{ std::num::NonZeroU32::new_unchecked( {x} ) }}, unsafe {{ std::num::NonZeroU32::new_unchecked( {y} ) }}, include_bytes!(concat!(env!("OUT_DIR"), "/{n}-{}")));"#, + stringify!($ext) + ); + }; + } + writ!(full / 1); + // writ!(half + 0.5); + writ!(quar / 4); + writ!(eigh / 8); + n += 1; + } + } + for mut f in [full, eigh, quar] { + f.write_all(b"}").unwrap(); + } +} diff --git a/mindus/items.py b/items.py index 922cc30..922cc30 100644 --- a/mindus/items.py +++ b/items.py diff --git a/lemu/.gitignore b/lemu/.gitignore deleted file mode 100644 index 53739ff..0000000 --- a/lemu/.gitignore +++ /dev/null @@ -1 +0,0 @@ -image*.png diff --git a/lemu/Cargo.toml b/lemu/Cargo.toml deleted file mode 100644 index 551d41f..0000000 --- a/lemu/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "lemu" -version = "0.2.22" -edition = "2024" -description = "M-LOG runner" -authors = ["bend-n <[email protected]>"] -repository = "https://github.com/bend-n/mindus.git" -license = "MIT" -readme = "README.md" -keywords = ["mindustry", "logic", "emulator", "executor"] - -[dependencies] -thiserror = "1.0" -enum_dispatch = "0.3" -fimg = { version = "0.4.52", default-features = false } -logos = "0.14.0" -rust-fuzzy-search = { version = "0.1.1", optional = true } -beef = "0.5" -lerr = { version = "0.1.5", optional = true } -comat = { version = "0.1.2", optional = true } -vecto = "0.1.1" -phf = { version = "0.12.1", features = ["macros"] } -atools = "0.1.7" -car = "0.1.2" - -[features] -debug = ["comat"] -bin = ["fimg/save", "diagnose"] -diagnose = ["rust-fuzzy-search", "lerr", "comat"] -default = ["bin"] - -[[bin]] -name = "lemu" -doc = false -required-features = ["bin"] -path = "src/main.rs" diff --git a/lemu/LICENSE b/lemu/LICENSE deleted file mode 100644 index 8c33164..0000000 --- a/lemu/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2026 bendn - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/lemu/README.md b/lemu/README.md deleted file mode 100644 index 34044f9..0000000 --- a/lemu/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# lemu - -mindustry Logic EMUlator. - -## Usage - -```rust -use lemu::Executor; -let mut lex = Executor::with_output(std::io::stdout()).program(r#"print "hello world""#).expect("program ok"); -lex.run(); -```
\ No newline at end of file diff --git a/lemu/rust-toolchain.toml b/lemu/rust-toolchain.toml deleted file mode 100644 index 5d56faf..0000000 --- a/lemu/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "nightly" diff --git a/lemu/rustfmt.toml b/lemu/rustfmt.toml deleted file mode 100644 index d4d3d50..0000000 --- a/lemu/rustfmt.toml +++ /dev/null @@ -1 +0,0 @@ -version = "Two"
\ No newline at end of file diff --git a/lemu/speed.mlog b/lemu/speed.mlog deleted file mode 100644 index 3931523..0000000 --- a/lemu/speed.mlog +++ /dev/null @@ -1,7 +0,0 @@ -set n 10000000 -loop: - jump ret lessThanEq n 0 - op sub n n 1 - jump loop always -ret: - end diff --git a/lemu/src/celliterate.mlog b/lemu/src/celliterate.mlog deleted file mode 100644 index d0a53ec..0000000 --- a/lemu/src/celliterate.mlog +++ /dev/null @@ -1,3 +0,0 @@ -read result cell1 0 -op add result result 1 -write result cell1 0 diff --git a/lemu/src/code.rs b/lemu/src/code.rs deleted file mode 100644 index b57cb55..0000000 --- a/lemu/src/code.rs +++ /dev/null @@ -1,62 +0,0 @@ -use crate::debug::{info::DebugInfo, printable::Printable}; - -use super::{ - instructions::{DrawInstr, Instr}, - lexer::Token, -}; - -#[derive(Debug)] -pub enum PInstr<'s> { - Instr(Instr), - Draw(DrawInstr), - Code(Box<[Token<'s>]>), - Comment(&'s str), -} - -impl Printable for PInstr<'_> { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl std::fmt::Write) -> std::fmt::Result { - match self { - Self::Instr(i) => i.print(info, f), - Self::Draw(i) => i.print(info, f), - Self::Code(c) => { - let mut toks = c.iter(); - if let Some(t) = toks.next() { - write!(f, "{t}")?; - } - for token in toks { - write!(f, " {token}")?; - } - Ok(()) - } - Self::Comment(c) => write!(f, "{c}"), - } - } -} - -impl Printable for Code<'_> { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl std::fmt::Write) -> std::fmt::Result { - for instr in &*self.0 { - instr.print(info, f)?; - writeln!(f)?; - } - Ok(()) - } -} - -#[repr(transparent)] -#[derive(Debug)] -pub struct Code<'s>(Box<[PInstr<'s>]>); - -// Pin requires -impl<'s> std::ops::Deref for Code<'s> { - type Target = [PInstr<'s>]; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} -impl<'s> Code<'s> { - pub(crate) fn new(code: Box<[PInstr<'s>]>) -> Self { - Self(code) - } -} diff --git a/lemu/src/debug/info.rs b/lemu/src/debug/info.rs deleted file mode 100644 index e23f23b..0000000 --- a/lemu/src/debug/info.rs +++ /dev/null @@ -1,58 +0,0 @@ -use std::ops::Range; - -use crate::{ - executor::Instruction, - memory::{LAddress, LVar}, -}; - -pub struct DebugInfo<'s> { - pub variables: Box<[VarInfo<'s>]>, - /// maps "start" to 0 - pub labels: Vec<(&'s str, Instruction)>, -} - -impl<'s> Default for DebugInfo<'s> { - fn default() -> Self { - Self { - variables: vec![].into(), - labels: vec![], - } - } -} - -impl<'s> DebugInfo<'s> { - pub fn label(&self, of: Instruction) -> Option<&'s str> { - self.labels.iter().find(|(_, i)| *i == of).map(|&(x, _)| x) - } -} - -impl<'s> std::ops::Index<LAddress> for DebugInfo<'s> { - type Output = VarData<'s>; - - fn index(&self, index: LAddress) -> &Self::Output { - &self.variables[index.address as usize].data - } -} - -#[derive(Clone, Debug)] -pub struct VarInfo<'s> { - pub data: VarData<'s>, - #[allow(dead_code)] - pub span: Range<usize>, -} - -#[derive(Clone, Debug)] -pub enum VarData<'s> { - Variable(&'s str), - // not necessary, but convenient. - Constant(LVar<'s>), -} - -impl std::fmt::Display for VarData<'_> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - VarData::Variable(name) => f.write_str(name), - VarData::Constant(c) => write!(f, "{c}"), - } - } -} diff --git a/lemu/src/debug/mod.rs b/lemu/src/debug/mod.rs deleted file mode 100644 index 4d7ba0a..0000000 --- a/lemu/src/debug/mod.rs +++ /dev/null @@ -1,24 +0,0 @@ -pub mod info; -pub mod printable; - -/// kill me -pub fn ff(f: f64) -> String { - let mut s = f.to_string().into_bytes(); - if let Some((dot, _)) = s.iter().enumerate().find(|&(_, b)| *b == b'.') { - let mut real = 0; - for b in &mut s[dot..].iter_mut().skip(1) { - match b { - _ if real > 4 => { - s.truncate(dot + real); - break; - } - b'1'..=b'9' => real += 1, - _ => { - s.truncate(dot + real); - break; - } - } - } - } - String::from_utf8(s).unwrap() -} diff --git a/lemu/src/debug/printable.rs b/lemu/src/debug/printable.rs deleted file mode 100644 index 243da57..0000000 --- a/lemu/src/debug/printable.rs +++ /dev/null @@ -1,7 +0,0 @@ -use std::fmt::{Debug, Result, Write}; - -use super::info::DebugInfo; - -pub trait Printable: Debug { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl Write) -> Result; -} diff --git a/lemu/src/executor/builder.rs b/lemu/src/executor/builder.rs deleted file mode 100644 index 83bec1e..0000000 --- a/lemu/src/executor/builder.rs +++ /dev/null @@ -1,159 +0,0 @@ -use fimg::Image; -use std::{collections::VecDeque, io::Write as Wr}; - -use super::{ - BANK_SIZE, CELL_SIZE, Display, DisplayState, Drawing, Executor, ExecutorContext, Instruction, - Limit, Memory, PInstr, UPInstr, -}; -use crate::{ - code::Code, - debug::info::DebugInfo, - instructions::{DrawInstr, Instr}, - lexer::Token, - memory::{LRegistry, LVar}, -}; - -/// for internal use by [parser](crate::parser) only -pub struct ExecutorBuilderInternal<'v, W: Wr> { - displays: Box<[(Image<Vec<u8>, 4>, DisplayState)]>, - pub(crate) program: Vec<UPInstr<'v>>, - output: Option<W>, - banks: Vec<f64>, - cells: Vec<f64>, - iteration_limit: Limit, - instruction_limit: Limit, - pub(crate) mem: Vec<LVar<'v>>, - pub(crate) debug_info: DebugInfo<'v>, -} - -impl<'s, W: Wr> ExecutorBuilderInternal<'s, W> { - pub(crate) fn new(w: Option<W>, d: Vec<Image<Vec<u8>, 4>>) -> Self { - Self { - output: w, - displays: d - .into_iter() - .map(|d| (d, DisplayState::default())) - .collect(), - program: vec![], - banks: vec![], - cells: vec![], - iteration_limit: Limit::limited(1), - instruction_limit: Limit::Unlimited, - mem: Vec::with_capacity(64), - debug_info: DebugInfo::default(), - } - } - - pub(crate) fn inslimit(&mut self, ilimit: Limit) -> &mut Self { - self.instruction_limit = ilimit; - self - } - - pub(crate) fn itrlimit(&mut self, ilimit: Limit) -> &mut Self { - self.iteration_limit = ilimit; - self - } - - pub(crate) fn jmp(&mut self) { - self.program.push(UPInstr::UnfinishedJump); - } - - pub(crate) fn code(&mut self, v: Box<[Token<'s>]>) { - self.program.push(UPInstr::Code(v)); - } - - pub(crate) fn bank(&mut self, n: usize) -> Memory { - assert!(n != 0); - if n * BANK_SIZE > self.banks.len() { - self.banks.resize(n * BANK_SIZE, 0.0); - println!("resized"); - } - Memory::Bank(((self.banks.len() - BANK_SIZE) / BANK_SIZE) as u8) - } - - pub(crate) fn cell(&mut self, n: usize) -> Memory { - assert!(n != 0); - if n * CELL_SIZE > self.cells.len() { - self.cells.resize(n * CELL_SIZE, 0.0); - } - Memory::Cell(((self.cells.len() - CELL_SIZE) / CELL_SIZE) as u8) - } - - pub(crate) fn next(&self) -> Instruction { - Instruction(self.program.len()) - } - - pub(crate) fn last(&self) -> Instruction { - Instruction(self.program.len() - 1) - } - - pub(crate) fn add(&mut self, i: impl Into<Instr>) { - self.program.push(UPInstr::Instr(i.into())); - } - - pub(crate) fn draw(&mut self, i: impl Into<DrawInstr>) { - self.program.push(UPInstr::Draw(i.into())); - } - - pub(crate) fn valid(&self, Instruction(i): Instruction) -> bool { - self.program.len() > i - } - - pub(crate) fn display(&mut self, n: usize) -> Result<Display, usize> { - self.displays - .get(n.checked_sub(1).ok_or(n)?) - .map(|_| Display(n - 1)) - .ok_or(n) - } - - pub(crate) fn finish(self) -> Executor<'s, W> { - fn cst<const N: usize>(a: Vec<f64>) -> Box<[[f64; N]]> { - let len = a.len(); - let ptr: *mut [f64] = Box::into_raw(a.into()); - let ptr: *mut [[f64; N]] = - core::ptr::slice_from_raw_parts_mut(ptr.cast::<[f64; N]>(), len / N); - unsafe { Box::from_raw(ptr) } - } - let program = Code::new( - self.program - .into_iter() - .map(|v| match v { - UPInstr::Instr(i) => PInstr::Instr(i), - UPInstr::Draw(i) => PInstr::Draw(i), - UPInstr::Comment(c) => PInstr::Comment(c), - UPInstr::UnfinishedJump => panic!("all jumps should have finished"), - UPInstr::Code(c) => PInstr::Code(c), - }) - .collect::<Box<[PInstr]>>(), - ); - let Self { - instruction_limit, - iteration_limit, - displays, - output, - banks, - debug_info, - cells, - mem, - .. - } = self; - Executor { - instruction_limit, - iteration_limit, - inner: ExecutorContext { - cells: cst::<CELL_SIZE>(cells), - banks: cst::<BANK_SIZE>(banks), - memory: LRegistry(mem.into()), - iterations: 0, - display: Drawing { - displays, - buffer: VecDeque::new(), - }, - output, - }, - instructions_ran: 0, - debug_info, - program, - } - } -} diff --git a/lemu/src/executor/mod.rs b/lemu/src/executor/mod.rs deleted file mode 100644 index 0989bc0..0000000 --- a/lemu/src/executor/mod.rs +++ /dev/null @@ -1,320 +0,0 @@ -mod builder; -const COUNTER: LAddress = unsafe { LAddress::addr(0) }; -use crate::{ - debug::{info::DebugInfo, printable::Printable}, - instructions::draw::Drawn, -}; - -use super::{ - code::{Code, PInstr}, - instructions::{DrawInstr, Flow, Frozen, Instr, LInstruction}, - lexer::Token, - memory::{LAddress, LRegistry, LVar}, -}; -pub use builder::ExecutorBuilderInternal; -use fimg::Image; -use std::{collections::VecDeque, io::Write, num::NonZeroUsize}; - -#[derive(Debug, Copy, Clone, Default)] -pub struct Display(pub usize); - -impl std::fmt::Display for Display { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "display{}", self.0 + 1) - } -} - -#[derive(Debug, Copy, Clone)] -pub enum Memory { - Cell(u8), - Bank(u8), -} - -impl Memory { - pub(crate) const fn fits(self, i: usize) -> bool { - match self { - Self::Bank(_) => i < BANK_SIZE, - Self::Cell(_) => i < CELL_SIZE, - } - } - - pub(crate) const fn size(&self) -> usize { - match self { - Self::Bank(_) => BANK_SIZE, - Self::Cell(_) => CELL_SIZE, - } - } -} - -impl std::fmt::Display for Memory { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::Bank(n) => write!(f, "bank{}", n + 1), - Self::Cell(n) => write!(f, "cell{}", n + 1), - } - } -} - -pub const BANK_SIZE: usize = 512; -pub const CELL_SIZE: usize = 64; - -#[derive(Copy, Clone, PartialEq, Eq)] -pub struct Instruction(usize); - -impl Instruction { - /// # Safety - /// verify n is valid. - pub const unsafe fn new(n: usize) -> Self { - Self(n) - } - - pub const fn get(self) -> usize { - self.0 - } -} - -impl std::fmt::Debug for Instruction { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Instruction#{}", self.0) - } -} - -#[derive(Debug, Copy, Clone)] -pub enum Limit { - /// limited to n - Limited(NonZeroUsize), - /// unlimited - Unlimited, -} - -impl Limit { - /// panics if n != 0 - pub fn limited(n: usize) -> Self { - Self::Limited(n.try_into().expect("nonzero")) - } -} - -impl Limit { - pub(crate) const fn reached(self, n: usize) -> bool { - match self { - Self::Limited(v) => v.get() <= n, - Self::Unlimited => false, - } - } -} - -/// One time use logic executor. -pub struct Executor<'varnames, W: Write> { - /// if limited, will run n instructions before exiting. - pub instruction_limit: Limit, - /// if limtited, will loop(go from a end to the start) n times before exiting - /// both unlimited does not mean this function will never return; - /// a `Stop` instruction will break the loop. - pub iteration_limit: Limit, - pub(crate) inner: ExecutorContext<'varnames, W>, - /// gets pointed to by drawbuf (pls no move) - pub(crate) program: Code<'varnames>, - /// Counter for the number of instructions we have run so far. - pub instructions_ran: usize, - debug_info: DebugInfo<'varnames>, -} - -impl<W: Write> std::fmt::Display for Executor<'_, W> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - self.program.print(&self.debug_info, f) - } -} - -#[derive(Debug)] -pub enum UPInstr<'s> { - Instr(Instr), - Draw(DrawInstr), - UnfinishedJump, - Code(Box<[Token<'s>]>), - Comment(&'s str), -} - -pub struct Drawing { - pub displays: Box<[(fimg::Image<Vec<u8>, 4>, DisplayState)]>, - pub buffer: VecDeque<Drawn>, -} - -impl Drawing { - fn buffer(&mut self, i: Drawn) { - self.buffer.push_back(i); - } -} -pub struct ExecutorContext<'strings, W: Write> { - // maximum of 128 elements, so can use ~60KB - pub cells: Box<[[f64; CELL_SIZE]]>, // screw world cells - // maximum of 127 elements, so can use ~500KB - pub banks: Box<[[f64; BANK_SIZE]]>, - pub memory: LRegistry<'strings>, - pub display: Drawing, - pub output: Option<W>, - /// Counter for the number of iterations we have run so far. - pub iterations: usize, -} - -/// State of a display. -#[derive(Debug)] -pub struct DisplayState { - /// Color to draw - pub color: (u8, u8, u8, u8), - /// Stroke to draw - pub stroke: f64, -} - -impl DisplayState { - pub const fn col(&self) -> [u8; 4] { - [self.color.0, self.color.1, self.color.2, self.color.3] - } -} - -impl Default for DisplayState { - fn default() -> Self { - Self { - color: Default::default(), - stroke: 5.0, - } - } -} - -impl<'s, W: Write> ExecutorContext<'s, W> { - pub fn flush(&mut self, to: Display) { - let (img, state) = &mut self.display.displays[to.0]; - while let Some(d) = self.display.buffer.pop_front() { - use crate::instructions::draw::Apply; - #[cfg(feature = "debug")] - comat::cprintln!("{d:blue}"); - d.apply(img.as_mut(), state); - } - } - - pub fn mem(&mut self, m: Memory) -> &mut [f64] { - match m { - Memory::Bank(m) => &mut self.banks[m as usize], - Memory::Cell(m) => &mut self.cells[m as usize], - } - } - - pub fn set(&mut self, a: LAddress, b: LAddress) { - self.memory[a] = self.memory[b].clone(); - } - - pub fn get_mut(&mut self, a: LAddress) -> &mut LVar<'s> { - &mut self.memory[a] - } - - pub fn jump(&mut self, Instruction(n): Instruction) { - *self.counter() = n as f64; - } - - pub fn counter(&mut self) -> &mut f64 { - unsafe { - self.memory - .0 - .get_unchecked_mut(0) - .num_mut() - .unwrap_unchecked() - } - } - - pub fn get<'a>(&'a self, a: LAddress) -> &LVar<'s> { - &self.memory[a] - } -} - -/// Returned by the [`output`](Executor::output).function. -pub struct Output<W: Write> { - /// Everything created by a `print` instruction. - pub output: Option<W>, - /// Logic displays that were drawn with `draw` instructions. - pub displays: Box<[(Image<Vec<u8>, 4>, DisplayState)]>, - /// Memory banks, written to with the `write`/`read` instructions - pub cells: Box<[[f64; CELL_SIZE]]>, - /// Memory cells, written to with the `write`/`read` instructions - pub banks: Box<[[f64; BANK_SIZE]]>, -} - -impl<'s, W: Write> Executor<'s, W> { - /// Consume this executor, returning all output. - pub fn output(mut self) -> Output<W> { - for (display, _) in &mut *self.inner.display.displays { - // TODO make the instructions draw flipped-ly - display.flip_v(); - } - Output { - output: self.inner.output, - displays: self.inner.display.displays, - cells: self.inner.cells, - banks: self.inner.banks, - } - } - - /// # Safety - /// - /// `counter` *must* be in bounds. - unsafe fn run_current(&mut self) -> Flow { - // SAFETY: yee - let c = self.inner.counter(); - let i = unsafe { self.program.get_unchecked(*c as usize) }; - *c += 1.0; - match i { - PInstr::Instr(i) => { - #[cfg(feature = "debug")] - { - let mut instr = String::new(); - i.print(&self.debug_info, &mut instr).unwrap(); - let mut mem = String::new(); - self.inner.memory.print(&self.debug_info, &mut mem).unwrap(); - comat::cprintln!( - "{black}{:0<2} | {green}{instr} {black}({mem}){reset}", - self.inner.counter(), - ); - } - - i.run(&mut self.inner) - } - PInstr::Draw(i) => { - if let Some(i) = i.freeze(&self.inner.memory) { - #[cfg(feature = "debug")] - { - let mut mem = String::new(); - self.inner.memory.print(&self.debug_info, &mut mem).unwrap(); - comat::cprintln!( - "{black}{:0<2} | {magenta}{i} {black}({mem}){reset}", - self.inner.counter() - ); - } - self.inner.display.buffer(i) - } - Flow::Continue - } - _ => Flow::Continue, - } - } - - /// Begin code execution. - pub fn run(&mut self) { - while !self.instruction_limit.reached(self.instructions_ran) - && !self.iteration_limit.reached(self.inner.iterations) - { - // SAFETY: we have a check - match unsafe { self.run_current() } { - Flow::Continue => {} - Flow::Exit => break, - Flow::Stay => { - self.instructions_ran += 1; - continue; - } - }; - self.instructions_ran += 1; - let c = self.inner.counter(); - if *c as usize >= self.program.len() { - *c = 0.0; - self.inner.iterations += 1; - } - } - } -} diff --git a/lemu/src/fib.mlog b/lemu/src/fib.mlog deleted file mode 100644 index 6c09c3e..0000000 --- a/lemu/src/fib.mlog +++ /dev/null @@ -1,15 +0,0 @@ - set n 50 - set previous 0 - set fib 1 - op add end n 1 - set i 2 -loop: - jump ret greaterThanEq i end - op add tmp previous fib - set previous fib - set fib tmp - op add i i 1 - jump loop always -ret: - print fib - stop
\ No newline at end of file diff --git a/lemu/src/hello.mlog b/lemu/src/hello.mlog deleted file mode 100644 index 3aac8c4..0000000 --- a/lemu/src/hello.mlog +++ /dev/null @@ -1,2 +0,0 @@ -print "hello world" -stop diff --git a/lemu/src/instructions/cop.rs b/lemu/src/instructions/cop.rs deleted file mode 100644 index 0079bfa..0000000 --- a/lemu/src/instructions/cop.rs +++ /dev/null @@ -1,40 +0,0 @@ -use crate::{lexer::Token, memory::LVar}; - -super::op_enum! { pub enum ConditionOp { - Equal, - NotEqual, - LessThan, - LessThanEq, - GreaterThan, - GreaterThanEq, - StrictEqual, -} } - -macro_rules! op { - ($name: ident $op:tt ) => { - fn $name<'v>(a: &LVar<'v>, b: &LVar<'v>) -> bool { - if let &LVar::Num(a) = a && let &LVar::Num(b) = b { a $op b } else { false } - } - }; -} - -fn eq<'v>(a: &LVar<'v>, b: &LVar<'v>) -> bool { - a == b -} -fn ne<'v>(a: &LVar<'v>, b: &LVar<'v>) -> bool { - a != b -} -op!(lt <); -op!(gt >); -op!(le <=); -op!(ge >=); - -super::op_impl!(ConditionOp, ptr type = for<'f> fn(&LVar<'f>, &LVar<'f>) -> bool { - Equal => eq, - StrictEqual => eq, - NotEqual => ne, - LessThan => lt, - GreaterThan => gt, - LessThanEq => le, - GreaterThanEq => ge, -}); diff --git a/lemu/src/instructions/draw.rs b/lemu/src/instructions/draw.rs deleted file mode 100644 index 1644da0..0000000 --- a/lemu/src/instructions/draw.rs +++ /dev/null @@ -1,601 +0,0 @@ -use super::{Flow, LInstruction, get_num}; -use crate::{ - debug::{info::DebugInfo, printable::Printable}, - executor::{Display, DisplayState, ExecutorContext}, - memory::{LAddress, LRegistry, LVar}, -}; -use enum_dispatch::enum_dispatch; -use fimg::Image; -use std::fmt::{self, Display as Disp}; -use vecto::Vec2; - -pub const INSTRS: &[&str] = &[ - "clear", "color", "col", "stroke", "line", "rect", "lineRect", "triangle", "poly", "linePoly", -]; - -#[enum_dispatch] -pub trait Apply: Disp { - fn apply(self, image: Image<&mut [u8], 4>, state: &mut DisplayState); -} - -#[derive(Debug)] -#[enum_dispatch(Apply)] -pub enum Drawn { - Line(LineD), - RectBordered(RectBorderedD), - RectFilled(RectFilledD), - Triangle(TriangleD), - Clear(ClearD), - SetColor(SetColorD), - SetStroke(SetStrokeD), - Poly(PolyD), - LinePoly(LinePolyD), -} - -impl std::fmt::Display for Drawn { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - Self::Line(i) => write!(f, "{i}"), - Self::RectBordered(i) => write!(f, "{i}"), - Self::RectFilled(i) => write!(f, "{i}"), - Self::Triangle(i) => write!(f, "{i}"), - Self::Clear(i) => write!(f, "{i}"), - Self::SetColor(i) => write!(f, "{i}"), - Self::SetStroke(i) => write!(f, "{i}"), - Self::Poly(i) => write!(f, "{i}"), - Self::LinePoly(i) => write!(f, "{i}"), - } - } -} - -pub trait Frozen<A: Apply>: Printable { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<A>; -} - -macro_rules! dinstr { - [$($x:ident),+] => { - #[derive(Debug, Copy, Clone)] - pub enum DrawInstr { - $($x($x),)+ - } - - $(impl From<$x> for DrawInstr { - fn from(v: $x) -> Self { Self::$x(v) } - })+ - - impl Frozen<Drawn> for DrawInstr { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<Drawn> { - Some(match self { - $(Self::$x(i) => Drawn::from(i.freeze(mem)?),)+ - }) - } - } - impl Printable for DrawInstr { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - match self { - $(Self::$x(i) => i.print(info, f)),+ - } - } - } - } -} - -dinstr! { - Line, - RectBordered, - RectFilled, - Triangle, - Clear, - SetColor, - SetCol, - SetStroke, - Poly, - LinePoly -} - -#[derive(Debug, Copy, Clone)] - -pub struct Clear { - pub r: LAddress, - pub g: LAddress, - pub b: LAddress, -} - -#[derive(Debug, Copy, Clone)] -pub struct ClearD((u8, u8, u8)); - -impl Apply for ClearD { - fn apply(self, mut image: Image<&mut [u8], 4>, _: &mut DisplayState) { - let (r, g, b) = self.0; - for [r2, g2, b2, a2] in image.chunked_mut() { - (*r2, *b2, *g2, *a2) = (r, g, b, 255); - } - } -} - -macro_rules! u8 { - ($self:ident, $mem:expr, $($v:ident)+) => { - ($(match $mem.get($self.$v) { - LVar::Num(n) => n.round() as u8, - _ => return None, - },)+) - }; -} - -impl Frozen<ClearD> for Clear { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<ClearD> { - Some(ClearD(u8!(self, mem, r g b))) - } -} - -impl Printable for Clear { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw clear {} {} {}", - info[self.r], info[self.g], info[self.b] - ) - } -} - -impl Disp for ClearD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "draw clear {} {} {}", self.0.0, self.0.1, self.0.2) - } -} - -#[derive(Debug, Copy, Clone)] -pub struct SetColorD((u8, u8, u8, u8)); - -impl Apply for SetColorD { - fn apply(self, _: Image<&mut [u8], 4>, state: &mut DisplayState) { - state.color = self.0; - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct SetColor { - pub r: LAddress, - pub g: LAddress, - pub b: LAddress, - pub a: LAddress, -} - -impl Frozen<SetColorD> for SetColor { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<SetColorD> { - Some(SetColorD(u8!(self, mem, r g b a))) - } -} - -impl Printable for SetColor { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw color {} {} {} {}", - info[self.r], info[self.g], info[self.b], info[self.a] - ) - } -} - -#[derive(Debug, Copy, Clone)] -pub struct SetCol { - pub col: LAddress, -} - -impl Printable for SetCol { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "draw col ")?; - match &info[self.col] { - crate::debug::info::VarData::Variable(v) => write!(f, "{v}"), - crate::debug::info::VarData::Constant(c) => match c { - LVar::Num(n) => write!(f, "0x{:0<6x}", *n as u32), - LVar::String(s) => write!(f, r#""{s}""#), - }, - } - } -} - -impl Frozen<SetColorD> for SetCol { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<SetColorD> { - let [r, g, b, a] = fimg::Pack::unpack(mem.get(self.col).num()? as u32); - Some(SetColorD((r, g, b, a))) - } -} - -impl Disp for SetColorD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "draw color {} {} {} {}", - self.0.0, self.0.1, self.0.2, self.0.3 - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct SetStroke { - pub size: LAddress, -} - -#[derive(Debug, Copy, Clone)] -pub struct SetStrokeD(f64); - -impl Apply for SetStrokeD { - fn apply(self, _: Image<&mut [u8], 4>, state: &mut DisplayState) { - state.stroke = self.0; - } -} - -impl Frozen<SetStrokeD> for SetStroke { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<SetStrokeD> { - mem.get(self.size).num().map(SetStrokeD) - } -} - -impl Disp for SetStrokeD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "draw stroke {}", self.0) - } -} - -impl Printable for SetStroke { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "draw stroke {}", info[self.size]) - } -} - -pub type Point = (LAddress, LAddress); -#[rustfmt::skip] -macro_rules! point { - ($mem:ident@$point:expr) => { - ($mem.get($point.0).num()?, $mem.get($point.1).num()?) - } -} - -macro_rules! map { - ($tup:expr, $fn:expr) => {{ - let (a, b) = $tup; - ($fn(a), $fn(b)) - }}; -} -#[derive(Debug, Copy, Clone)] - -pub struct Line { - pub point_a: Point, - pub point_b: Point, -} - -#[derive(Debug)] -pub struct LineD(Vec2, Vec2); - -impl Apply for LineD { - fn apply(self, mut image: Image<&mut [u8], 4>, state: &mut DisplayState) { - image.thick_line(self.0, self.1, state.stroke as f32, state.col()); - } -} - -impl Frozen<LineD> for Line { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<LineD> { - Some(LineD( - map!(point!([email protected]_a), |n| n as f32).into(), - map!(point!([email protected]_b), |n| n as f32).into(), - )) - } -} - -impl Disp for LineD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "draw line {} {} {} {}", - self.0.x, self.0.y, self.1.x, self.1.y - ) - } -} - -impl Printable for Line { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw line {} {} {} {}", - info[self.point_a.0], info[self.point_a.1], info[self.point_b.0], info[self.point_b.1] - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct RectFilled { - pub position: Point, - pub width: LAddress, - pub height: LAddress, -} - -#[derive(Debug)] -pub struct RectFilledD((u32, u32), (u32, u32)); - -impl Apply for RectFilledD { - fn apply(self, mut image: Image<&mut [u8], 4>, state: &mut DisplayState) { - image.filled_box(self.0, self.1.0, self.1.1, state.col()); - } -} - -impl Frozen<RectFilledD> for RectFilled { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<RectFilledD> { - Some(RectFilledD( - map!(point!([email protected]), |n| n as u32), - ( - get_num!(mem.get(self.width)) as u32, - get_num!(mem.get(self.height)) as u32, - ), - )) - } -} - -impl Disp for RectFilledD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "draw rect {} {} {} {}", - self.0.0, self.0.1, self.1.0, self.1.1 - ) - } -} - -impl Printable for RectFilled { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw rect {} {} {} {}", - info[self.position.0], info[self.position.1], info[self.width], info[self.height] - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct RectBordered { - pub position: Point, - pub width: LAddress, - pub height: LAddress, -} - -impl Disp for RectBorderedD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "draw lineRect {} {} {} {}", - self.0.0, self.0.1, self.1.0, self.1.1 - ) - } -} - -impl Printable for RectBordered { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw lineRect {} {} {} {}", - info[self.position.0], info[self.position.1], info[self.width], info[self.height] - ) - } -} - -#[derive(Debug)] -pub struct RectBorderedD((u32, u32), (u32, u32)); - -impl Apply for RectBorderedD { - fn apply(self, mut image: Image<&mut [u8], 4>, state: &mut DisplayState) { - image.stroked_box( - self.0, - self.1.0, - self.1.1, - state.stroke.round() as u32, - state.col(), - ); - } -} - -impl Frozen<RectBorderedD> for RectBordered { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<RectBorderedD> { - Some(RectBorderedD( - map!(point!([email protected]), |n| n as u32), - ( - get_num!(mem.get(self.width)) as u32, - get_num!(mem.get(self.height)) as u32, - ), - )) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct Triangle { - pub points: (Point, Point, Point), -} - -#[derive(Debug)] -pub struct TriangleD(Vec2, Vec2, Vec2); - -impl Apply for TriangleD { - fn apply(self, mut image: Image<&mut [u8], 4>, state: &mut DisplayState) { - image.tri::<f32>(self.0, self.1, self.2, state.col()); - } -} - -impl Frozen<TriangleD> for Triangle { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<TriangleD> { - Some(TriangleD( - map!(point!([email protected]), |n| n as f32).into(), - map!(point!([email protected]), |n| n as f32).into(), - map!(point!([email protected]), |n| n as f32).into(), - )) - } -} - -impl Disp for TriangleD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "draw triangle {} {} {} {} {} {}", - self.0.x, self.0.y, self.1.x, self.1.y, self.2.x, self.2.y - ) - } -} - -impl Printable for Triangle { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw triangle {} {} {} {} {} {}", - info[self.points.0.0], - info[self.points.0.1], - info[self.points.1.0], - info[self.points.1.1], - info[self.points.2.0], - info[self.points.2.1] - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct Poly { - pub(crate) pos: Point, - pub(crate) sides: LAddress, - pub(crate) radius: LAddress, - pub(crate) rot: LAddress, -} - -#[derive(Debug)] -pub enum PolyD { - Poly(Vec2, usize, f32, f32), - Circle((i32, i32), i32), -} - -impl Apply for PolyD { - fn apply(self, mut image: Image<&mut [u8], 4>, state: &mut DisplayState) { - match self { - PolyD::Poly(pos, sides, radius, rotation) => { - image.poly(pos, sides, radius, rotation, state.col()) - } - PolyD::Circle(pos, radius) => image.circle(pos, radius, state.col()), - } - } -} - -impl Frozen<PolyD> for Poly { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<PolyD> { - let sides = get_num!(mem.get(self.sides)).round() as usize; - Some(if sides < 90 { - PolyD::Poly( - map!(point!([email protected]), |n| n as f32).into(), - sides, - get_num!(mem.get(self.radius)) as f32, - get_num!(mem.get(self.rot)) as f32, - ) - } else { - PolyD::Circle( - map!(point!([email protected]), |n: f64| n.round() as i32), - get_num!(mem.get(self.radius)).round() as i32, - ) - }) - } -} - -impl Disp for PolyD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - PolyD::Poly(Vec2 { x, y }, sides, radius, rot) => { - write!(f, "draw poly {x} {y} {sides} {radius} {rot}") - } - PolyD::Circle((x, y), sides) => write!(f, "draw poly {x} {y} {sides}"), - } - } -} - -impl Printable for Poly { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw poly {} {} {} {} {}", - info[self.pos.0], info[self.pos.1], info[self.sides], info[self.radius], info[self.rot], - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct LinePoly { - pub(crate) pos: Point, - pub(crate) sides: LAddress, - pub(crate) radius: LAddress, - pub(crate) rot: LAddress, -} - -#[derive(Debug)] -/// border_Circle doesnt let you specify a stroke -pub struct LinePolyD(Vec2, usize, f32, f32); - -impl Apply for LinePolyD { - fn apply(self, mut image: Image<&mut [u8], 4>, state: &mut DisplayState) { - image.border_poly( - self.0, - self.1, - self.2, - self.3, - state.stroke as f32, - state.col(), - ) - } -} - -impl Frozen<LinePolyD> for LinePoly { - fn freeze(&self, mem: &LRegistry<'_>) -> Option<LinePolyD> { - Some(LinePolyD( - map!(point!([email protected]), |n| n as f32).into(), - get_num!(mem.get(self.sides)).round() as usize, - get_num!(mem.get(self.radius)) as f32, - get_num!(mem.get(self.rot)) as f32, - )) - } -} - -impl Disp for LinePolyD { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "draw linePoly {} {} {} {} {}", - self.0.x, self.0.y, self.1, self.2, self.3 - ) - } -} - -impl Printable for LinePoly { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "draw linePoly {} {} {} {} {}", - info[self.pos.0], info[self.pos.1], info[self.sides], info[self.radius], info[self.rot], - ) - } -} - -#[derive(Debug, Copy, Clone, Default)] - -pub struct Flush { - pub(crate) display: Display, -} -impl LInstruction for Flush { - fn run<W: std::io::Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - exec.flush(self.display); - Flow::Continue - } -} - -impl Printable for Flush { - fn print(&self, _: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "drawflush {}", self.display) - } -} diff --git a/lemu/src/instructions/io.rs b/lemu/src/instructions/io.rs deleted file mode 100644 index 22d1b52..0000000 --- a/lemu/src/instructions/io.rs +++ /dev/null @@ -1,90 +0,0 @@ -use super::{get_num, Flow, LInstruction}; -use crate::{ - debug::{info::DebugInfo, printable::Printable}, - executor::{ExecutorContext, Memory}, - memory::{LAddress, LVar}, -}; -use std::{fmt, io::Write as Wr}; - -#[derive(Debug, Copy, Clone)] - -pub struct Read { - pub(crate) index: LAddress, - pub(crate) output: LAddress, - pub(crate) container: Memory, -} - -impl LInstruction for Read { - fn run<W: Wr>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - let i = get_num!(exec.get(self.index)).round() as usize; - if let Some(&n) = exec.mem(self.container).get(i) { - *exec.get_mut(self.output) = LVar::from(n); - }; - Flow::Continue - } -} - -impl Printable for Read { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "read {} {} {}", - info[self.output], self.container, info[self.index] - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct Write { - pub(crate) index: LAddress, - pub(crate) set: LAddress, - pub(crate) container: Memory, -} - -impl LInstruction for Write { - fn run<W: Wr>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - let i = get_num!(exec.get(self.index)).round() as usize; - if let &LVar::Num(b) = exec.get(self.set) { - if let Some(a) = exec.mem(self.container).get_mut(i) { - *a = b; - } - } - Flow::Continue - } -} - -impl Printable for Write { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "write {} {} {}", - info[self.set], self.container, info[self.index] - ) - } -} - -#[derive(Debug, Copy, Clone)] - -pub struct Print { - pub(crate) val: LAddress, -} -impl LInstruction for Print { - fn run<W: Wr>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - let v = exec.get(self.val).clone(); - if let Some(o) = &mut exec.output { - match v { - LVar::Num(n) => write!(o, "{n}"), - LVar::String(s) => write!(o, r#"{s}"#), - } - .unwrap(); - } - Flow::Continue - } -} -// haha -impl Printable for Print { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "print {}", info[self.val]) - } -} diff --git a/lemu/src/instructions/mod.rs b/lemu/src/instructions/mod.rs deleted file mode 100644 index 6724ed1..0000000 --- a/lemu/src/instructions/mod.rs +++ /dev/null @@ -1,500 +0,0 @@ -//! supported instrs -//! -//! ```text -//! jump -//! op -//! stop -//! end -//! set -//! read -//! write -//! print -//! packcolor -//! -//! draw {color, col, flush, line, rect, lineRect, triangle, stroke, clear} -//! ``` -mod cop; -pub mod draw; -pub mod io; -mod mop; -mod mop2; - -pub use cop::ConditionOp; -pub use draw::{DrawInstr, Frozen}; -use enum_dispatch::enum_dispatch; -pub use mop::MathOp1; -pub use mop2::MathOp2; -use std::{fmt, io::Write}; - -use crate::debug::{info::DebugInfo, printable::Printable}; - -use super::{ - executor::{ExecutorContext, Instruction}, - memory::{LAddress, LVar}, -}; - -pub const OPS: &[&str] = &[ - "equal", - "notEqual", - "lessThan", - "lessThanEq", - "greaterThan", - "greaterThanEq", - "strictEqual", - "always", - "add", - "sub", - "mul", - "div", - "idiv", - "mod", - "pow", - "land", - "not", - "shl", - "shr", - "or", - "and", - "xor", - "max", - "min", - "angle", - "angleDiff", - "len", - "noise", - "abs", - "log", - "log10", - "floor", - "ceil", - "sqrt", - "rand", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", -]; - -#[must_use = "to change control flow"] -#[derive(Default)] -pub enum Flow { - #[default] - Continue, - Stay, - Exit, -} - -#[enum_dispatch] -pub trait LInstruction: Printable { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow; -} - -#[derive(Debug, Copy, Clone)] -#[enum_dispatch(LInstruction)] -pub enum Instr { - Op2(Op2), - Jump(Jump), - AlwaysJump(AlwaysJump), - Set(Set), - Op1(Op1), - Read(io::Read), - Write(io::Write), - DrawFlush(draw::Flush), - DynJump(DynJump), - Print(io::Print), - Stop(Stop), - PackColor(PackColor), - Select(Select), - Noop(Noop), - End(End), -} - -impl Printable for Instr { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - match self { - Self::Op2(i) => i.print(info, f), - Self::Jump(i) => i.print(info, f), - Self::AlwaysJump(i) => i.print(info, f), - Self::Set(i) => i.print(info, f), - Self::Op1(i) => i.print(info, f), - Self::Read(i) => i.print(info, f), - Self::Write(i) => i.print(info, f), - Self::DrawFlush(i) => i.print(info, f), - Self::DynJump(i) => i.print(info, f), - Self::Print(i) => i.print(info, f), - Self::Stop(i) => i.print(info, f), - Self::End(i) => i.print(info, f), - Self::PackColor(i) => i.print(info, f), - Self::Select(i) => i.print(info, f), - Self::Noop(i) => i.print(info, f), - } - } -} - -#[derive(Debug, Copy, Clone)] -pub struct Set { - pub(crate) from: LAddress, - pub(crate) to: LAddress, -} -impl LInstruction for Set { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - exec.set(self.from, self.to); - Flow::Continue - } -} - -impl Printable for Set { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "set {} {}", info[self.from], info[self.to]) - } -} - -macro_rules! op_enum { - ($v:vis enum $name:ident { - $($variant:ident),+ $(,)? - }) => { - #[derive(Debug, Copy, Clone, Eq, PartialEq)] - $v enum $name { - $($variant),+ - } - - impl<'a> TryFrom<Token<'a>> for $name { - type Error = Token<'a>; - fn try_from(value: Token<'a>) -> Result<Self, Self::Error> { - match value { - $(Token::$variant => Ok(Self::$variant),)+ - v => Err(v) - } - } - } - - impl std::fmt::Display for $name { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { - write!(f, "{}", Token::from(*self)) - } - } - - impl<'a> From<$name> for Token<'a> { - fn from(value: $name) -> Self { - match value { - $($name::$variant => Self::$variant,)+ - } - } - } - } -} -use op_enum; - -// not part of op_enum due to rem -macro_rules! op_impl { - ($name:ident, ptr type = $ptr:ty { $($own:ident => $fn:ident,)+ }) => { - impl $name { - pub const fn get_fn(self) -> $ptr { - match self { - $(Self::$own => $fn,)+ - } - } - } - - impl TryFrom<$ptr> for $name { - type Error = (); - fn try_from(f:$ptr) -> Result<Self, ()> { - match f { - $(f if f == $fn => Ok(Self::$own),)+ - _ => Err(()), - } - } - } - } -} -use op_impl; - -macro_rules! get_num { - ($x:expr) => { - match $x { - LVar::Num(x) => *x, - _ => return Default::default(), - } - }; -} -use get_num; - -#[derive(Debug, Copy, Clone)] -pub struct Op1 { - op: for<'v> fn(&LVar<'v>) -> f64, - x: LAddress, - out: LAddress, -} -impl Op1 { - pub(crate) const fn new(op: MathOp1, x: LAddress, out: LAddress) -> Self { - Self { - op: op.get_fn(), - x, - out, - } - } -} - -impl LInstruction for Op1 { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - let x = (self.op)(exec.get(self.x)); - *exec.get_mut(self.out) = LVar::Num(x); - Flow::Continue - } -} - -impl Printable for Op1 { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - let op = mop::MathOp1::try_from(self.op).unwrap(); - write!(f, "op {op} {} {}", info[self.out], info[self.x]) - } -} - -#[derive(Debug, Copy, Clone)] -pub struct Op2 { - op: for<'v> fn(&LVar<'v>, &LVar<'v>) -> f64, - a: LAddress, - b: LAddress, - out: LAddress, -} -impl Op2 { - pub(crate) const fn new(op: MathOp2, a: LAddress, b: LAddress, out: LAddress) -> Self { - Self { - op: op.get_fn(), - a, - b, - out, - } - } -} - -impl LInstruction for Op2 { - #[inline] - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - let x = (self.op)(exec.get(self.a), exec.get(self.b)); - exec.memory[self.out] = LVar::Num(x); - Flow::Continue - } -} - -impl Printable for Op2 { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - let op = mop2::MathOp2::try_from(self.op).unwrap(); - write!( - f, - "op {op} {} {} {}", - info[self.out], info[self.a], info[self.b] - ) - } -} - -#[derive(Debug, Copy, Clone)] -pub struct End {} - -impl LInstruction for End { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - exec.iterations += 1; - // SAFETY: if we exist, 0 exists. - unsafe { exec.jump(Instruction::new(0)) }; - Flow::Stay - } -} - -impl Printable for End { - fn print(&self, _: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "end") - } -} - -#[derive(Debug, Copy, Clone)] -pub struct Noop {} - -impl LInstruction for Noop { - fn run<W: Write>(&self, _: &mut ExecutorContext<'_, W>) -> Flow { - Flow::Continue - } -} - -impl Printable for Noop { - fn print(&self, _: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "noop") - } -} - -#[derive(Debug, Copy, Clone)] -pub struct AlwaysJump { - pub(crate) to: Instruction, -} -impl LInstruction for AlwaysJump { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - exec.jump(self.to); - Flow::Stay - } -} - -impl Printable for AlwaysJump { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "jump ")?; - match info.label(self.to) { - Some(l) => f.write_str(l)?, - None => write!(f, "{}", self.to.get())?, - } - write!(f, " always") - } -} - -#[derive(Debug, Copy, Clone)] -pub struct Jump { - op: for<'v> fn(&LVar<'v>, &LVar<'v>) -> bool, - pub(crate) to: Instruction, - a: LAddress, - b: LAddress, -} -impl Jump { - pub fn new(op: ConditionOp, to: Instruction, a: LAddress, b: LAddress) -> Self { - Self { - op: op.get_fn(), - to, - a, - b, - } - } -} - -impl LInstruction for Jump { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - if (self.op)(exec.get(self.a), exec.get(self.b)) { - exec.jump(self.to); - Flow::Stay - } else { - Flow::Continue - } - } -} - -impl Printable for Jump { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - let op = ConditionOp::try_from(self.op).unwrap(); - write!(f, "jump {op} ")?; - match info.label(self.to) { - Some(l) => f.write_str(l)?, - None => write!(f, "{}", self.to.get())?, - }; - write!(f, " {} {}", info[self.a], info[self.b]) - } -} - -#[derive(Debug, Copy, Clone)] -pub struct DynJump { - pub to: LAddress, - pub proglen: usize, -} - -impl LInstruction for DynJump { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - if let &LVar::Num(n) = exec.get(self.to) { - let i = n.round() as usize; - if i < self.proglen { - // SAFETY: just checked bounds - exec.jump(unsafe { Instruction::new(i) }); - return Flow::Stay; - } - } - Flow::Continue - } -} - -impl Printable for DynJump { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "set @counter {}", info[self.to]) - } -} - -#[derive(Debug, Copy, Clone)] -pub struct Stop {} -impl LInstruction for Stop { - fn run<W: Write>(&self, _: &mut ExecutorContext<'_, W>) -> Flow { - Flow::Exit - } -} - -impl Printable for Stop { - fn print(&self, _: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!(f, "stop") - } -} - -#[derive(Copy, Clone, Debug)] -pub struct PackColor { - pub out: LAddress, - pub r: LAddress, - pub g: LAddress, - pub b: LAddress, - pub a: LAddress, -} - -impl LInstruction for PackColor { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - macro_rules! num { - ($($n:ident)+) => { - ($(match exec.memory[self.$n] { - LVar::Num(n) => (n.clamp(0.0, 1.0) * 255.0) as u8, - _ => 255, - },)+) - }; - } - let (r, g, b, a) = num!(r g b a); - exec.memory[self.out] = LVar::from(fimg::Pack::pack(&[r, g, b, a]) as f64); - Flow::Continue - } -} - -impl Printable for PackColor { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "packcolor {} {} {} {} {}", - info[self.out], info[self.r], info[self.g], info[self.b], info[self.a] - ) - } -} -#[derive(Debug, Copy, Clone)] -pub struct Select { - pub op: for<'v> fn(&LVar<'v>, &LVar<'v>) -> bool, - pub(crate) to: LAddress, - - pub x: LAddress, - pub y: LAddress, - - pub a: LAddress, - pub b: LAddress, -} - -impl LInstruction for Select { - fn run<W: Write>(&self, exec: &mut ExecutorContext<'_, W>) -> Flow { - *exec.get_mut(self.to) = if (self.op)(exec.get(self.x), exec.get(self.y)) { - exec.get(self.a) - } else { - exec.get(self.b) - } - .clone(); - Flow::Continue - } -} - -impl Printable for Select { - fn print(&self, info: &DebugInfo<'_>, f: &mut impl fmt::Write) -> fmt::Result { - write!( - f, - "select {} {} {} {} {} {}", - info[self.to], - ConditionOp::try_from(self.op).unwrap(), - info[self.x], - info[self.y], - info[self.a], - info[self.b] - ) - } -} diff --git a/lemu/src/instructions/mop.rs b/lemu/src/instructions/mop.rs deleted file mode 100644 index 715cd3d..0000000 --- a/lemu/src/instructions/mop.rs +++ /dev/null @@ -1,79 +0,0 @@ -use super::get_num; -use crate::{lexer::Token, memory::LVar}; - -super::op_enum! { pub enum MathOp1 { - Floor, - Not, - Log, - Abs, - Rand, - Ceil, - Sqrt, - Sin, - Cos, - Tan, - ASin, - ACos, - ATan, - Log10, -} } - -macro_rules! num { - ($fn: ident $c:expr) => { - fn $fn(x: &LVar<'_>) -> f64 { - f64::from($c(get_num!(x))) - } - }; - (deg $fn: ident $c:expr) => { - fn $fn(x: &LVar<'_>) -> f64 { - f64::from($c(get_num!(x).to_radians())) - } - }; - (to_deg $fn: ident $c:expr) => { - fn $fn(x: &LVar<'_>) -> f64 { - f64::from($c(get_num!(x))).to_radians() - } - }; -} - -macro_rules! flbop { - ($f: expr, $fn: expr) => { - $fn($f as u64) as f64 - }; -} - -num!(floor f64::floor); -fn not(x: &LVar<'_>) -> f64 { - flbop!(get_num!(x), |n: u64| !n) -} -num!(log f64::ln); -num!(abs f64::abs); -const fn rand(_: &LVar<'_>) -> f64 { - 4.0 -} -num!(ceil f64::ceil); -num!(sqrt f64::sqrt); -num!(deg sin f64::sin); -num!(deg cos f64::cos); -num!(deg tan f64::tan); -num!(to_deg asin f64::asin); -num!(to_deg acos f64::acos); -num!(to_deg atan f64::atan); -num!(log10 f64::log10); - -super::op_impl!(MathOp1, ptr type = for<'v> fn(&LVar<'v>) -> f64 { - Floor => floor, - Not => not, - Log => log, - Abs => abs, - Rand => rand, - Ceil => ceil, - Sqrt => sqrt, - Sin => sin, - Cos => cos, - Tan => tan, - ASin => asin, - ACos => acos, - ATan => atan, - Log10 => log10, -}); diff --git a/lemu/src/instructions/mop2.rs b/lemu/src/instructions/mop2.rs deleted file mode 100644 index 7751736..0000000 --- a/lemu/src/instructions/mop2.rs +++ /dev/null @@ -1,140 +0,0 @@ -use super::get_num; -use crate::{lexer::Token, memory::LVar}; -use std::f64::consts::PI; - -super::op_enum! { pub enum MathOp2 { - Angle, - Add, - Sub, - Mul, - Div, - IDiv, - Mod, - Pow, - Equal, - NotEqual, - And, - LessThan, - LessThanEq, - GreaterThan, - GreaterThanEq, - StrictEqual, - ShiftLeft, - ShiftRight, - BitOr, - BitAnd, - ExclusiveOr, - Max, - Min, - AngleDiff, - Len, - Noise, // unimplemented -} } - -macro_rules! num { - ($fn:ident $closure:expr) => { - fn $fn<'v>(a: &LVar<'v>, b: &LVar<'v>) -> f64 { - f64::from($closure(get_num!(a), get_num!(b))) - } - }; -} -macro_rules! op { - ($fn:ident $op:tt) => { - fn $fn<'v>(a: &LVar<'v>, b: &LVar<'v>) -> f64 { - f64::from(get_num!(a) $op get_num!(b)) - } - } -} -macro_rules! bop { - ($fn: ident $op: tt) => { - fn $fn<'v>(a: &LVar<'v>, b:& LVar<'v>) -> f64 { - f64::from(((get_num!(a) as u64) $op (get_num!(b) as u64)) as f64) - } - }; -} -macro_rules! nofun { - ($fn:ident $closure:expr) => { - fn $fn<'v>(a: &LVar<'v>, b: &LVar<'v>) -> f64 { - f64::from($closure(a, b)) - } - }; -} -nofun!(eq | a, b | a == b); -nofun!(ne | a, b | a != b); -num!(and | a, b | a != 0.0 && b != 0.0); -#[rustfmt::skip] -op!(add +); -op!(sub -); -op!(mul *); -num!(idiv | a: f64 , b: f64 | (a / b).floor()); -op!(lt <); -op!(le <=); -op!(gt >); -op!(ge >=); -op!(div /); -op!(rem %); -num!(pow f64::powf); -bop!(shl <<); -bop!(shr >>); -bop!(or |); -bop!(band &); -bop!(xor ^); -num!(max f64::max); -num!(min f64::min); -#[rustfmt::skip] -num!(angle_diff |a, b| { - let a = a % (360.0 * PI); - let b = b % (360.0 * PI); - f64::min( - if (a - b) < 0.0 { a - b + 360.0 } else { a - b }, - if (b - a) < 0.0 { b - a + 360.0 } else { b - a }, - ) -}); -num!(len f64::hypot); -nofun!(noise | _, _ | 9.0); -num!(angle |a: f64, b: f64| { - let mut x = a.atan2(b) * (180.0 / PI); - if x < 0.0 { - x += 360.0; - } - x -}); - -super::op_impl!(MathOp2, ptr type = for<'f> fn(&LVar<'f>, &LVar<'f>) -> f64 { - Equal => eq, - StrictEqual => eq, - NotEqual => ne, - And => and, - Add => add, - Sub => sub, - Mul => mul, - IDiv => idiv, - LessThan => lt, - LessThanEq => le, - GreaterThan => gt, - GreaterThanEq => ge, - Div => div, - Mod => rem, - Pow => pow, - ShiftLeft => shl, - ShiftRight => shr, - BitOr => or, - BitAnd => band, - ExclusiveOr => xor, - Max => max, - Min => min, - AngleDiff => angle_diff, - Len => len, - Noise => noise, - Angle => angle, -}); - -// // no macro cuz funky rem -// impl MathOp2 { -// pub const fn get_fn(self) -> for<'f> fn(&LVar<'f>, &LVar<'f>) -> f64 { -// match self { -// // we kind of interpret strings as numbers so yeah - -// } -// } -// } diff --git a/lemu/src/lexer.rs b/lemu/src/lexer.rs deleted file mode 100644 index e6b85c6..0000000 --- a/lemu/src/lexer.rs +++ /dev/null @@ -1,213 +0,0 @@ -use atools::prelude::*; -use beef::lean::Cow; -use fimg::Pack; -use logos::{Lexer as RealLexer, Logos, Span}; - -macro_rules! instrs { - ($($z:literal => $v:ident,)+) => { - #[derive(Logos, Debug, PartialEq, Clone)] - #[logos(skip r"[ \t]+")] - pub enum Token<'strings> { - #[token("\n")] - #[token(";")] - Newline, - #[regex("#[^\n]+", priority = 8)] - Comment(&'strings str), - #[regex(r"-?[0-9]+(\.[0-9]+)?", |lex| lex.slice().parse().ok())] - #[regex(r"(true)|(false)", |lex| lex.slice().parse::<bool>().ok().map(f64::from), priority = 10)] - #[regex(r#"0[xX][0-9a-fA-F]+"#, |lex| u64::from_str_radix(&lex.slice()[2..], 16).map(|v| v as f64).ok())] - #[regex(r#"0[bB][01]+"#, |lex| u64::from_str_radix(&lex.slice()[2..], 2).map(|v| v as f64).ok())] - #[regex(r#""[0-9]+(\.[0-9]+)?""#, callback = |lex| lex.slice()[1..lex.slice().len()-1].parse().ok(), priority = 13)] - #[regex(r#"%\[([a-z]+)\]"#, |lex| COLORS.get(dbg!(&lex.slice()[2..lex.slice().len()-1])).copied().unwrap_or_default().join(255).pack() as f64)] - #[regex(r#"%[0-9a-fA-F]+"#, callback = |lex| { - let mut x = lex.slice()[1..].bytes() - .map(|b| (b & 0xF) + 9 * (b >> 6)) - .array_chunks::<2>() - .map(|[a, b]| a * 16 + b); - if lex.slice()[1..].len() == 6 { x.carr::<3>().join(255) } - else if lex.slice()[1..].len() == 8 { x.carr::<4>() } - else { [255; 4] }.pack() as f64 - })] - Num(f64), // TODO have bool and integer tokens, and parser converts - #[regex(r#""([^\\"\n])*""#, callback = |lex| Cow::from(&lex.slice()[1..lex.slice().len()-1]), priority = 12)] - #[regex(r#"@[^ "\n]*"#, |lex| Cow::from(lex.slice()))] - #[regex(r#""[^"]*""#, callback = |lex| Cow::from(lex.slice()[1..lex.slice().len()-1].replace(r"\n", "\n")), priority = 8)] - String(Cow<'strings, str>), - #[regex("[^%0-9- \t\n][^ \t\n]*", priority = 7)] - Ident(&'strings str), - - $(#[token($z, priority = 8)] $v,)+ - } - - impl std::fmt::Display for Token<'_> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { - match self { - $(Self::$v => write!(f, $z,),)+ - Self::Ident(s)| Self::Comment(s) => write!(f, "{s}"), - Self::String(s) => write!(f, "{s}"), - Self::Num(n) => write!(f, "{n}"), - Self::Newline => write!(f, "\n"), - } - } - } - } -} - -instrs! { - "null" => Null, - "read" => Read, - "write" => Write, - "set" => Set, - "op" => Op, - "end" => End, - "packcolor" => PackColor, - "drawflush" => DrawFlush, - "draw" => Draw, - "select" => Select, - "print" => Print, - "jump" => Jump, - "stop" => Stop, - "equal" => Equal, - "notEqual" => NotEqual, - "lessThan" => LessThan, - "lessThanEq" => LessThanEq, - "greaterThan" => GreaterThan, - "greaterThanEq" => GreaterThanEq, - "strictEqual" => StrictEqual, - "always" => Always, - "add" => Add, - "sub" => Sub, - "mul" => Mul, - "div" => Div, - "idiv" => IDiv, - "mod" => Mod, - "pow" => Pow, - "land" => And, - "not" => Not, - "shl" => ShiftLeft, - "shr" => ShiftRight, - "or" => BitOr, - "and" => BitAnd, - "xor" => ExclusiveOr, - "max" => Max, - "min" => Min, - "angle" => Angle, - "angleDiff" => AngleDiff, - "len" => Len, - "noise" => Noise, - "abs" => Abs, - "log" => Log, - "log10" => Log10, - "floor" => Floor, - "ceil" => Ceil, - "sqrt" => Sqrt, - "rand" => Rand, - "sin" => Sin, - "cos" => Cos, - "tan" => Tan, - "asin" => ASin, - "acos" => ACos, - "atan" => ATan, -} - -pub fn lex(s: &str) -> Lexer<'_> { - Lexer { - inner: Token::lexer(s), - } -} - -pub struct Lexer<'s> { - inner: RealLexer<'s, Token<'s>>, -} - -impl<'s> Lexer<'s> { - pub fn next(&mut self) -> Option<Token<'s>> { - self.inner.find_map(Result::ok) - } - - pub fn span(&self) -> Span { - self.inner.span() - } -} - -#[allow(dead_code)] -pub fn print_stream(mut stream: Lexer) { - print!("["); - let Some(tok) = stream.next() else { - println!("]"); - return; - }; - print!("{tok:?}"); - while let Some(tok) = stream.next() { - print!(", {tok:?}"); - } - println!("]"); -} - -#[test] -fn lexer() { - let mut lex = lex(r#" - start: - print "xd" - jump start always - set x "4""#); - macro_rules! test { - ($($tok:ident$(($var:literal))?),+ $(,)?) => {{ - $(assert_eq!(lex.next(), Some(Token::$tok$(($var.into()))?));)+ - assert_eq!(lex.next(), None); - }} - } - test![ - Newline, - Ident("start:"), - Newline, - Print, - String("xd"), - Newline, - Jump, - Ident("start"), - Always, - Newline, - Set, - Ident("x"), - Num(4), - ]; -} - -const COLORS: phf::Map<&str, [u8; 3]> = phf::phf_map! { - "clear" => [0, 0, 0], - "black" => [0, 0, 0], - "white" => [255, 255, 255], - "lightgray" => [191, 191, 191], - "gray" => [127, 127, 127], - "darkgray" => [63, 63, 63], - "blue" => [0, 0, 255], - "navy" => [0, 0, 128], - "royal" => [65, 105, 225], - "slate" => [112, 128, 144], - "sky" => [135, 206, 235], - "cyan" => [0, 255, 255], - "teal" => [0, 128, 128], - "green" => [0, 255, 0], - "acid" => [127, 255, 0], - "lime" => [50, 205, 50], - "forest" => [34, 139, 34], - "olive" => [107, 142, 35], - "yellow" => [255, 255, 0], - "gold" => [255, 215, 0], - "goldenrod" => [218, 165, 32], - "orange" => [255, 165, 0], - "brown" => [139, 69, 19], - "tan" => [210, 180, 140], - "brick" => [178, 34, 34], - "red" => [255, 0, 0], - "scarlet" => [255, 52, 28], - "coral" => [255, 127, 80], - "salmon" => [250, 128, 114], - "pink" => [255, 105, 180], - "magenta" => [255, 0, 255], - "purple" => [160, 32, 240], - "violet" => [238, 130, 238], - "maroon" => [176, 48, 96], - "accent" => [255, 211, 127], -}; diff --git a/lemu/src/lib.rs b/lemu/src/lib.rs deleted file mode 100644 index 25d571b..0000000 --- a/lemu/src/lib.rs +++ /dev/null @@ -1,185 +0,0 @@ -//! crate for [MLOG](https://mindustrygame.github.io/wiki/logic/0-introduction/#what-is-mindustry-logic) emulation. -#![allow(clippy::redundant_closure_call)] -// yeah so like well you see i kinda well kinda have to yes but sorta -#![allow(clippy::fn_address_comparisons)] -#![feature(generic_const_exprs, iter_array_chunks)] -#![warn( - clippy::multiple_unsafe_ops_per_block, - clippy::missing_const_for_fn, - clippy::redundant_pub_crate, - clippy::missing_safety_doc, - clippy::imprecise_flops, - unsafe_op_in_unsafe_fn, - clippy::dbg_macro, - missing_docs -)] -pub(crate) mod code; -mod debug; -mod executor; -mod instructions; -mod lexer; -mod memory; -mod parser; - -use std::io::Write; - -pub use executor::{Executor, Output}; -use executor::{ExecutorBuilderInternal, Limit}; -use fimg::Image; -pub use parser::Error; - -impl<W: Write + Default> Executor<'_, W> { - /// Create a new [`ExecutorBuilder`] - pub fn build() -> ExecutorBuilder<W> { - ExecutorBuilder::default() - } -} -impl<W: Write> Executor<'_, W> { - /// Create a new [`ExecutorBuilder`] with a output. - /// - /// Output simply must impement [`Write`], so this can be set to stdout. - /// Or simply set it to [`Vec<u8>`]. - pub fn with_output(w: W) -> ExecutorBuilder<W> { - ExecutorBuilder { - displays: Vec::new(), - output: Some(w), - instruction_limit: Limit::Unlimited, - iteration_limit: Limit::limited(1), - } - } -} - -/// Builder for a [`Executor`]. -/// ``` -/// # use lemu::Executor; -/// let mut lex = Executor::with_output(std::io::stdout()).program(r#"print "hello world""#).expect("program ok"); -/// lex.run(); -/// ``` -pub struct ExecutorBuilder<W: Write> { - output: Option<W>, - displays: Vec<Image<Vec<u8>, 4>>, - instruction_limit: Limit, - iteration_limit: Limit, -} - -impl<W: Write> Default for ExecutorBuilder<W> { - fn default() -> Self { - Self { - output: None, - displays: Vec::new(), - instruction_limit: Limit::Unlimited, - iteration_limit: Limit::limited(1), - } - } -} - -impl<W: Write> ExecutorBuilder<W> { - /// Limit the number of iterations. - pub fn limit_iterations(self, n: usize) -> Self { - Self { - iteration_limit: Limit::limited(n), - ..self - } - } - - /// Unlimit the number of iterations. - pub fn unlimit_iterations(self) -> Self { - Self { - iteration_limit: Limit::Unlimited, - ..self - } - } - - /// Unlimit the number of instructions. - /// Make sure to limit the number of the iterations, else it will possibly run forever. - pub fn unlimit_instructions(self) -> Self { - Self { - iteration_limit: Limit::Unlimited, - ..self - } - } - - /// Limit the number of processed instructions. - /// - /// Use this if you want it to *definetly finish*. - pub fn limit_instructions(self, n: usize) -> Self { - Self { - instruction_limit: Limit::limited(n), - ..self - } - } - - /// Add a small (`80x80`) logic display. - pub fn display(self) -> Self { - let mut d = self.displays; - d.push(Image::alloc(80, 80)); - Self { - displays: d, - ..self - } - } - - /// Add a large (`176x176`) logic display. - pub fn large_display(self) -> Self { - let mut d = self.displays; - d.push(Image::alloc(176, 176)); - Self { - displays: d, - ..self - } - } - - /// Build the [`Executor`] with this code. - /// - /// # Errors - /// - /// errors if the code is malformed. - pub fn program(self, program: &str) -> Result<Executor<'_, W>, Error<'_>> { - let Self { - output, - displays, - instruction_limit, - iteration_limit, - } = self; - let mut executor = ExecutorBuilderInternal::new(output, displays); - executor - .inslimit(instruction_limit) - .itrlimit(iteration_limit); - // #[cfg(debug_assertions)] - // lexer::print_stream(lexer::lex(program)); - parser::parse(lexer::lex(program), &mut executor)?; - Ok(executor.finish()) - } -} - -#[cfg(test)] -mod test { - use super::*; - - macro_rules! test { - (run $fn:ident.mlog $($times:literal times)?; - $(output = $to_be:literal $(;)?)? - $(cell[$cell_n:literal][$cell_index:literal] = $what:literal $(;)?)? - ) => { - #[test] - fn $fn() -> Result<(), Error<'static>> { - let v = vec![]; - let mut lex = Executor::with_output(v) - .unlimit_instructions() - $(.limit_iterations($times))? - .program(include_str!(concat!(stringify!($fn), ".mlog")))?; - lex.run(); - let output = lex.output(); - $(assert_eq!(output.output.unwrap(), $to_be);)? - $(assert_eq!(output.cells[$cell_n][$cell_index], $what);)? - Ok(()) - } - }; - } - - test!(run fib.mlog; output = b"12586269025"); - test!(run primes.mlog; output = b"2 | 3 | 5 | 7 | 11 | 13 | 17 | 19 | 23 | 29 | 31 | 37 | 41 | 43 | 47 | 53 | 59 | 61 | 67 | 71 | 73 | 79 | 83 | 89 | 97 | 101 | 103 | 107 | 109 | 113 | 127 | 131 | 137 | 139 | 149 | 151 | 157 | 163 | 167 | 173 | 179 | 181 | 191 | 193 | 197 | 199 | 211 | 223 | 227 | 229 | 233 | 239 | 241 | 251 | 257 | 263 | 269 | 271 | 277 | 281 | 283 | 293 | 307 | 311 | 313 | 317 | 331 | 337 | 347 | 349 | 353 | 359 | 367 | 373 | 379 | 383 | 389 | 397 | 401 | 409 | 419 | 421 | 431 | 433 | 439 | 443 | 449 | 457 | 461 | 463 | 467 | 479 | 487 | 491 | 499 | 503 | 509 | "); - test!(run numbers.mlog; output = b"121212"); - test!(run celliterate.mlog 5 times; cell[0][0] = 5.0); - test!(run hello.mlog; output = b"hello world"); -} diff --git a/lemu/src/main.rs b/lemu/src/main.rs deleted file mode 100644 index 36eb84f..0000000 --- a/lemu/src/main.rs +++ /dev/null @@ -1,34 +0,0 @@ -use std::{ - io::{self, Stdout}, - process::ExitCode, -}; - -use lemu::{Executor, Output}; - -fn main() -> ExitCode { - let mut args = std::env::args(); - args.next().unwrap(); // path to executable - for file in args { - let f = std::fs::read_to_string(&file).unwrap(); - let mut lex: Executor<Stdout> = match Executor::with_output(io::stdout()) - .large_display() - .program(&f) - { - Ok(x) => x, - Err(e) => { - eprint!("{}", e.diagnose(&f)); - return ExitCode::FAILURE; - } - }; - println!("{lex}"); - let now = std::time::Instant::now(); - lex.run(); - dbg!(now.elapsed()); - dbg!(lex.instructions_ran); - let Output { displays, .. } = lex.output(); - for ((d, _), i) in displays.iter().zip(1..=displays.len()) { - d.save(format!("image{i}.png")); - } - } - ExitCode::SUCCESS -} diff --git a/lemu/src/memory.rs b/lemu/src/memory.rs deleted file mode 100644 index bd9ca52..0000000 --- a/lemu/src/memory.rs +++ /dev/null @@ -1,185 +0,0 @@ -use beef::lean::Cow; - -use crate::debug::{info::VarData, printable::Printable}; -#[derive(Clone, Debug)] -pub enum LVar<'string> { - Num(f64), - String(Cow<'string, str>), -} - -impl PartialEq for LVar<'_> { - fn eq(&self, other: &Self) -> bool { - match (self, other) { - (Self::Num(a), Self::Num(b)) => (a - b).abs() < 0.000_001, - (Self::String(l0), Self::String(r0)) => l0 == r0, - _ => false, - } - } -} - -impl Default for LVar<'static> { - fn default() -> Self { - Self::Num(0.0) - } -} - -impl LVar<'_> { - // get null - pub const fn null() -> LVar<'static> { - LVar::Num(0.0) - } - - pub const fn num(&self) -> Option<f64> { - match *self { - Self::Num(n) => Some(n), - Self::String(_) => None, - } - } - - pub const fn num_mut(&mut self) -> Option<&mut f64> { - match self { - LVar::Num(x) => Some(x), - LVar::String(_) => None, - } - } -} - -#[derive(Clone, Copy)] -pub struct LAddress { - pub address: u32, -} - -impl LAddress { - /// # Safety - /// - /// ensure that address is valid - pub(crate) const unsafe fn addr(address: u32) -> Self { - LAddress { address } - } -} - -#[derive(Copy, Clone)] -pub struct Priv { - _priv: (), -} - -impl std::fmt::Debug for LAddress { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:x}", self.address) - } -} - -impl std::fmt::Display for LVar<'_> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::Num(n) => write!(f, "{}", crate::debug::ff(*n)), // yeeeeahhhh - Self::String(s) => write!(f, r#""{s}""#), - } - } -} - -impl From<f64> for LVar<'_> { - fn from(value: f64) -> Self { - Self::Num(value) - } -} - -impl From<bool> for LVar<'_> { - fn from(value: bool) -> Self { - Self::Num(value.into()) - } -} - -impl From<usize> for LVar<'_> { - fn from(value: usize) -> Self { - Self::Num(value as f64) - } -} - -impl<'s> From<&'s str> for LVar<'s> { - fn from(value: &'s str) -> Self { - Self::String(value.into()) - } -} - -impl<'s> From<Cow<'s, str>> for LVar<'s> { - fn from(value: Cow<'s, str>) -> Self { - Self::String(value) - } -} - -#[derive(Debug)] -pub struct LRegistry<'str>(pub Box<[LVar<'str>]>); - -impl<'s> std::ops::Index<LAddress> for LRegistry<'s> { - type Output = LVar<'s>; - - fn index(&self, index: LAddress) -> &Self::Output { - debug_assert!((index.address as usize) < self.0.len()); - // SAFETY: LAddress promises to be in our bounds. - // lreg has no constructors, so unless you keep one around, grab a laddr, and use it on the old lreg, - // this is safeish. - // lreg is private to the outside world, so its ok - unsafe { self.0.get_unchecked(index.address as usize) } - } -} - -impl<'s> std::ops::IndexMut<LAddress> for LRegistry<'s> { - fn index_mut(&mut self, index: LAddress) -> &mut Self::Output { - debug_assert!((index.address as usize) < self.0.len()); - // SAFETY: see above - unsafe { self.0.get_unchecked_mut(index.address as usize) } - } -} - -impl std::fmt::Display for LRegistry<'_> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "R[")?; - let mut iter = self - .0 - .iter() - .enumerate() - .filter(|&(_, v)| v != &LVar::null()); - if let Some((i, v)) = iter.next() { - write!(f, "{i}: {v}")?; - } - for (i, v) in iter { - write!(f, ", {i}: {v}")?; - } - write!(f, "]") - } -} - -impl LRegistry<'_> { - pub fn get(&self, a: LAddress) -> &LVar { - &self[a] - } -} - -impl Printable for LRegistry<'_> { - fn print( - &self, - info: &crate::debug::info::DebugInfo<'_>, - f: &mut impl std::fmt::Write, - ) -> std::fmt::Result { - write!(f, "R[")?; - let mut iter = self - .0 - .iter() - .zip(0..self.0.len() as u32) - .filter(|&(v, _)| v != &LVar::null()) - // SAFETY: the address comes from me - .map(|(v, i)| (&info[unsafe { LAddress::addr(i) }], v)) - .filter_map(|(d, v)| match d { - VarData::Variable(d) => Some((*d, v)), - VarData::Constant(_) => None, - }); - if let Some((i, v)) = iter.next() { - write!(f, "{i}: {v}")?; - } - for (i, v) in iter { - write!(f, ", {i}: {v}")?; - } - write!(f, "]") - } -} diff --git a/lemu/src/numbers.mlog b/lemu/src/numbers.mlog deleted file mode 100644 index 120ae6d..0000000 --- a/lemu/src/numbers.mlog +++ /dev/null @@ -1,4 +0,0 @@ -print 0b1100 -print 0xc -print 12 -stop
\ No newline at end of file diff --git a/lemu/src/parser/error.rs b/lemu/src/parser/error.rs deleted file mode 100644 index c2b053b..0000000 --- a/lemu/src/parser/error.rs +++ /dev/null @@ -1,442 +0,0 @@ -use super::tokstr; -use crate::executor::Instruction; -use crate::lexer::Token; -use logos::Span; - -/// Errors returned when parsing fails. -#[derive(thiserror::Error, Debug)] -pub enum Error<'s> { - /// Occurs from eg `set x`. (needs a value to set to) - #[error("unexpected end of stream")] - UnexpectedEof, - /// Occurs from eg `op add\n...` (needs a variable) - #[error("expected variable, got {0:?}")] - ExpectedVar(Token<'s>, Span), - /// Occurs from eg `draw 4` (needs a ident of the type of drawing) - #[error("expected identifier, got {0:?}")] - ExpectedIdent(Token<'s>, Span), - /// Occurs from eg `jump house` (assuming house isnt a label). - #[error("expected jump target, got {0:?}")] - ExpectedJump(Token<'s>, Span), - /// Occurs from eg `op add "three" "four"` - #[error("expected number, got {0:?}")] - ExpectedNum(Token<'s>, Span), - /// Occurs from eg `op 4` (4 is not add/mul/...) - #[error("expected operator, got {0:?}")] - ExpectedOp(Token<'s>, Span), - /// Occurs from eg `write cell1 5.5` (5.5 is not int) - #[error("expected integer, got {0:?}")] - ExpectedInt(Token<'s>, Span), - /// Occurs from eg `control shootp building 4` - #[error("expected string, got {0:?}")] - ExpectedString(Token<'s>, Span), - /// Occurs from `status not_a_bool` - #[error("expected bool, got {0:?}")] - ExpectedBool(Token<'s>, Span), - /// Occurs from eg `4.0 add 5.0` - #[error("expected instruction, got {0:?}")] - ExpectedInstr(Token<'s>, Span), - /// Occurs from eg - /// ```text - /// lable: - /// jump label always - /// ``` - /// (typo: lable not label) - #[error("unable to find label {0}")] - LabelNotFound(&'s str, Span), - /// Occurs from eg `jump 4910294029 always` - #[error("unable to jump to instruction {0:?}")] - InvalidJump(Instruction, Span), - /// Occurs from eg `read bank9223372036854775807 5` (only `126` banks can exist) - #[error("cannot get cell>{0}")] - MemoryTooFar(usize, Span), - /// Occurs from eg `read bank1 512` - #[error("index {0} out of bounds ({1} max)")] - IndexOutOfBounds(usize, usize, Span), - /// Occurs from `read register1` - #[error("unknown memory type {0:?}, expected (cell)|(bank)")] - InvalidMemoryType(&'s str, Span), - /// Occurs from `drawflush bank1` - #[error("unknown display type {0}, expected 'display'")] - InvalidDisplayType(&'s str, Span), - /// Occurs from `draw house` (or `draw image`, a valid but unsupported instruction here) - #[error("unknown image operation {0}")] - UnsupportedImageOp(&'s str, Span), - /// Occurs from `control what` - #[error("unknown control operation {0}")] - UnknownControlOp(&'s str, Span), - /// Occurs from `ucontrol kill` - #[error("unknown ucontrol operation {0}")] - UnknownUnitControlOp(&'s str, Span), - /// Occurs from `ulocate five` - #[error("unknown ulocate operation {0}")] - UnknownUnitLocateOp(&'s str, Span), - /// Occurs from `getblock core` - #[error("unknown getblock operation {0}")] - UnknownGetBlockOp(&'s str, Span), - /// Occurs from `setblock unit` - #[error("unknown setblock operation {0}")] - UnknownSetBlockOp(&'s str, Span), - /// Occurs from `setrule hello` - #[error("unknown rule {0}")] - UnknownRule(&'s str, Span), - /// Occurs from `cutscene begin` - #[error("unknown cutscene {0}")] - UnknownCutscene(&'s str, Span), - /// Occurs from `fetch hostages` - #[error("unknown fetch operation {0}")] - UnknownFetchOp(&'s str, Span), - #[error("couldnt get display #{0:?}.")] - /// Occurs from eg `display 50`. - /// - /// call `display` 50 more times to have more display options: - /// ```rust,ignore - /// executor - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display() - /// .display(); - /// ``` - NoDisplay(usize, Span), - /// We have a limit of [`u32::MAX`] variables. - #[error("too many variables")] - TooManyVariables(Span), -} - -impl Error<'_> { - /// Produces a [`Error`](lerr::Error) from this error. - #[cfg(feature = "diagnose")] - pub fn diagnose<'s>(&self, source: &'s str) -> lerr::Error<'s> { - use comat::{cformat as cmt, cformat_args}; - use lerr::Error; - - let error = cformat_args!("{bold_red}error{reset}"); - let note = cformat_args!("{bold_blue}note{reset}"); - let help = cformat_args!("{bold_green}help{reset}"); - let mut e = Error::new(source); - macro_rules! msg { - ($ms:literal $(, $args:expr)* $(,)?) => { - e.message(cmt!($ms $(, $args)*)) - }; - } - macro_rules! op { - ($op:ident, $ops:expr) => {{ - let mut out = String::from("{"); - let mut ops = $ops.iter(); - use std::fmt::Write; - write!(out, "{}", ops.next().unwrap()).unwrap(); - for op in ops { - write!(out, ", {}", op).unwrap(); - } - out.write_char('}').unwrap(); - if let Some((mat, score)) = - rust_fuzzy_search::fuzzy_search_best_n($op, $ops, 1).first() - && *score > 0.5 - { - e.note(cmt!("{help}: you may have meant {bold_green}{mat}{reset}")); - } - out - }}; - } - match self { - Self::UnexpectedEof => { - msg!("{error}: wasnt able to finish read, got newline").label(( - source.len()..source.len(), - cmt!("there was supposed to be another token here"), - )); - } - Self::ExpectedVar(t, s) => { - msg!("{error}: expected variable, got {:?}", t) - .label((s, cmt!("this was supposed to be a {blue}variable{reset} ({magenta}identifier{reset}, {magenta}number{reset}, or {magenta}string{reset})"))); - } - Self::ExpectedIdent(_, s) => { - msg!("{error}: expected identifier").label(( - s, - cmt!("this was supposed to be a {bold_blue}identifier{reset} (eg. {magenta}name{reset})"), - )); - } - Self::ExpectedJump(t, s) => { - msg!("{error}: expected jump target") - .label((s, cmt!("this was supposed to be a jump target"))) - .note( - cmt!("{note}: a jump target is a {bold_blue}label{reset} ({magenta}ident{reset}, or {magenta}integer{reset})"), - ); - if let Token::Num(n) = t { - e.note(cmt!( - "{help}: remove the fractional part: {bold_green}{n:.0}{reset}" - )); - } - } - Self::ExpectedNum(_, s) => { - msg!("{error}: expected number") - .label((s, cmt!("this was supposed to be a {bold_blue}number{reset} (eg. {magenta}3.14159{reset})"))); - } - Self::ExpectedString(_, s) => { - msg!("{error}: expected string").label((s, cmt!(r#"this was supposed to be a {bold_blue}string{reset} (eg. {magenta}"a cool string"{reset})"#))); - } - Self::ExpectedBool(_, s) => { - msg!("{error}: expected bool").label((s, cmt!("this was supposed to be a {bold_blue}boolean{reset} (eg. {magenta}true{reset})"))); - } - Self::ExpectedOp(t, s) => { - msg!("{error}: expected operator") - .label((s, cmt!("this was supposed to be a {bold_blue}operator{reset} (eg. {magenta}equal{reset})"))); - if let Some(i) = tokstr!(*t) - && let Some((mat, score)) = - rust_fuzzy_search::fuzzy_search_best_n(i, crate::instructions::OPS, 1) - .first() - && *score > 0.5 - { - e.note(cmt!("{help}: maybe you meant {bold_green}{mat}{reset}")); - } - } - Self::ExpectedInt(t, s) => { - msg!("{error}: expected integer") - .label((s, cmt!("this was supposed to be a {bold_blue}integer{reset} (eg. {magenta}4{reset})"))); - if let Token::Num(n) = t { - e.note(cmt!( - "{help}: remove the mantissa: {bold_green}{n:.0}{reset}" - )); - } - } - Self::ExpectedInstr(t, s) => { - msg!("{error}: expected instruction") - .label((s, cmt!("this was supposed to be a {bold_blue}instruction{reset} (eg. {magenta}print{reset})"))); - if let Some(i) = tokstr!(*t) - && let Some((mat, score)) = rust_fuzzy_search::fuzzy_search_best_n( - i, - &[ - "getlink", - "read", - "write", - "set", - "op", - "end", - "drawflush", - "draw", - "print", - "packcolor", - "jump", - "stop", - "printflush", - "control", - "radar", - "sensor", - "wait", - "lookup", - "packcolor", - "ubind", - "ucontrol", - "uradar", - "ulocate", - "getblock", - "setblock", - "spawn", - "status", - "spawnwave", - "setrule", - "cutscene", - "explosion", - "setrate", - "fetch", - "getflag", - "setflag", - "setprop", - "effect", - ], - 1, - ) - .first() - && *score > 0.5 - { - e.note(cmt!("{help}: maybe you meant {mat}")); - } - } - Self::LabelNotFound(_, s) => { - msg!("{error}: label not found").label(( - s, - cmt!("this was supposed to be a (existing) {bold_blue}label{reset}"), - )).note(cmt!("{help}: define a label with {yellow}`label_name:`{reset}, then you can {yellow}`jump label_name`{reset}.")); - } - Self::InvalidJump(target, s) => { - msg!("{error}: invalid jump") - .label(( - s, - cmt!( - "line#{bold_red}{}{reset} is not in the program", - target.get() - ), - )) - .note(cmt!( - "{help}: there are {bold_blue}{}{reset} available lines", - source.lines().count() - )); - } - Self::MemoryTooFar(b, s) => { - msg!("{error}: invalid memory cell/bank") - .label((s, cmt!("cant get cell/bank#{bold_red}{b}{reset}"))) - .note(cmt!( - "{note}: only {blue}126{reset} cells/banks are allowed" - )); - } - Self::InvalidMemoryType(t, s) => { - msg!("{error}: invalid memory type {bold_red}{}{reset}", t) - .label((s, "here")) - .note(cmt!("{note}: only banks/cells are allowed")); - } - Self::InvalidDisplayType(disp, s) => { - msg!("{error}: invalid display type {bold_red}{}{reset}", disp) - .label((s, "here")) - .note(cmt!("{help}: change this to {bold_green}'display'{reset}")); - } - Self::UnknownControlOp(op, s) => { - let available = op!(op, &["enabled", "shoot", "shootp", "config", "color"]); - msg!("{error}: invalid control op {}", op) - .label((s, cmt!("must be one of {available}",))); - } - Self::UnknownUnitControlOp(op, s) => { - let available = op!( - op, - &[ - "idle", "stop", "move", "approach", "boost", "pathfind", "target", - "targetp", "itemDrop", "itemTake", "payDrop", "payEnter", "mine", "flag", - "build", "getBlock", "within" - ] - ); - msg!("{error}: unknown unit control op {}", op) - .label((s, cmt!("must be one of {available}",))); - } - Self::UnknownSetBlockOp(op, s) => { - let available = op!(op, &["floor", "ore", "block"]); - msg!("{error}: unknown set block op {}", op) - .label((s, cmt!("must be one of {available}"))); - } - Self::UnknownUnitLocateOp(op, s) => { - let a = op!(op, &["ore", "spawn", "damaged", "building"]); - msg!("{error}: unkown unit locate op {}", op) - .label((s, cmt!("must be one of {a}",))); - } - Self::UnknownGetBlockOp(op, s) => { - let a = op!(op, &["floor", "ore", "block", "building"]); - msg!("{error}: unknown getblock op {}", op).label((s, cmt!("must be one of {a}",))); - } - Self::UnsupportedImageOp(op, s) => { - let a = op!(op, crate::instructions::draw::INSTRS); - msg!("{error}: invalid image op {}", op).label((s, cmt!("must be one of {a}"))); - } - Self::UnknownRule(rule, s) => { - let a = op!( - rule, - &[ - "currentWaveTime", - "waveTimer", - "waves", - "wave", - "waveSpacing", - "waveSending", - "attackMode", - "enemyCoreBuildRadius", - "dropZoneRadius", - "unitCap", - "wave", - "lighting", - "ambientLight", - "solarMultiplier", - "mapArea", - "buildSpeed", - "unitHealth", - "unitBuildSpeed", - "unitCost", - "unitDamage", - "blockHealth", - "blockDamage", - "rtsMinWeight", - "rtsMinSquad", - ] - ); - msg!("{error}: invalid rule {}", rule).label((s, cmt!("must be one of {a}"))); - } - Self::UnknownCutscene(op, s) => { - let a = op!(op, &["pan", "zoom", "stop"]); - msg!("{error}: invalid cutscene type {}", op) - .label((s, cmt!("must be one of {a}"))); - } - Self::UnknownFetchOp(op, s) => { - let a = op!( - op, - &[ - "buildCount", - "coreCount", - "playerCount", - "unitCount", - "build", - "core", - "player", - "unit" - ] - ); - msg!("{error}: invalid op {}", op).label((s, cmt!("must be one of {a}"))); - } - Self::NoDisplay(disp, s) => { - msg!("{error}: no display allocated") - .label((s, cmt!("display#{bold_red}{disp}{reset} has not been created"))) - .note(cmt!("{note}: it is impossible for me to dynamically allocate displays, as {blue}'display1'{reset} could be large or small")); - } - Self::IndexOutOfBounds(index, size, s) => { - msg!("{error}: {bold_red}index{reset} {} out of bounds", index) - .label((s, cmt!("memory has only {magenta}{size}{reset} elements"))); - } - Self::TooManyVariables(s) => { - msg!("{error}: {bold_red}too many variables{reset}. ") - .label((s, cmt!("we only have 65536 variable slots"))) - .note(cmt!("consider not using variables")); - } - }; - e - } -} diff --git a/lemu/src/parser/mod.rs b/lemu/src/parser/mod.rs deleted file mode 100644 index 0764189..0000000 --- a/lemu/src/parser/mod.rs +++ /dev/null @@ -1,856 +0,0 @@ -use std::io::Write as Wr; - -mod error; -pub use error::Error; - -#[rustfmt::skip] -macro_rules! three { ($a:expr) => { ($a, $a, $a) }; } -#[rustfmt::skip] -macro_rules! four { ($a:expr) => { ($a, $a, $a, $a) }; } -#[rustfmt::skip] -macro_rules! five { ($a:expr) => { ($a, $a, $a, $a, $a) }; } -#[rustfmt::skip] -macro_rules! six { ($a:expr) => { ($a, $a, $a, $a, $a, $a) }; } - -use super::{ - debug::info::{VarData, VarInfo}, - executor::{ExecutorBuilderInternal, Instruction, UPInstr}, - instructions::{ - AlwaysJump, ConditionOp, DynJump, End, Instr, Jump, MathOp1, MathOp2, Op1, Op2, PackColor, - Select, Set, Stop, - draw::{ - Clear, Flush, Line, LinePoly, Poly, RectBordered, RectFilled, SetCol, SetColor, - SetStroke, Triangle, - }, - io::{Print, Read, Write}, - }, - lexer::{Lexer, Token}, - memory::{LAddress, LVar}, -}; - -macro_rules! tokstr { - ($tok:expr) => { - match $tok { - Token::Ident(i) => Some(i), - Token::PackColor => Some("packcolor"), - Token::Null => Some("null"), - Token::Read => Some("read"), - Token::Write => Some("write"), - Token::Set => Some("set"), - Token::Op => Some("op"), - Token::End => Some("end"), - Token::Draw => Some("draw"), - Token::DrawFlush => Some("drawflush"), - Token::Print => Some("print"), - Token::Jump => Some("jump"), - Token::Stop => Some("stop"), - Token::Equal => Some("equal"), - Token::NotEqual => Some("notEqual"), - Token::LessThan => Some("lessThan"), - Token::LessThanEq => Some("lessThanEq"), - Token::GreaterThan => Some("greaterThan"), - Token::GreaterThanEq => Some("greaterThanEq"), - Token::StrictEqual => Some("strictEqual"), - Token::Always => Some("always"), - Token::Add => Some("add"), - Token::Sub => Some("sub"), - Token::Mul => Some("mul"), - Token::Div => Some("div"), - Token::IDiv => Some("idiv"), - Token::Mod => Some("mod"), - Token::Pow => Some("pow"), - Token::And => Some("land"), - Token::Not => Some("not"), - Token::ShiftLeft => Some("shl"), - Token::ShiftRight => Some("shr"), - Token::BitOr => Some("or"), - Token::BitAnd => Some("and"), - Token::ExclusiveOr => Some("xor"), - Token::Max => Some("max"), - Token::Min => Some("min"), - Token::Angle => Some("angle"), - Token::AngleDiff => Some("angleDiff"), - Token::Len => Some("len"), - Token::Noise => Some("noise"), - Token::Abs => Some("abs"), - Token::Log => Some("log"), - Token::Log10 => Some("log10"), - Token::Floor => Some("floor"), - Token::Ceil => Some("ceil"), - Token::Sqrt => Some("sqrt"), - Token::Rand => Some("rand"), - Token::Sin => Some("sin"), - Token::Cos => Some("cos"), - Token::Tan => Some("tan"), - Token::ASin => Some("asin"), - Token::ACos => Some("acos"), - Token::ATan => Some("atan"), - _ => None, - } - }; -} -use tokstr; - -#[derive(Debug)] -enum UJump { - Sometimes { - a: LAddress, - b: LAddress, - op: ConditionOp, - }, - Always, -} - -pub fn parse<'source, W: Wr>( - mut tokens: Lexer<'source>, - executor: &mut ExecutorBuilderInternal<'source, W>, -) -> Result<(), Error<'source>> { - let mut used = 0u32; - let mut mem: Vec<Option<&str>> = Vec::with_capacity(64); // maps &str to usize - let mut dbg_info: Vec<VarInfo> = Vec::with_capacity(64); - macro_rules! push { - // push a ident - (const $var:expr) => {{ - let v = $var; - dbg_info.push(VarInfo { - data: VarData::Constant(v.clone().into()), - span: tokens.span(), - }); - executor.mem.push(LVar::from(v)); - mem.push(None); - used = used - .checked_add(1) - .ok_or(Error::TooManyVariables(tokens.span()))?; - unsafe { Ok(LAddress::addr(used - 1)) } - }}; - ($var:expr) => {{ - let v = $var; - dbg_info.push(VarInfo { - data: VarData::Variable(v), - span: tokens.span(), - }); - executor.mem.push(LVar::null()); - mem.push(Some(v)); - used = used - .checked_add(1) - .ok_or(Error::TooManyVariables(tokens.span()))?; - // SAFETY: just initialized executor.mem - unsafe { Ok(LAddress::addr(used - 1)) } - }}; - } - push!("@counter")?; - macro_rules! addr { - ($val:expr) => {{ - let val = $val; - match mem - .iter() - .zip(0..used) - .find(|&(&v, _)| v == Some(val)) - .map(|(_, i)| i) - { - Some(n) => unsafe { Ok(LAddress::addr(n)) }, - None => push!(val), - } - }}; - } - - let mut unfinished_jumps = Vec::new(); - macro_rules! tok { - () => { - tokens.next().ok_or(Error::UnexpectedEof) - }; - } - macro_rules! err { - ($e:ident($($stuff:expr),+)) => { - Error::$e($($stuff,)+ tokens.span()) - } - } - macro_rules! yeet { - ($e:ident($($stuff:expr),+)) => { - return Err(Error::$e($($stuff,)+ tokens.span())) - }; - } - #[rustfmt::skip] - macro_rules! nextline { - () => { - while let Some(tok) = tokens.next() && tok != Token::Newline { } - }; - } - macro_rules! take_int { - ($tok:expr) => { - match $tok { - Token::Num(n) if n.fract() == 0.0 && n >= 0.0 => Ok(n as usize), - t => Err(err!(ExpectedInt(t))), - } - }; - } - macro_rules! take_memory { - () => {{ - let t = tok!()?; - let container = take_ident!(t.clone())?; - let mut out = String::new(); - for ch in container.chars() { - if matches!(ch, '0'..='9') { - out.push(ch); - continue; - } - if out.len() != 0 { - yeet!(InvalidMemoryType(container)); - } - } - let container = &container[..container.len() - out.len()]; - let n_span = tokens.span().start + container.len()..tokens.span().end; - let cell_n = out - .parse::<usize>() - .map_err(|_| Error::ExpectedInt(t, n_span.clone()))?; - if cell_n > 126 || cell_n == 0 { - return Err(Error::MemoryTooFar(cell_n, n_span)); - } - match container { - "bank" => executor.bank(cell_n), - "cell" => executor.cell(cell_n), - _ => { - return Err(Error::InvalidMemoryType( - container, - tokens.span().start..tokens.span().end - out.len(), - )); - } - } - }}; - } - macro_rules! take_ident { - ($tok:expr) => {{ - let tok = $tok; - tokstr!(tok).ok_or(err!(ExpectedIdent(tok))) - }}; - } - macro_rules! take_var { - ($tok:expr) => {{ - let tok = $tok; - if let Some(i) = tokstr!(tok) { - addr!(i) - } else { - match tok { - Token::Num(n) => push!(const n), - Token::String(s) => push!(const s), - t => Err(err!(ExpectedVar(t))), - } - } - }}; - } - macro_rules! take_numvar { - ($tok:expr) => {{ - let tok = $tok; - if let Some(i) = tokstr!(tok) { - addr!(i) - } else { - match tok { - Token::Num(n) => push!(const n), - t => Err(err!(ExpectedNum(t))), - } - } - }}; - } - macro_rules! num_or_255 { - ($tok:expr) => { - match $tok { - Ok(t) => match take_numvar!(t) { - Err(_) => push!(const 255), - n => n, - }, - Err(_) => push!(const 255), - } - } - } - while let Some(token) = tokens.next() { - match token { - // # omg - Token::Comment(c) => executor.program.push(UPInstr::Comment(c)), - // label: - Token::Ident(v) if v.ends_with(':') => executor - .debug_info - .labels - .push((&v[..v.len() - 1], executor.next())), - // print "5" - Token::Print => { - let val = take_var!(tok!()?)?; - executor.add(Print { val }); - } - // set x 4 - Token::Set => { - let from = tok!()?; - let from = addr!(take_ident!(from)?)?; - let to = take_var!(tok!()?)?; - executor.add(Set { from, to }); - } - // stop - Token::Stop => { - executor.add(Stop {}); - } - // jump start equal a b - Token::Jump => { - let tok = tok!()?; - // label jump - if let Some(i) = tokstr!(tok) { - let span = tokens.span(); - let op = tok!()?; - if op == Token::Always { - executor.jmp(); - unfinished_jumps.push((UJump::Always, (i, span), executor.last())); - } else { - let op = op.try_into().map_err(|op| err!(ExpectedOp(op)))?; - let a = take_var!(tok!()?)?; - let b = take_var!(tok!()?)?; - executor.jmp(); - unfinished_jumps.push(( - UJump::Sometimes { a, b, op }, - (i, span), - executor.last(), - )); - } - } else if let Ok(n) = take_int!(tok.clone()) { - // SAFETY: we check at the end of the block that it is valid - let to = unsafe { Instruction::new(n) }; - let op = tok!()?; - if op == Token::Always { - executor.add(AlwaysJump { to }); - } else { - let op = op.try_into().map_err(|op| err!(ExpectedOp(op)))?; - let a = take_var!(tok!()?)?; - let b = take_var!(tok!()?)?; - executor.add(Jump::new(op, to, a, b)); - } - } else { - yeet!(ExpectedJump(tok)); - }; - } - // op add c 1 2 - Token::Op => { - let op = tok!()?; - if let Ok(op) = MathOp1::try_from(op.clone()) { - // assigning to a var is useless but legal - let out = take_numvar!(tok!()?)?; - let x = take_numvar!(tok!()?)?; - executor.add(Op1::new(op, x, out)); - } else if let Ok(op) = MathOp2::try_from(op.clone()) { - let out = take_numvar!(tok!()?)?; - let a = take_numvar!(tok!()?)?; - let b = take_numvar!(tok!()?)?; - executor.add(Op2::new(op, a, b, out)); - } else { - yeet!(ExpectedOp(op)); - } - } - // write 5.0 bank1 4 (aka bank1[4] = 5.0) - Token::Write => { - let set = take_numvar!(tok!()?)?; - let container = take_memory!(); - let index = take_numvar!(tok!()?)?; - // this is the parser so i wont bother getting unchecked - if let LVar::Num(v) = executor.mem[index.address as usize] - && !container.fits(v.round() as usize) - { - yeet!(IndexOutOfBounds(v.round() as usize, container.size())); - } - executor.add(Write { - index, - set, - container, - }); - } - // read result cell1 4 (aka result = cell1[4]) - Token::Read => { - let output = take_var!(tok!()?)?; - let container = take_memory!(); - let index = take_numvar!(tok!()?)?; - if let LVar::Num(v) = executor.mem[index.address as usize] - && !container.fits(v.round() as usize) - { - yeet!(IndexOutOfBounds(v.round() as usize, container.size())); - } - executor.add(Read { - index, - output, - container, - }); - } - Token::Draw => { - let dty = tok!()?; - let Token::Ident(instr) = dty else { - yeet!(ExpectedIdent(dty)); - }; - match instr { - "clear" => { - let (r, g, b) = three! { num_or_255!(tok!())? }; - executor.draw(Clear { r, g, b }); - } - "color" => { - let (r, g, b, a) = four! { num_or_255!(tok!())? }; - executor.draw(SetColor { r, g, b, a }); - } - "col" => { - let col = take_numvar!(tok!()?)?; - executor.draw(SetCol { col }); - } - "stroke" => { - let size = take_numvar!(tok!()?)?; - executor.draw(SetStroke { size }); - } - "line" => { - let (x, y, x2, y2) = four! { take_numvar!(tok!()?)? }; - executor.draw(Line { - point_a: (x, y), - point_b: (x2, y2), - }); - } - "rect" => { - let (x, y, width, height) = four! { take_numvar!(tok!()?)? }; - executor.draw(RectFilled { - position: (x, y), - width, - height, - }); - } - "lineRect" => { - let (x, y, width, height) = four! { take_numvar!(tok!()?)? }; - executor.draw(RectBordered { - position: (x, y), - width, - height, - }); - } - "triangle" => { - let (x, y, x2, y2, x3, y3) = six! { take_numvar!(tok!()?)? }; - executor.draw(Triangle { - points: ((x, y), (x2, y2), (x3, y3)), - }); - } - "poly" => { - let (x, y, sides, radius, rot) = five! { take_numvar!(tok!()?)? }; - executor.draw(Poly { - pos: (x, y), - sides, - radius, - rot, - }) - } - "linePoly" => { - let (x, y, sides, radius, rot) = five! { take_numvar!(tok!()?)? }; - executor.draw(LinePoly { - pos: (x, y), - sides, - radius, - rot, - }) - } - // image is WONTFIX - i => yeet!(UnsupportedImageOp(i)), - } - } - Token::PackColor => { - let out = take_numvar!(tok!()?)?; - let (r, g, b, a) = four! { take_numvar!(tok!()?)? }; - executor.add(PackColor { out, r, g, b, a }); - } - Token::DrawFlush => { - let t = tok!(); - if let Ok(t) = t - && t != Token::Newline - { - let screen = take_ident!(t.clone())?; - let mut out = String::new(); - for ch in screen.chars() { - if ch.is_ascii_digit() { - out.push(ch); - continue; - } - if !out.is_empty() { - yeet!(InvalidDisplayType(screen)); - } - } - let screen = &screen[..screen.len() - out.len()]; - if screen != "display" { - yeet!(InvalidDisplayType(screen)); - } - let n_span = tokens.span().start + screen.len()..tokens.span().end; - let screen_n = out - .parse::<usize>() - .map_err(|_| Error::ExpectedInt(t, n_span.clone()))?; - let display = executor - .display(screen_n) - .map_err(|n| Error::NoDisplay(n, n_span))?; - executor.add(Flush { display }); - } else { - executor.add(Flush::default()) - } - } - // end - Token::End => { - executor.add(End {}); - } - Token::Select => { - let to = addr!(take_ident!(tok!()?)?)?; // = - // if - let op: ConditionOp = tok!()?.try_into().map_err(|op| err!(ExpectedOp(op)))?; - - let x = take_var!(tok!()?)?; - let y = take_var!(tok!()?)?; - - let a = take_var!(tok!()?)?; // then - let b = take_var!(tok!()?)?; // else - - executor.add(Select { - op: op.get_fn(), - to, - x, - y, - a, - b, - }) - } - // starting newline, simply skip. continue, so as not to to trigger the nextline!() - Token::Newline => continue, - // unknown instruction - Token::Ident(i) => { - macro_rules! all { - ($is:expr) => { - |b| { - for var in &mut *b { - *var = $is; - } - Ok(()) - } - }; - } - macro_rules! take { - (@ $b:ident $n:ident skip) => { - $b[$n]=tok!()?; - - }; - (@ $b:ident $n:ident skip, $($rest:tt)*) => { - $b[$n] = tok!()?;$n+=1; take!(@ $b $n $($rest)*); - }; - (@ $b:ident $n:ident $v: expr) => { - $b[$n] = $v; - }; - (@ $b:ident $n:ident $v: expr, $($rest:tt)*) => { - $b[$n] = $v; - $n += 1; - take!(@ $b $n $($rest)*); - }; - [$($this:tt)*] => { - |b| { - let mut n = 0; - take!(@ b n $($this)*); - Ok(()) - } - }; - } - macro_rules! num { - () => {{ - let tok = tok!()?; - if let Some(i) = tokstr!(tok) { - Token::Ident(i) - } else { - match tok { - Token::Num(n) => Token::Num(n), - t => yeet!(ExpectedNum(t)), - } - } - }}; - } - macro_rules! bool { - () => {{ - let tok = tok!()?; - if let Some(i) = tokstr!(tok) { - Token::Ident(i) - } else { - match tok { - Token::Num(n) => Token::Num(n), - t => yeet!(ExpectedBool(t)), - } - } - }}; - } - macro_rules! ident { - () => { - take_ident!(tok!()?).map(|v| Token::Ident(v))? - }; - } - #[rustfmt::skip] - macro_rules! build { () => { ident!() }} - macro_rules! str { - () => { - match tok!()? { - Token::String(s) => Token::String(s), - t => yeet!(ExpectedString(t)), - } - }; - } - macro_rules! var { - () => {{ - let tok = tok!()?; - if let Some(i) = tokstr!(tok) { - Token::Ident(i) - } else { - match tok { - Token::Num(n) => Token::Num(n), - Token::String(s) => Token::String(s), - t => yeet!(ExpectedVar(t)), - } - } - }}; - } - macro_rules! instr { - (($argc:literal) => $block:expr) => {{ - let mut v: Box<[_; $argc + 1]> = - Box::new(std::array::from_fn(|_| Token::Newline)); - v[0] = Token::Ident(i); - const fn castor< - 'source, - F: FnMut(&mut [Token<'source>; $argc]) -> Result<(), Error<'source>>, - >( - f: F, - ) -> F { - f - } - castor($block)((&mut v[1..]).try_into().unwrap())?; - executor.code(v as Box<[Token<'source>]>); - nextline!(); - continue; - }}; - } - macro_rules! minstr { - ($($sub:ident($argc:literal) => $block:expr)+ => $err:expr $(,)?) => {{ - let t = tok!()?; - let idnt = take_ident!(t.clone())?; - $(if idnt == stringify!($sub) { - let mut v: Box<[_; $argc + 2]> = Box::new(std::array::from_fn(|_| Token::Newline)); - v[0]=Token::Ident(i); - v[1]=Token::Ident(stringify!($sub)); - const fn castor<'source, F: FnMut(&mut [Token<'source>; $argc]) -> Result<(), Error<'source>>>(f: F) -> F { f } - castor($block)((&mut v[2..]).try_into().unwrap())?; - executor.code(v); - nextline!(); - continue; - })+ - return Err($err(idnt, t)); - }}; - } - match i { - "noop" => { - // executor.program.push(UPInstr::Comment("a")); - executor.add(crate::instructions::Noop {}); - } - "printflush" => instr! { - (1) => |b| { - let t = tok!()?; - if let Some(t) = tokstr!(t) { - b[0] = Token::Ident(t); - } else if t == Token::Null { - b[0] = Token::Null; - } else { - b[0] = Token::Ident("message1"); - } - Ok(()) - } - }, - "getlink" => instr! { (2) => take![var!(), num!()] }, - "control" => minstr! { - enabled(2) => take![build!(), bool!()] - shoot(4) => take![build!(), num!(), num!(), bool!()] - shootp(3) => take![build!(), str!(), bool!()] - config(2) => take![build!(), tok!()?] - color(4) => take![build!(), num!(), num!(), num!()] - => |t, _| { err!(UnknownControlOp(t)) }, - }, - "radar" => { - instr! { (7) => take![ident!(), ident!(), ident!(), ident!(), build!(), num!(), var!()] } - } - "sensor" => instr! { (3) => take![var!(), tok!()?, tok!()?] }, - "wait" => instr! { (1) => all!(num!()) }, - "lookup" => instr! { (3) => take![ident!(), var!(), num!()] }, - "packcolor" => instr! { (4) => all!(num!()) }, - "ubind" => instr! { (1) => |b| { - let t = tok!()?; - if tokstr!(t).is_some() || matches!(t, Token::Null) { - b[0] = t; - } else { - yeet!(ExpectedString(t)); - }; - Ok(()) - } }, - "ucontrol" => minstr! { - idle(0) => |_| Ok(()) - stop(0) => |_| Ok(()) - move(2) => all!(num!()) - approach(3) => all!(num!()) - boost(1) => all!(bool!()) - pathfind(2) => all!(num!()) - target(3) => take![num!(), num!(), bool!()] - targetp(2) => take![str!(), bool!()] - itemDrop(2) => take![build!(), num!()] - itemTake(3) => take![build!(), str!(), num!()] - payDrop(0) => |_| Ok(()) - payTake(1) => all!(bool!()) - payEnter(0) => |_| Ok(()) - mine(2) => all!(num!()) - flag(1) => all!(num!()) - build(5) => take![num!(), num!(), build!(), num!(), tok!()?] - getBlock(4) => take![num!(), num!(), build!(), build!()] - within(4) => take![num!(), num!(), num!(), var!()] - => |t, _| { err!(UnknownUnitControlOp(t)) } - }, - "uradar" => { - instr! { (7) => take![ident!(), ident!(), ident!(), ident!(), build!(), num!(), var!()] } - } - "ulocate" => { - minstr! { - building(7) => take![build!(), bool!(), skip, num!(), num!(), bool!(), build!()] - spawn(6) => take![skip, skip, skip, num!(), num!(), bool!()] - damaged(7) => take![skip, skip, skip, num!(), num!(), var!(), var!()] - ore(6) => take![skip, skip, tok!()?, num!(), num!(), bool!()] - => |t, _| { err!(UnknownUnitLocateOp(t)) } - } - } - "getblock" => minstr! { - floor(3) => take![tok!()?, num!(), num!()] - ore(3) => take![tok!()?, num!(), num!()] - block(3) => take![tok!()?, num!(), num!()] - building(3) => take![tok!()?, num!(), num!()] - => |t, _| { err!(UnknownGetBlockOp(t)) } - }, - "setblock" => minstr! { - floor(3) => take![num!(), num!(), str!()] - ore(3) => take![num!(), num!(), str!()] - block(3) => take![num!(), num!(), str!(), str!(), num!()] - => |t, _| { err!(UnknownSetBlockOp(t)) } - }, - "spawn" => { - instr! { (6) => take![str!(), num!(), num!(), num!(), str!(), var!()] } - } - "status" => minstr! { - true(3) => take![ident!(), var!(), num!()] - false(2) => take![ident!(), var!()] - => |_, t| { err!(ExpectedBool(t)) } - }, - "spawnwave" => instr! { (3) => take![num!(), num!(), bool!()] }, - "setrule" => { - #[rustfmt::skip] - macro_rules! rule { () => { take![num!(), str!()] }} - minstr! { - currentWaveTime(1) => all!(num!()) - waveTimer(1) => all!(num!()) - waves(1) => all!(num!()) - wave(1) => all!(num!()) - waveSpacing(1) => all!(num!()) - waveSending(1) => all!(num!()) - attackMode(1) => all!(num!()) - enemyCoreBuildRadius(1) => all!(num!()) - dropZoneRadius(1) => all!(num!()) - unitCap(1) => all!(num!()) - wave(1) => all!(num!()) - mapArea(4) => |b| { - tok!()?; - for var in &mut *b { - *var = num!(); - } - Ok(()) - } - lighting(1) => all!(num!()) - ambientLight(1) => all!(num!()) - solarMultiplier(1) => all!(num!()) - buildSpeed(2) => rule!{} - unitHealth(2) => rule!{} - unitBuildSpeed(2) => rule!{} - unitCost(2) => rule!{} - unitDamage(2) => rule!{} - blockHealth(2) => rule!{} - blockDamage(2) => rule!{} - rtsMinWeight(2) => rule!{} - rtsMinSquad(2) => rule!{} - => |t, _| { err!(UnknownRule(t)) } - } - } - "cutscene" => minstr! { - pan(3) => all!(num!()) - zoom(1) => all!(num!()) - stop(0) => |_| Ok(()) - => |t, _| { err!(UnknownCutscene(t)) } - }, - "explosion" => { - instr! { (8) => take![str!(), num!(), num!(), num!(), bool!(), bool!(), bool!()] } - } - "setrate" => instr! { (1) => all!(num!()) }, - "fetch" => minstr! { - buildCount(4) => take![var!(), str!(), num!(), str!()] // useless 0 - unitCount(4) => take![var!(), str!()] - playerCount(4) => take![var!(), str!()] - coreCount(4) => take![var!(), str!()] - unit(3) => take![var!(), str!(), num!()] - player(3) => take![var!(), str!(), num!()] - core(3) => take![var!(), str!(), num!()] - build(3) => take![var!(), str!(), num!()] - => |t, _| { err!(UnknownFetchOp(t)) } - }, - "getflag" => instr! { (2) => take![bool!(), str!()] }, - "setflag" => instr! { (2) => take![str!(), bool!()] }, - "setprop" => instr! { (3) => take![str!(), var!(), tok!()?] }, - "effect" => { - let mut v = Vec::with_capacity(6); - v.push(Token::Ident("effect")); - while let Some(tok) = tokens.next() - && tok != Token::Newline - { - v.push(tok); - } - executor.code(v.into_boxed_slice()); - // we take the newline here - continue; - } - t => yeet!(ExpectedInstr(Token::Ident(t))), - } - } - t => yeet!(ExpectedInstr(t)), - } - nextline!(); - } - - for (j, (label, s), i) in unfinished_jumps { - let to = executor - .debug_info - .labels - .iter() - .find(|(v, _)| v == &label) - .ok_or_else(|| Error::LabelNotFound(label, s))? - .1; - executor.program[i.get()] = UPInstr::Instr(match j { - UJump::Always => Instr::from(AlwaysJump { to }), - UJump::Sometimes { a, b, op } => Instr::from(Jump::new(op, to, a, b)), - }); - } - - // check jump validity - for i in &executor.program { - if let UPInstr::Instr( - Instr::Jump(Jump { to, .. }) | Instr::AlwaysJump(AlwaysJump { to, .. }), - ) = i - { - if !executor.valid(*to) { - yeet!(InvalidJump(*to)); - } - } - } - - // set dynjumps - let len = executor.program.len(); - for i in &mut executor.program { - if let UPInstr::Instr(Instr::DynJump(DynJump { proglen, .. })) = i { - *proglen = len; - } - } - - executor.debug_info.variables = dbg_info.into(); - - Ok(()) -} diff --git a/lemu/src/primes.mlog b/lemu/src/primes.mlog deleted file mode 100644 index 67defe2..0000000 --- a/lemu/src/primes.mlog +++ /dev/null @@ -1,21 +0,0 @@ -set truth 0 -set: - op add truth truth 1 - write true bank1 truth - jump set lessThanEq truth 512 -set prime 1 -loop: - op add prime prime 1 - jump end greaterThanEq prime 512 - read primality bank1 prime - jump loop notEqual primality true - print prime - print " | " - op mul multiple prime prime - inner: - write false bank1 multiple - op add multiple multiple prime - jump inner lessThanEq multiple 512 - jump loop always -end: - stop diff --git a/lemu/yes.mlog b/lemu/yes.mlog deleted file mode 100644 index 7186860..0000000 --- a/lemu/yes.mlog +++ /dev/null @@ -1,4 +0,0 @@ -set a 1 -select result notEqual x false a 2 -print result -printflush message1 diff --git a/mindus/Cargo.toml b/mindus/Cargo.toml deleted file mode 100644 index e6976bc..0000000 --- a/mindus/Cargo.toml +++ /dev/null @@ -1,63 +0,0 @@ -[package] -name = "mindus" -version = "5.0.42" -edition = "2024" -description = "A library for working with mindustry data formats (eg schematics and maps) (fork of plandustry)" -authors = [ - "KosmosPrime <[email protected]>", - "bend-n <[email protected]>", -] -repository = "https://git.bendn.org/mindus.git" -license = "GPL-3.0" -exclude = [".github/", "items.py"] -readme = "README.md" -keywords = ["mindustry", "format", "drawing"] -rust-version = "1.85" - -[dependencies] -flate2 = "1.0" -base64 = "0.21" -paste = "1.0" -strconv = "0.1" -amap = "0.1" -color-hex = "0.2" -thiserror = "1.0" -bobbin-bits = "0.1" -enum_dispatch = "0.3" -phf = { version = "0.11", features = ["macros"] } -fimg = { version = "0.4.52", features = [ - "scale", - "blur", - "save", -], default-features = false } -atools = "0.1.6" -either = "1.15.0" -implicit-fn = "0.1.0" -lower = "0.2.0" -car = "0.1.3" - -[features] -bin = ["fimg/save"] -square = [] -default = ["bin"] - -[build-dependencies] -fimg = { version = "0.4.52", features = [ - "scale", - "blur", - "save", -], default-features = false } -walkdir = "2" -rand = "0.9.2" - -[[bin]] -name = "mindus" -doc = false -required-features = ["bin"] -path = "src/exe/mod.rs" - -[dev-dependencies] -diff = "0.1" - -[package.metadata.docs.rs] -rustdoc-args = ["--generate-link-to-definition"] diff --git a/mindus/README.md b/mindus/README.md deleted file mode 100644 index 28e1a26..0000000 --- a/mindus/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# mindus - - - -Mindus is a library for working with [Mindustry](https://github.com/Anuken/Mindustry) formats. - -## Usage - -```rust -use mindus::*; -let s = Schematic::deserialize_base64("bXNjaAF4nD3SQW6DMBBA0bE94wF104vkDr1H1QVtWUQioTL0/oFJ/Fl9GXiy5ZFBhiJ6n26zvE9tv7T1f5/bZbtNyyJvv/P2065/+3W9i0hdpu952SR/fiWp29qOL4/lDzkfExkiEpWPGqMKpZRRlT/8VQkv4aXwnlUopYw6vRTVvRzeGJVYy1ShlDKqezk8O8+DV/AKXgkvRSllvK2sdU/xFE/xFE/xFE/xNLzxeRlU9wzPOK9xXsMzPMOr3EcNL0VlqlBKGVWpfh+O5+zPmRdnXpx5cebFmRd/eQ9KIReL").unwrap(); -let output = s.render(); -output.save("output.png"); -``` - -This produces: - - diff --git a/mindus/assets/blocks/autotiles/colored-floor-0.png b/mindus/assets/blocks/autotiles/colored-floor-0.png Binary files differdeleted file mode 100644 index 22cba9c..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-1.png b/mindus/assets/blocks/autotiles/colored-floor-1.png Binary files differdeleted file mode 100644 index 496a56f..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-10.png b/mindus/assets/blocks/autotiles/colored-floor-10.png Binary files differdeleted file mode 100644 index ee8388b..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-11.png b/mindus/assets/blocks/autotiles/colored-floor-11.png Binary files differdeleted file mode 100644 index a2be8be..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-12.png b/mindus/assets/blocks/autotiles/colored-floor-12.png Binary files differdeleted file mode 100644 index af62702..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-13.png b/mindus/assets/blocks/autotiles/colored-floor-13.png Binary files differdeleted file mode 100644 index 0d9e7e3..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-14.png b/mindus/assets/blocks/autotiles/colored-floor-14.png Binary files differdeleted file mode 100644 index 2b71568..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-15.png b/mindus/assets/blocks/autotiles/colored-floor-15.png Binary files differdeleted file mode 100644 index 6013abb..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-16.png b/mindus/assets/blocks/autotiles/colored-floor-16.png Binary files differdeleted file mode 100644 index 2e03b49..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-17.png b/mindus/assets/blocks/autotiles/colored-floor-17.png Binary files differdeleted file mode 100644 index fc704f0..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-18.png b/mindus/assets/blocks/autotiles/colored-floor-18.png Binary files differdeleted file mode 100644 index 9cae9d9..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-19.png b/mindus/assets/blocks/autotiles/colored-floor-19.png Binary files differdeleted file mode 100644 index f27a86f..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-2.png b/mindus/assets/blocks/autotiles/colored-floor-2.png Binary files differdeleted file mode 100644 index 8b2c939..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-20.png b/mindus/assets/blocks/autotiles/colored-floor-20.png Binary files differdeleted file mode 100644 index 45988d0..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-21.png b/mindus/assets/blocks/autotiles/colored-floor-21.png Binary files differdeleted file mode 100644 index 67efd86..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-22.png b/mindus/assets/blocks/autotiles/colored-floor-22.png Binary files differdeleted file mode 100644 index a1ea3c2..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-23.png b/mindus/assets/blocks/autotiles/colored-floor-23.png Binary files differdeleted file mode 100644 index 65842ba..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-24.png b/mindus/assets/blocks/autotiles/colored-floor-24.png Binary files differdeleted file mode 100644 index a870b78..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-25.png b/mindus/assets/blocks/autotiles/colored-floor-25.png Binary files differdeleted file mode 100644 index cef04bc..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-26.png b/mindus/assets/blocks/autotiles/colored-floor-26.png Binary files differdeleted file mode 100644 index 825af4d..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-27.png b/mindus/assets/blocks/autotiles/colored-floor-27.png Binary files differdeleted file mode 100644 index 49f3705..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-28.png b/mindus/assets/blocks/autotiles/colored-floor-28.png Binary files differdeleted file mode 100644 index 80457c4..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-29.png b/mindus/assets/blocks/autotiles/colored-floor-29.png Binary files differdeleted file mode 100644 index e1a7996..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-3.png b/mindus/assets/blocks/autotiles/colored-floor-3.png Binary files differdeleted file mode 100644 index 8565698..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-30.png b/mindus/assets/blocks/autotiles/colored-floor-30.png Binary files differdeleted file mode 100644 index 11a82b7..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-31.png b/mindus/assets/blocks/autotiles/colored-floor-31.png Binary files differdeleted file mode 100644 index 2b7f223..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-32.png b/mindus/assets/blocks/autotiles/colored-floor-32.png Binary files differdeleted file mode 100644 index 63fa0a3..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-33.png b/mindus/assets/blocks/autotiles/colored-floor-33.png Binary files differdeleted file mode 100644 index 4e911e5..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-34.png b/mindus/assets/blocks/autotiles/colored-floor-34.png Binary files differdeleted file mode 100644 index 7e6965e..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-35.png b/mindus/assets/blocks/autotiles/colored-floor-35.png Binary files differdeleted file mode 100644 index 532bf65..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-36.png b/mindus/assets/blocks/autotiles/colored-floor-36.png Binary files differdeleted file mode 100644 index 22ca968..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-37.png b/mindus/assets/blocks/autotiles/colored-floor-37.png Binary files differdeleted file mode 100644 index 2ecd96d..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-38.png b/mindus/assets/blocks/autotiles/colored-floor-38.png Binary files differdeleted file mode 100644 index d0b8c0a..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-39.png b/mindus/assets/blocks/autotiles/colored-floor-39.png Binary files differdeleted file mode 100644 index 1b72549..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-4.png b/mindus/assets/blocks/autotiles/colored-floor-4.png Binary files differdeleted file mode 100644 index caf12f3..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-40.png b/mindus/assets/blocks/autotiles/colored-floor-40.png Binary files differdeleted file mode 100644 index ca27e4f..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-41.png b/mindus/assets/blocks/autotiles/colored-floor-41.png Binary files differdeleted file mode 100644 index e0cc528..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-42.png b/mindus/assets/blocks/autotiles/colored-floor-42.png Binary files differdeleted file mode 100644 index d508a2b..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-43.png b/mindus/assets/blocks/autotiles/colored-floor-43.png Binary files differdeleted file mode 100644 index 25d0499..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-44.png b/mindus/assets/blocks/autotiles/colored-floor-44.png Binary files differdeleted file mode 100644 index 52e5881..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-45.png b/mindus/assets/blocks/autotiles/colored-floor-45.png Binary files differdeleted file mode 100644 index 82b0df7..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-46.png b/mindus/assets/blocks/autotiles/colored-floor-46.png Binary files differdeleted file mode 100644 index 9afe451..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-5.png b/mindus/assets/blocks/autotiles/colored-floor-5.png Binary files differdeleted file mode 100644 index 01c394c..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-6.png b/mindus/assets/blocks/autotiles/colored-floor-6.png Binary files differdeleted file mode 100644 index 5a87652..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-7.png b/mindus/assets/blocks/autotiles/colored-floor-7.png Binary files differdeleted file mode 100644 index 9b2725a..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-8.png b/mindus/assets/blocks/autotiles/colored-floor-8.png Binary files differdeleted file mode 100644 index 5c55479..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-floor-9.png b/mindus/assets/blocks/autotiles/colored-floor-9.png Binary files differdeleted file mode 100644 index e60dcad..0000000 --- a/mindus/assets/blocks/autotiles/colored-floor-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-0.png b/mindus/assets/blocks/autotiles/colored-wall-0.png Binary files differdeleted file mode 100644 index 39f5afe..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-1.png b/mindus/assets/blocks/autotiles/colored-wall-1.png Binary files differdeleted file mode 100644 index 2faa0ce..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-10.png b/mindus/assets/blocks/autotiles/colored-wall-10.png Binary files differdeleted file mode 100644 index ac30b61..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-11.png b/mindus/assets/blocks/autotiles/colored-wall-11.png Binary files differdeleted file mode 100644 index 953f79a..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-12.png b/mindus/assets/blocks/autotiles/colored-wall-12.png Binary files differdeleted file mode 100644 index 2d15a99..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-13.png b/mindus/assets/blocks/autotiles/colored-wall-13.png Binary files differdeleted file mode 100644 index 3f8fe05..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-14.png b/mindus/assets/blocks/autotiles/colored-wall-14.png Binary files differdeleted file mode 100644 index b024a1e..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-15.png b/mindus/assets/blocks/autotiles/colored-wall-15.png Binary files differdeleted file mode 100644 index a763093..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-16.png b/mindus/assets/blocks/autotiles/colored-wall-16.png Binary files differdeleted file mode 100644 index 5ab4f5d..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-17.png b/mindus/assets/blocks/autotiles/colored-wall-17.png Binary files differdeleted file mode 100644 index 015096a..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-18.png b/mindus/assets/blocks/autotiles/colored-wall-18.png Binary files differdeleted file mode 100644 index 159f514..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-19.png b/mindus/assets/blocks/autotiles/colored-wall-19.png Binary files differdeleted file mode 100644 index f5c0b66..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-2.png b/mindus/assets/blocks/autotiles/colored-wall-2.png Binary files differdeleted file mode 100644 index 1637868..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-20.png b/mindus/assets/blocks/autotiles/colored-wall-20.png Binary files differdeleted file mode 100644 index 0acb776..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-21.png b/mindus/assets/blocks/autotiles/colored-wall-21.png Binary files differdeleted file mode 100644 index eb9ee89..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-22.png b/mindus/assets/blocks/autotiles/colored-wall-22.png Binary files differdeleted file mode 100644 index 57b4256..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-23.png b/mindus/assets/blocks/autotiles/colored-wall-23.png Binary files differdeleted file mode 100644 index 1c68e75..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-24.png b/mindus/assets/blocks/autotiles/colored-wall-24.png Binary files differdeleted file mode 100644 index 85118cb..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-25.png b/mindus/assets/blocks/autotiles/colored-wall-25.png Binary files differdeleted file mode 100644 index 14c7dec..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-26.png b/mindus/assets/blocks/autotiles/colored-wall-26.png Binary files differdeleted file mode 100644 index 30d878f..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-27.png b/mindus/assets/blocks/autotiles/colored-wall-27.png Binary files differdeleted file mode 100644 index f8aadb1..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-28.png b/mindus/assets/blocks/autotiles/colored-wall-28.png Binary files differdeleted file mode 100644 index 8562d0e..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-29.png b/mindus/assets/blocks/autotiles/colored-wall-29.png Binary files differdeleted file mode 100644 index 01db88b..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-3.png b/mindus/assets/blocks/autotiles/colored-wall-3.png Binary files differdeleted file mode 100644 index be2b548..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-30.png b/mindus/assets/blocks/autotiles/colored-wall-30.png Binary files differdeleted file mode 100644 index 9642c50..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-31.png b/mindus/assets/blocks/autotiles/colored-wall-31.png Binary files differdeleted file mode 100644 index b620bf7..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-32.png b/mindus/assets/blocks/autotiles/colored-wall-32.png Binary files differdeleted file mode 100644 index a023297..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-33.png b/mindus/assets/blocks/autotiles/colored-wall-33.png Binary files differdeleted file mode 100644 index 07883ad..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-34.png b/mindus/assets/blocks/autotiles/colored-wall-34.png Binary files differdeleted file mode 100644 index 2613d3f..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-35.png b/mindus/assets/blocks/autotiles/colored-wall-35.png Binary files differdeleted file mode 100644 index 889550b..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-36.png b/mindus/assets/blocks/autotiles/colored-wall-36.png Binary files differdeleted file mode 100644 index adaf0c6..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-37.png b/mindus/assets/blocks/autotiles/colored-wall-37.png Binary files differdeleted file mode 100644 index 294c8df..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-38.png b/mindus/assets/blocks/autotiles/colored-wall-38.png Binary files differdeleted file mode 100644 index 3f195d0..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-39.png b/mindus/assets/blocks/autotiles/colored-wall-39.png Binary files differdeleted file mode 100644 index 214cea2..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-4.png b/mindus/assets/blocks/autotiles/colored-wall-4.png Binary files differdeleted file mode 100644 index dae6d01..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-40.png b/mindus/assets/blocks/autotiles/colored-wall-40.png Binary files differdeleted file mode 100644 index 2e8e172..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-41.png b/mindus/assets/blocks/autotiles/colored-wall-41.png Binary files differdeleted file mode 100644 index 5935f75..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-42.png b/mindus/assets/blocks/autotiles/colored-wall-42.png Binary files differdeleted file mode 100644 index 2710d91..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-43.png b/mindus/assets/blocks/autotiles/colored-wall-43.png Binary files differdeleted file mode 100644 index 858b978..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-44.png b/mindus/assets/blocks/autotiles/colored-wall-44.png Binary files differdeleted file mode 100644 index f89cc7b..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-45.png b/mindus/assets/blocks/autotiles/colored-wall-45.png Binary files differdeleted file mode 100644 index ed8396e..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-46.png b/mindus/assets/blocks/autotiles/colored-wall-46.png Binary files differdeleted file mode 100644 index ce677fc..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-5.png b/mindus/assets/blocks/autotiles/colored-wall-5.png Binary files differdeleted file mode 100644 index 8375151..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-6.png b/mindus/assets/blocks/autotiles/colored-wall-6.png Binary files differdeleted file mode 100644 index dad87ce..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-7.png b/mindus/assets/blocks/autotiles/colored-wall-7.png Binary files differdeleted file mode 100644 index 244c1e8..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-8.png b/mindus/assets/blocks/autotiles/colored-wall-8.png Binary files differdeleted file mode 100644 index b5e45d3..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/colored-wall-9.png b/mindus/assets/blocks/autotiles/colored-wall-9.png Binary files differdeleted file mode 100644 index 12beb83..0000000 --- a/mindus/assets/blocks/autotiles/colored-wall-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-0.png b/mindus/assets/blocks/autotiles/metal-tiles-1-0.png Binary files differdeleted file mode 100644 index a83370c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-1.png b/mindus/assets/blocks/autotiles/metal-tiles-1-1.png Binary files differdeleted file mode 100644 index e53a55c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-10.png b/mindus/assets/blocks/autotiles/metal-tiles-1-10.png Binary files differdeleted file mode 100644 index f6547c0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-11.png b/mindus/assets/blocks/autotiles/metal-tiles-1-11.png Binary files differdeleted file mode 100644 index 3d93492..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-12.png b/mindus/assets/blocks/autotiles/metal-tiles-1-12.png Binary files differdeleted file mode 100644 index 3b79fe6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-13.png b/mindus/assets/blocks/autotiles/metal-tiles-1-13.png Binary files differdeleted file mode 100644 index 08176d1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-14.png b/mindus/assets/blocks/autotiles/metal-tiles-1-14.png Binary files differdeleted file mode 100644 index 0396648..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-15.png b/mindus/assets/blocks/autotiles/metal-tiles-1-15.png Binary files differdeleted file mode 100644 index a808501..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-16.png b/mindus/assets/blocks/autotiles/metal-tiles-1-16.png Binary files differdeleted file mode 100644 index 3ac250e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-17.png b/mindus/assets/blocks/autotiles/metal-tiles-1-17.png Binary files differdeleted file mode 100644 index d7567a9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-18.png b/mindus/assets/blocks/autotiles/metal-tiles-1-18.png Binary files differdeleted file mode 100644 index 33297d6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-19.png b/mindus/assets/blocks/autotiles/metal-tiles-1-19.png Binary files differdeleted file mode 100644 index 997c4f5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-2.png b/mindus/assets/blocks/autotiles/metal-tiles-1-2.png Binary files differdeleted file mode 100644 index a9dd2e0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-20.png b/mindus/assets/blocks/autotiles/metal-tiles-1-20.png Binary files differdeleted file mode 100644 index 461deeb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-21.png b/mindus/assets/blocks/autotiles/metal-tiles-1-21.png Binary files differdeleted file mode 100644 index 20e80c5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-22.png b/mindus/assets/blocks/autotiles/metal-tiles-1-22.png Binary files differdeleted file mode 100644 index 797209d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-23.png b/mindus/assets/blocks/autotiles/metal-tiles-1-23.png Binary files differdeleted file mode 100644 index 7ec5230..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-24.png b/mindus/assets/blocks/autotiles/metal-tiles-1-24.png Binary files differdeleted file mode 100644 index 315befc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-25.png b/mindus/assets/blocks/autotiles/metal-tiles-1-25.png Binary files differdeleted file mode 100644 index 24b3f24..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-26.png b/mindus/assets/blocks/autotiles/metal-tiles-1-26.png Binary files differdeleted file mode 100644 index 551ce8f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-27.png b/mindus/assets/blocks/autotiles/metal-tiles-1-27.png Binary files differdeleted file mode 100644 index a4807ae..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-28.png b/mindus/assets/blocks/autotiles/metal-tiles-1-28.png Binary files differdeleted file mode 100644 index 5007413..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-29.png b/mindus/assets/blocks/autotiles/metal-tiles-1-29.png Binary files differdeleted file mode 100644 index be6a420..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-3.png b/mindus/assets/blocks/autotiles/metal-tiles-1-3.png Binary files differdeleted file mode 100644 index 3c7e43d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-30.png b/mindus/assets/blocks/autotiles/metal-tiles-1-30.png Binary files differdeleted file mode 100644 index a148a2f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-31.png b/mindus/assets/blocks/autotiles/metal-tiles-1-31.png Binary files differdeleted file mode 100644 index df72b88..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-32.png b/mindus/assets/blocks/autotiles/metal-tiles-1-32.png Binary files differdeleted file mode 100644 index 4ec33ff..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-33.png b/mindus/assets/blocks/autotiles/metal-tiles-1-33.png Binary files differdeleted file mode 100644 index 3f42613..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-34.png b/mindus/assets/blocks/autotiles/metal-tiles-1-34.png Binary files differdeleted file mode 100644 index 2637b42..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-35.png b/mindus/assets/blocks/autotiles/metal-tiles-1-35.png Binary files differdeleted file mode 100644 index 9e9e603..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-36.png b/mindus/assets/blocks/autotiles/metal-tiles-1-36.png Binary files differdeleted file mode 100644 index 1aec490..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-37.png b/mindus/assets/blocks/autotiles/metal-tiles-1-37.png Binary files differdeleted file mode 100644 index 4142f49..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-38.png b/mindus/assets/blocks/autotiles/metal-tiles-1-38.png Binary files differdeleted file mode 100644 index ab35995..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-39.png b/mindus/assets/blocks/autotiles/metal-tiles-1-39.png Binary files differdeleted file mode 100644 index bf3f08d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-4.png b/mindus/assets/blocks/autotiles/metal-tiles-1-4.png Binary files differdeleted file mode 100644 index affdc8e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-40.png b/mindus/assets/blocks/autotiles/metal-tiles-1-40.png Binary files differdeleted file mode 100644 index c87e37d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-41.png b/mindus/assets/blocks/autotiles/metal-tiles-1-41.png Binary files differdeleted file mode 100644 index e69c9f5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-42.png b/mindus/assets/blocks/autotiles/metal-tiles-1-42.png Binary files differdeleted file mode 100644 index b3d26f6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-43.png b/mindus/assets/blocks/autotiles/metal-tiles-1-43.png Binary files differdeleted file mode 100644 index 6ce4f3e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-44.png b/mindus/assets/blocks/autotiles/metal-tiles-1-44.png Binary files differdeleted file mode 100644 index 091ac7a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-45.png b/mindus/assets/blocks/autotiles/metal-tiles-1-45.png Binary files differdeleted file mode 100644 index d9eb3bf..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-46.png b/mindus/assets/blocks/autotiles/metal-tiles-1-46.png Binary files differdeleted file mode 100644 index ab44352..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-5.png b/mindus/assets/blocks/autotiles/metal-tiles-1-5.png Binary files differdeleted file mode 100644 index e65e1ec..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-6.png b/mindus/assets/blocks/autotiles/metal-tiles-1-6.png Binary files differdeleted file mode 100644 index 9fab62b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-7.png b/mindus/assets/blocks/autotiles/metal-tiles-1-7.png Binary files differdeleted file mode 100644 index bc34b3a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-8.png b/mindus/assets/blocks/autotiles/metal-tiles-1-8.png Binary files differdeleted file mode 100644 index 01a866c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-1-9.png b/mindus/assets/blocks/autotiles/metal-tiles-1-9.png Binary files differdeleted file mode 100644 index 41c7fd4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-1-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-0.png b/mindus/assets/blocks/autotiles/metal-tiles-10-0.png Binary files differdeleted file mode 100644 index e9d0477..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-1.png b/mindus/assets/blocks/autotiles/metal-tiles-10-1.png Binary files differdeleted file mode 100644 index a0ca0b1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-10.png b/mindus/assets/blocks/autotiles/metal-tiles-10-10.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-11.png b/mindus/assets/blocks/autotiles/metal-tiles-10-11.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-12.png b/mindus/assets/blocks/autotiles/metal-tiles-10-12.png Binary files differdeleted file mode 100644 index fd71dc5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-13.png b/mindus/assets/blocks/autotiles/metal-tiles-10-13.png Binary files differdeleted file mode 100644 index 28ee0f5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-14.png b/mindus/assets/blocks/autotiles/metal-tiles-10-14.png Binary files differdeleted file mode 100644 index 98abbdb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-15.png b/mindus/assets/blocks/autotiles/metal-tiles-10-15.png Binary files differdeleted file mode 100644 index 57e4557..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-16.png b/mindus/assets/blocks/autotiles/metal-tiles-10-16.png Binary files differdeleted file mode 100644 index 906257e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-17.png b/mindus/assets/blocks/autotiles/metal-tiles-10-17.png Binary files differdeleted file mode 100644 index 6a52c03..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-18.png b/mindus/assets/blocks/autotiles/metal-tiles-10-18.png Binary files differdeleted file mode 100644 index 09b9a12..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-19.png b/mindus/assets/blocks/autotiles/metal-tiles-10-19.png Binary files differdeleted file mode 100644 index 29628fd..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-2.png b/mindus/assets/blocks/autotiles/metal-tiles-10-2.png Binary files differdeleted file mode 100644 index a77dafd..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-20.png b/mindus/assets/blocks/autotiles/metal-tiles-10-20.png Binary files differdeleted file mode 100644 index c888c24..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-21.png b/mindus/assets/blocks/autotiles/metal-tiles-10-21.png Binary files differdeleted file mode 100644 index b854935..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-22.png b/mindus/assets/blocks/autotiles/metal-tiles-10-22.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-23.png b/mindus/assets/blocks/autotiles/metal-tiles-10-23.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-24.png b/mindus/assets/blocks/autotiles/metal-tiles-10-24.png Binary files differdeleted file mode 100644 index 95364a0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-25.png b/mindus/assets/blocks/autotiles/metal-tiles-10-25.png Binary files differdeleted file mode 100644 index 1e4f75c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-26.png b/mindus/assets/blocks/autotiles/metal-tiles-10-26.png Binary files differdeleted file mode 100644 index 2bcd97b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-27.png b/mindus/assets/blocks/autotiles/metal-tiles-10-27.png Binary files differdeleted file mode 100644 index 032a8af..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-28.png b/mindus/assets/blocks/autotiles/metal-tiles-10-28.png Binary files differdeleted file mode 100644 index 1b086b8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-29.png b/mindus/assets/blocks/autotiles/metal-tiles-10-29.png Binary files differdeleted file mode 100644 index 82f3e1c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-3.png b/mindus/assets/blocks/autotiles/metal-tiles-10-3.png Binary files differdeleted file mode 100644 index f08b31c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-30.png b/mindus/assets/blocks/autotiles/metal-tiles-10-30.png Binary files differdeleted file mode 100644 index 1b086b8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-31.png b/mindus/assets/blocks/autotiles/metal-tiles-10-31.png Binary files differdeleted file mode 100644 index 82f3e1c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-32.png b/mindus/assets/blocks/autotiles/metal-tiles-10-32.png Binary files differdeleted file mode 100644 index cf94896..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-33.png b/mindus/assets/blocks/autotiles/metal-tiles-10-33.png Binary files differdeleted file mode 100644 index 70f62ab..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-34.png b/mindus/assets/blocks/autotiles/metal-tiles-10-34.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-35.png b/mindus/assets/blocks/autotiles/metal-tiles-10-35.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-36.png b/mindus/assets/blocks/autotiles/metal-tiles-10-36.png Binary files differdeleted file mode 100644 index 28baa1d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-37.png b/mindus/assets/blocks/autotiles/metal-tiles-10-37.png Binary files differdeleted file mode 100644 index 4bf374c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-38.png b/mindus/assets/blocks/autotiles/metal-tiles-10-38.png Binary files differdeleted file mode 100644 index 4e46578..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-39.png b/mindus/assets/blocks/autotiles/metal-tiles-10-39.png Binary files differdeleted file mode 100644 index 6e7049e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-4.png b/mindus/assets/blocks/autotiles/metal-tiles-10-4.png Binary files differdeleted file mode 100644 index 5cd68ff..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-40.png b/mindus/assets/blocks/autotiles/metal-tiles-10-40.png Binary files differdeleted file mode 100644 index c888c24..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-41.png b/mindus/assets/blocks/autotiles/metal-tiles-10-41.png Binary files differdeleted file mode 100644 index b854935..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-42.png b/mindus/assets/blocks/autotiles/metal-tiles-10-42.png Binary files differdeleted file mode 100644 index c888c24..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-43.png b/mindus/assets/blocks/autotiles/metal-tiles-10-43.png Binary files differdeleted file mode 100644 index b854935..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-44.png b/mindus/assets/blocks/autotiles/metal-tiles-10-44.png Binary files differdeleted file mode 100644 index e888cb2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-45.png b/mindus/assets/blocks/autotiles/metal-tiles-10-45.png Binary files differdeleted file mode 100644 index d384228..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-46.png b/mindus/assets/blocks/autotiles/metal-tiles-10-46.png Binary files differdeleted file mode 100644 index 34d1f84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-5.png b/mindus/assets/blocks/autotiles/metal-tiles-10-5.png Binary files differdeleted file mode 100644 index fe97ef0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-6.png b/mindus/assets/blocks/autotiles/metal-tiles-10-6.png Binary files differdeleted file mode 100644 index cae903d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-7.png b/mindus/assets/blocks/autotiles/metal-tiles-10-7.png Binary files differdeleted file mode 100644 index 65bb3d9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-8.png b/mindus/assets/blocks/autotiles/metal-tiles-10-8.png Binary files differdeleted file mode 100644 index 1b086b8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-10-9.png b/mindus/assets/blocks/autotiles/metal-tiles-10-9.png Binary files differdeleted file mode 100644 index 82f3e1c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-10-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-0.png b/mindus/assets/blocks/autotiles/metal-tiles-11-0.png Binary files differdeleted file mode 100644 index bfd2d60..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-1.png b/mindus/assets/blocks/autotiles/metal-tiles-11-1.png Binary files differdeleted file mode 100644 index be39313..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-10.png b/mindus/assets/blocks/autotiles/metal-tiles-11-10.png Binary files differdeleted file mode 100644 index 4a3c2a0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-11.png b/mindus/assets/blocks/autotiles/metal-tiles-11-11.png Binary files differdeleted file mode 100644 index d1db125..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-12.png b/mindus/assets/blocks/autotiles/metal-tiles-11-12.png Binary files differdeleted file mode 100644 index 3528ba8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-13.png b/mindus/assets/blocks/autotiles/metal-tiles-11-13.png Binary files differdeleted file mode 100644 index 65b69e6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-14.png b/mindus/assets/blocks/autotiles/metal-tiles-11-14.png Binary files differdeleted file mode 100644 index 832e8f5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-15.png b/mindus/assets/blocks/autotiles/metal-tiles-11-15.png Binary files differdeleted file mode 100644 index ef36066..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-16.png b/mindus/assets/blocks/autotiles/metal-tiles-11-16.png Binary files differdeleted file mode 100644 index cac8453..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-17.png b/mindus/assets/blocks/autotiles/metal-tiles-11-17.png Binary files differdeleted file mode 100644 index 8671dd2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-18.png b/mindus/assets/blocks/autotiles/metal-tiles-11-18.png Binary files differdeleted file mode 100644 index 305acd1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-19.png b/mindus/assets/blocks/autotiles/metal-tiles-11-19.png Binary files differdeleted file mode 100644 index 3e3e186..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-2.png b/mindus/assets/blocks/autotiles/metal-tiles-11-2.png Binary files differdeleted file mode 100644 index 73f5b1f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-20.png b/mindus/assets/blocks/autotiles/metal-tiles-11-20.png Binary files differdeleted file mode 100644 index 4e35692..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-21.png b/mindus/assets/blocks/autotiles/metal-tiles-11-21.png Binary files differdeleted file mode 100644 index f11d990..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-22.png b/mindus/assets/blocks/autotiles/metal-tiles-11-22.png Binary files differdeleted file mode 100644 index 53cb47f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-23.png b/mindus/assets/blocks/autotiles/metal-tiles-11-23.png Binary files differdeleted file mode 100644 index 3888c61..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-24.png b/mindus/assets/blocks/autotiles/metal-tiles-11-24.png Binary files differdeleted file mode 100644 index ab4a140..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-25.png b/mindus/assets/blocks/autotiles/metal-tiles-11-25.png Binary files differdeleted file mode 100644 index f3fd1df..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-26.png b/mindus/assets/blocks/autotiles/metal-tiles-11-26.png Binary files differdeleted file mode 100644 index 4020303..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-27.png b/mindus/assets/blocks/autotiles/metal-tiles-11-27.png Binary files differdeleted file mode 100644 index 43ad8e5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-28.png b/mindus/assets/blocks/autotiles/metal-tiles-11-28.png Binary files differdeleted file mode 100644 index e847622..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-29.png b/mindus/assets/blocks/autotiles/metal-tiles-11-29.png Binary files differdeleted file mode 100644 index c6c6a83..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-3.png b/mindus/assets/blocks/autotiles/metal-tiles-11-3.png Binary files differdeleted file mode 100644 index 95a795f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-30.png b/mindus/assets/blocks/autotiles/metal-tiles-11-30.png Binary files differdeleted file mode 100644 index 4333147..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-31.png b/mindus/assets/blocks/autotiles/metal-tiles-11-31.png Binary files differdeleted file mode 100644 index 2a46fe4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-32.png b/mindus/assets/blocks/autotiles/metal-tiles-11-32.png Binary files differdeleted file mode 100644 index 9476b23..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-33.png b/mindus/assets/blocks/autotiles/metal-tiles-11-33.png Binary files differdeleted file mode 100644 index fa3c88d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-34.png b/mindus/assets/blocks/autotiles/metal-tiles-11-34.png Binary files differdeleted file mode 100644 index 22bbf43..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-35.png b/mindus/assets/blocks/autotiles/metal-tiles-11-35.png Binary files differdeleted file mode 100644 index 0f18e6a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-36.png b/mindus/assets/blocks/autotiles/metal-tiles-11-36.png Binary files differdeleted file mode 100644 index 10c825b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-37.png b/mindus/assets/blocks/autotiles/metal-tiles-11-37.png Binary files differdeleted file mode 100644 index cc2cb5c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-38.png b/mindus/assets/blocks/autotiles/metal-tiles-11-38.png Binary files differdeleted file mode 100644 index 62b20d8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-39.png b/mindus/assets/blocks/autotiles/metal-tiles-11-39.png Binary files differdeleted file mode 100644 index c2e4f68..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-4.png b/mindus/assets/blocks/autotiles/metal-tiles-11-4.png Binary files differdeleted file mode 100644 index 88e57c5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-40.png b/mindus/assets/blocks/autotiles/metal-tiles-11-40.png Binary files differdeleted file mode 100644 index f019568..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-41.png b/mindus/assets/blocks/autotiles/metal-tiles-11-41.png Binary files differdeleted file mode 100644 index b9e126c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-42.png b/mindus/assets/blocks/autotiles/metal-tiles-11-42.png Binary files differdeleted file mode 100644 index 76e63e4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-43.png b/mindus/assets/blocks/autotiles/metal-tiles-11-43.png Binary files differdeleted file mode 100644 index 3278744..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-44.png b/mindus/assets/blocks/autotiles/metal-tiles-11-44.png Binary files differdeleted file mode 100644 index fb2acbc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-45.png b/mindus/assets/blocks/autotiles/metal-tiles-11-45.png Binary files differdeleted file mode 100644 index 6ed640e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-46.png b/mindus/assets/blocks/autotiles/metal-tiles-11-46.png Binary files differdeleted file mode 100644 index 248e481..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-5.png b/mindus/assets/blocks/autotiles/metal-tiles-11-5.png Binary files differdeleted file mode 100644 index 0420352..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-6.png b/mindus/assets/blocks/autotiles/metal-tiles-11-6.png Binary files differdeleted file mode 100644 index 18c94e3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-7.png b/mindus/assets/blocks/autotiles/metal-tiles-11-7.png Binary files differdeleted file mode 100644 index 902c08a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-8.png b/mindus/assets/blocks/autotiles/metal-tiles-11-8.png Binary files differdeleted file mode 100644 index dd7ebb3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-11-9.png b/mindus/assets/blocks/autotiles/metal-tiles-11-9.png Binary files differdeleted file mode 100644 index ca97c56..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-11-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-0.png b/mindus/assets/blocks/autotiles/metal-tiles-12-0.png Binary files differdeleted file mode 100644 index cf5cd97..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-1.png b/mindus/assets/blocks/autotiles/metal-tiles-12-1.png Binary files differdeleted file mode 100644 index 92f79d4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-10.png b/mindus/assets/blocks/autotiles/metal-tiles-12-10.png Binary files differdeleted file mode 100644 index c26b212..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-11.png b/mindus/assets/blocks/autotiles/metal-tiles-12-11.png Binary files differdeleted file mode 100644 index 5e9a5cf..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-12.png b/mindus/assets/blocks/autotiles/metal-tiles-12-12.png Binary files differdeleted file mode 100644 index d127031..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-13.png b/mindus/assets/blocks/autotiles/metal-tiles-12-13.png Binary files differdeleted file mode 100644 index 65b69e6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-14.png b/mindus/assets/blocks/autotiles/metal-tiles-12-14.png Binary files differdeleted file mode 100644 index 6616ee1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-15.png b/mindus/assets/blocks/autotiles/metal-tiles-12-15.png Binary files differdeleted file mode 100644 index 75fc960..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-16.png b/mindus/assets/blocks/autotiles/metal-tiles-12-16.png Binary files differdeleted file mode 100644 index 889bfa4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-17.png b/mindus/assets/blocks/autotiles/metal-tiles-12-17.png Binary files differdeleted file mode 100644 index 0766e09..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-18.png b/mindus/assets/blocks/autotiles/metal-tiles-12-18.png Binary files differdeleted file mode 100644 index 85010d7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-19.png b/mindus/assets/blocks/autotiles/metal-tiles-12-19.png Binary files differdeleted file mode 100644 index b269ab5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-2.png b/mindus/assets/blocks/autotiles/metal-tiles-12-2.png Binary files differdeleted file mode 100644 index 7c7a991..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-20.png b/mindus/assets/blocks/autotiles/metal-tiles-12-20.png Binary files differdeleted file mode 100644 index 63717db..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-21.png b/mindus/assets/blocks/autotiles/metal-tiles-12-21.png Binary files differdeleted file mode 100644 index 848afba..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-22.png b/mindus/assets/blocks/autotiles/metal-tiles-12-22.png Binary files differdeleted file mode 100644 index b48307c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-23.png b/mindus/assets/blocks/autotiles/metal-tiles-12-23.png Binary files differdeleted file mode 100644 index 33b462a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-24.png b/mindus/assets/blocks/autotiles/metal-tiles-12-24.png Binary files differdeleted file mode 100644 index 54ea1a3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-25.png b/mindus/assets/blocks/autotiles/metal-tiles-12-25.png Binary files differdeleted file mode 100644 index e936dae..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-26.png b/mindus/assets/blocks/autotiles/metal-tiles-12-26.png Binary files differdeleted file mode 100644 index 1ac09d9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-27.png b/mindus/assets/blocks/autotiles/metal-tiles-12-27.png Binary files differdeleted file mode 100644 index 37d0a65..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-28.png b/mindus/assets/blocks/autotiles/metal-tiles-12-28.png Binary files differdeleted file mode 100644 index 9ec4070..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-29.png b/mindus/assets/blocks/autotiles/metal-tiles-12-29.png Binary files differdeleted file mode 100644 index 8d219de..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-3.png b/mindus/assets/blocks/autotiles/metal-tiles-12-3.png Binary files differdeleted file mode 100644 index fba8e12..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-30.png b/mindus/assets/blocks/autotiles/metal-tiles-12-30.png Binary files differdeleted file mode 100644 index 7ae9281..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-31.png b/mindus/assets/blocks/autotiles/metal-tiles-12-31.png Binary files differdeleted file mode 100644 index b7c9bee..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-32.png b/mindus/assets/blocks/autotiles/metal-tiles-12-32.png Binary files differdeleted file mode 100644 index faef954..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-33.png b/mindus/assets/blocks/autotiles/metal-tiles-12-33.png Binary files differdeleted file mode 100644 index dbc4e6c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-34.png b/mindus/assets/blocks/autotiles/metal-tiles-12-34.png Binary files differdeleted file mode 100644 index 5989738..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-35.png b/mindus/assets/blocks/autotiles/metal-tiles-12-35.png Binary files differdeleted file mode 100644 index 80b3d72..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-36.png b/mindus/assets/blocks/autotiles/metal-tiles-12-36.png Binary files differdeleted file mode 100644 index 721eac2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-37.png b/mindus/assets/blocks/autotiles/metal-tiles-12-37.png Binary files differdeleted file mode 100644 index a535792..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-38.png b/mindus/assets/blocks/autotiles/metal-tiles-12-38.png Binary files differdeleted file mode 100644 index 37e0c53..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-39.png b/mindus/assets/blocks/autotiles/metal-tiles-12-39.png Binary files differdeleted file mode 100644 index 98b5cf5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-4.png b/mindus/assets/blocks/autotiles/metal-tiles-12-4.png Binary files differdeleted file mode 100644 index ad846b0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-40.png b/mindus/assets/blocks/autotiles/metal-tiles-12-40.png Binary files differdeleted file mode 100644 index 78f14e2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-41.png b/mindus/assets/blocks/autotiles/metal-tiles-12-41.png Binary files differdeleted file mode 100644 index a22f9bd..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-42.png b/mindus/assets/blocks/autotiles/metal-tiles-12-42.png Binary files differdeleted file mode 100644 index 07ee905..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-43.png b/mindus/assets/blocks/autotiles/metal-tiles-12-43.png Binary files differdeleted file mode 100644 index 36f2892..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-44.png b/mindus/assets/blocks/autotiles/metal-tiles-12-44.png Binary files differdeleted file mode 100644 index 4987599..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-45.png b/mindus/assets/blocks/autotiles/metal-tiles-12-45.png Binary files differdeleted file mode 100644 index a24214b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-46.png b/mindus/assets/blocks/autotiles/metal-tiles-12-46.png Binary files differdeleted file mode 100644 index 8ff4705..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-5.png b/mindus/assets/blocks/autotiles/metal-tiles-12-5.png Binary files differdeleted file mode 100644 index 6ed3b7e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-6.png b/mindus/assets/blocks/autotiles/metal-tiles-12-6.png Binary files differdeleted file mode 100644 index 603498a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-7.png b/mindus/assets/blocks/autotiles/metal-tiles-12-7.png Binary files differdeleted file mode 100644 index 27f2e1d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-8.png b/mindus/assets/blocks/autotiles/metal-tiles-12-8.png Binary files differdeleted file mode 100644 index 14085b4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-12-9.png b/mindus/assets/blocks/autotiles/metal-tiles-12-9.png Binary files differdeleted file mode 100644 index 35e059c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-12-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-0.png b/mindus/assets/blocks/autotiles/metal-tiles-13-0.png Binary files differdeleted file mode 100644 index 3332ddc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-1.png b/mindus/assets/blocks/autotiles/metal-tiles-13-1.png Binary files differdeleted file mode 100644 index ca7f99b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-10.png b/mindus/assets/blocks/autotiles/metal-tiles-13-10.png Binary files differdeleted file mode 100644 index b9b6377..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-11.png b/mindus/assets/blocks/autotiles/metal-tiles-13-11.png Binary files differdeleted file mode 100644 index f737cd3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-12.png b/mindus/assets/blocks/autotiles/metal-tiles-13-12.png Binary files differdeleted file mode 100644 index 46f5c8a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-13.png b/mindus/assets/blocks/autotiles/metal-tiles-13-13.png Binary files differdeleted file mode 100644 index 9b23b42..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-14.png b/mindus/assets/blocks/autotiles/metal-tiles-13-14.png Binary files differdeleted file mode 100644 index fa894c7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-15.png b/mindus/assets/blocks/autotiles/metal-tiles-13-15.png Binary files differdeleted file mode 100644 index 6141753..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-16.png b/mindus/assets/blocks/autotiles/metal-tiles-13-16.png Binary files differdeleted file mode 100644 index f118cc9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-17.png b/mindus/assets/blocks/autotiles/metal-tiles-13-17.png Binary files differdeleted file mode 100644 index f381884..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-18.png b/mindus/assets/blocks/autotiles/metal-tiles-13-18.png Binary files differdeleted file mode 100644 index 5327c77..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-19.png b/mindus/assets/blocks/autotiles/metal-tiles-13-19.png Binary files differdeleted file mode 100644 index 9cac53f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-2.png b/mindus/assets/blocks/autotiles/metal-tiles-13-2.png Binary files differdeleted file mode 100644 index d9ee678..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-20.png b/mindus/assets/blocks/autotiles/metal-tiles-13-20.png Binary files differdeleted file mode 100644 index 34a9b97..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-21.png b/mindus/assets/blocks/autotiles/metal-tiles-13-21.png Binary files differdeleted file mode 100644 index c7d711a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-22.png b/mindus/assets/blocks/autotiles/metal-tiles-13-22.png Binary files differdeleted file mode 100644 index f839f76..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-23.png b/mindus/assets/blocks/autotiles/metal-tiles-13-23.png Binary files differdeleted file mode 100644 index a6dd10f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-24.png b/mindus/assets/blocks/autotiles/metal-tiles-13-24.png Binary files differdeleted file mode 100644 index dc8ce47..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-25.png b/mindus/assets/blocks/autotiles/metal-tiles-13-25.png Binary files differdeleted file mode 100644 index 351991c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-26.png b/mindus/assets/blocks/autotiles/metal-tiles-13-26.png Binary files differdeleted file mode 100644 index 60e350a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-27.png b/mindus/assets/blocks/autotiles/metal-tiles-13-27.png Binary files differdeleted file mode 100644 index 4ffdf70..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-28.png b/mindus/assets/blocks/autotiles/metal-tiles-13-28.png Binary files differdeleted file mode 100644 index 5252471..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-29.png b/mindus/assets/blocks/autotiles/metal-tiles-13-29.png Binary files differdeleted file mode 100644 index 03d8fad..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-3.png b/mindus/assets/blocks/autotiles/metal-tiles-13-3.png Binary files differdeleted file mode 100644 index b8258ab..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-30.png b/mindus/assets/blocks/autotiles/metal-tiles-13-30.png Binary files differdeleted file mode 100644 index 1ad7c5d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-31.png b/mindus/assets/blocks/autotiles/metal-tiles-13-31.png Binary files differdeleted file mode 100644 index d489929..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-32.png b/mindus/assets/blocks/autotiles/metal-tiles-13-32.png Binary files differdeleted file mode 100644 index ad62d60..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-33.png b/mindus/assets/blocks/autotiles/metal-tiles-13-33.png Binary files differdeleted file mode 100644 index 1579858..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-34.png b/mindus/assets/blocks/autotiles/metal-tiles-13-34.png Binary files differdeleted file mode 100644 index f9f1fd3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-35.png b/mindus/assets/blocks/autotiles/metal-tiles-13-35.png Binary files differdeleted file mode 100644 index 408c336..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-36.png b/mindus/assets/blocks/autotiles/metal-tiles-13-36.png Binary files differdeleted file mode 100644 index 4dbbaa3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-37.png b/mindus/assets/blocks/autotiles/metal-tiles-13-37.png Binary files differdeleted file mode 100644 index 97ca011..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-38.png b/mindus/assets/blocks/autotiles/metal-tiles-13-38.png Binary files differdeleted file mode 100644 index 3e81d7e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-39.png b/mindus/assets/blocks/autotiles/metal-tiles-13-39.png Binary files differdeleted file mode 100644 index 4f1c6d9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-4.png b/mindus/assets/blocks/autotiles/metal-tiles-13-4.png Binary files differdeleted file mode 100644 index e22663c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-40.png b/mindus/assets/blocks/autotiles/metal-tiles-13-40.png Binary files differdeleted file mode 100644 index 4d4192b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-41.png b/mindus/assets/blocks/autotiles/metal-tiles-13-41.png Binary files differdeleted file mode 100644 index 8fe32f0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-42.png b/mindus/assets/blocks/autotiles/metal-tiles-13-42.png Binary files differdeleted file mode 100644 index 4a21be1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-43.png b/mindus/assets/blocks/autotiles/metal-tiles-13-43.png Binary files differdeleted file mode 100644 index 7157336..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-44.png b/mindus/assets/blocks/autotiles/metal-tiles-13-44.png Binary files differdeleted file mode 100644 index 871051a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-45.png b/mindus/assets/blocks/autotiles/metal-tiles-13-45.png Binary files differdeleted file mode 100644 index b3af2f7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-46.png b/mindus/assets/blocks/autotiles/metal-tiles-13-46.png Binary files differdeleted file mode 100644 index f5286b9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-5.png b/mindus/assets/blocks/autotiles/metal-tiles-13-5.png Binary files differdeleted file mode 100644 index 237b627..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-6.png b/mindus/assets/blocks/autotiles/metal-tiles-13-6.png Binary files differdeleted file mode 100644 index 49f5386..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-7.png b/mindus/assets/blocks/autotiles/metal-tiles-13-7.png Binary files differdeleted file mode 100644 index 8ef2e71..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-8.png b/mindus/assets/blocks/autotiles/metal-tiles-13-8.png Binary files differdeleted file mode 100644 index 47433e2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-13-9.png b/mindus/assets/blocks/autotiles/metal-tiles-13-9.png Binary files differdeleted file mode 100644 index 6c47f48..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-13-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-0.png b/mindus/assets/blocks/autotiles/metal-tiles-2-0.png Binary files differdeleted file mode 100644 index caeab95..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-1.png b/mindus/assets/blocks/autotiles/metal-tiles-2-1.png Binary files differdeleted file mode 100644 index c4698a0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-10.png b/mindus/assets/blocks/autotiles/metal-tiles-2-10.png Binary files differdeleted file mode 100644 index 1ba4986..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-11.png b/mindus/assets/blocks/autotiles/metal-tiles-2-11.png Binary files differdeleted file mode 100644 index 097785d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-12.png b/mindus/assets/blocks/autotiles/metal-tiles-2-12.png Binary files differdeleted file mode 100644 index f35577d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-13.png b/mindus/assets/blocks/autotiles/metal-tiles-2-13.png Binary files differdeleted file mode 100644 index 9b51823..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-14.png b/mindus/assets/blocks/autotiles/metal-tiles-2-14.png Binary files differdeleted file mode 100644 index e779740..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-15.png b/mindus/assets/blocks/autotiles/metal-tiles-2-15.png Binary files differdeleted file mode 100644 index ba79b92..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-16.png b/mindus/assets/blocks/autotiles/metal-tiles-2-16.png Binary files differdeleted file mode 100644 index 3c18fd3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-17.png b/mindus/assets/blocks/autotiles/metal-tiles-2-17.png Binary files differdeleted file mode 100644 index 173cf84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-18.png b/mindus/assets/blocks/autotiles/metal-tiles-2-18.png Binary files differdeleted file mode 100644 index d340820..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-19.png b/mindus/assets/blocks/autotiles/metal-tiles-2-19.png Binary files differdeleted file mode 100644 index 32bd595..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-2.png b/mindus/assets/blocks/autotiles/metal-tiles-2-2.png Binary files differdeleted file mode 100644 index d955dff..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-20.png b/mindus/assets/blocks/autotiles/metal-tiles-2-20.png Binary files differdeleted file mode 100644 index 8e1d65d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-21.png b/mindus/assets/blocks/autotiles/metal-tiles-2-21.png Binary files differdeleted file mode 100644 index 7dac136..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-22.png b/mindus/assets/blocks/autotiles/metal-tiles-2-22.png Binary files differdeleted file mode 100644 index 029dc90..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-23.png b/mindus/assets/blocks/autotiles/metal-tiles-2-23.png Binary files differdeleted file mode 100644 index 6263765..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-24.png b/mindus/assets/blocks/autotiles/metal-tiles-2-24.png Binary files differdeleted file mode 100644 index b5ae8d3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-25.png b/mindus/assets/blocks/autotiles/metal-tiles-2-25.png Binary files differdeleted file mode 100644 index 50e8f3d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-26.png b/mindus/assets/blocks/autotiles/metal-tiles-2-26.png Binary files differdeleted file mode 100644 index f797daf..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-27.png b/mindus/assets/blocks/autotiles/metal-tiles-2-27.png Binary files differdeleted file mode 100644 index 5ee3c8b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-28.png b/mindus/assets/blocks/autotiles/metal-tiles-2-28.png Binary files differdeleted file mode 100644 index dc096ad..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-29.png b/mindus/assets/blocks/autotiles/metal-tiles-2-29.png Binary files differdeleted file mode 100644 index 785e827..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-3.png b/mindus/assets/blocks/autotiles/metal-tiles-2-3.png Binary files differdeleted file mode 100644 index 30131f2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-30.png b/mindus/assets/blocks/autotiles/metal-tiles-2-30.png Binary files differdeleted file mode 100644 index eca0259..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-31.png b/mindus/assets/blocks/autotiles/metal-tiles-2-31.png Binary files differdeleted file mode 100644 index 32cd971..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-32.png b/mindus/assets/blocks/autotiles/metal-tiles-2-32.png Binary files differdeleted file mode 100644 index 1bc9a79..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-33.png b/mindus/assets/blocks/autotiles/metal-tiles-2-33.png Binary files differdeleted file mode 100644 index 7669099..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-34.png b/mindus/assets/blocks/autotiles/metal-tiles-2-34.png Binary files differdeleted file mode 100644 index f9811fc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-35.png b/mindus/assets/blocks/autotiles/metal-tiles-2-35.png Binary files differdeleted file mode 100644 index 1e76135..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-36.png b/mindus/assets/blocks/autotiles/metal-tiles-2-36.png Binary files differdeleted file mode 100644 index 779b2e6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-37.png b/mindus/assets/blocks/autotiles/metal-tiles-2-37.png Binary files differdeleted file mode 100644 index bb687e2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-38.png b/mindus/assets/blocks/autotiles/metal-tiles-2-38.png Binary files differdeleted file mode 100644 index 4cbc0a7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-39.png b/mindus/assets/blocks/autotiles/metal-tiles-2-39.png Binary files differdeleted file mode 100644 index b52513d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-4.png b/mindus/assets/blocks/autotiles/metal-tiles-2-4.png Binary files differdeleted file mode 100644 index 713c38d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-40.png b/mindus/assets/blocks/autotiles/metal-tiles-2-40.png Binary files differdeleted file mode 100644 index b0eb224..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-41.png b/mindus/assets/blocks/autotiles/metal-tiles-2-41.png Binary files differdeleted file mode 100644 index f96f95c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-42.png b/mindus/assets/blocks/autotiles/metal-tiles-2-42.png Binary files differdeleted file mode 100644 index 76c52b9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-43.png b/mindus/assets/blocks/autotiles/metal-tiles-2-43.png Binary files differdeleted file mode 100644 index ad5cdcf..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-44.png b/mindus/assets/blocks/autotiles/metal-tiles-2-44.png Binary files differdeleted file mode 100644 index d06d356..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-45.png b/mindus/assets/blocks/autotiles/metal-tiles-2-45.png Binary files differdeleted file mode 100644 index 52ef069..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-46.png b/mindus/assets/blocks/autotiles/metal-tiles-2-46.png Binary files differdeleted file mode 100644 index 7330cc5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-5.png b/mindus/assets/blocks/autotiles/metal-tiles-2-5.png Binary files differdeleted file mode 100644 index 4679da5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-6.png b/mindus/assets/blocks/autotiles/metal-tiles-2-6.png Binary files differdeleted file mode 100644 index f63a416..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-7.png b/mindus/assets/blocks/autotiles/metal-tiles-2-7.png Binary files differdeleted file mode 100644 index 0be8c91..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-8.png b/mindus/assets/blocks/autotiles/metal-tiles-2-8.png Binary files differdeleted file mode 100644 index 311edc2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-2-9.png b/mindus/assets/blocks/autotiles/metal-tiles-2-9.png Binary files differdeleted file mode 100644 index e2a0e42..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-2-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-0.png b/mindus/assets/blocks/autotiles/metal-tiles-3-0.png Binary files differdeleted file mode 100644 index bdae22e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-1.png b/mindus/assets/blocks/autotiles/metal-tiles-3-1.png Binary files differdeleted file mode 100644 index 7520c5a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-10.png b/mindus/assets/blocks/autotiles/metal-tiles-3-10.png Binary files differdeleted file mode 100644 index c925ff0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-11.png b/mindus/assets/blocks/autotiles/metal-tiles-3-11.png Binary files differdeleted file mode 100644 index 9a1a7c5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-12.png b/mindus/assets/blocks/autotiles/metal-tiles-3-12.png Binary files differdeleted file mode 100644 index 15e6f17..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-13.png b/mindus/assets/blocks/autotiles/metal-tiles-3-13.png Binary files differdeleted file mode 100644 index 85fd4fc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-14.png b/mindus/assets/blocks/autotiles/metal-tiles-3-14.png Binary files differdeleted file mode 100644 index a322a5d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-15.png b/mindus/assets/blocks/autotiles/metal-tiles-3-15.png Binary files differdeleted file mode 100644 index da52500..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-16.png b/mindus/assets/blocks/autotiles/metal-tiles-3-16.png Binary files differdeleted file mode 100644 index d72d97b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-17.png b/mindus/assets/blocks/autotiles/metal-tiles-3-17.png Binary files differdeleted file mode 100644 index 832b149..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-18.png b/mindus/assets/blocks/autotiles/metal-tiles-3-18.png Binary files differdeleted file mode 100644 index 4379723..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-19.png b/mindus/assets/blocks/autotiles/metal-tiles-3-19.png Binary files differdeleted file mode 100644 index 93b266a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-2.png b/mindus/assets/blocks/autotiles/metal-tiles-3-2.png Binary files differdeleted file mode 100644 index 50cd686..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-20.png b/mindus/assets/blocks/autotiles/metal-tiles-3-20.png Binary files differdeleted file mode 100644 index 0a72dad..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-21.png b/mindus/assets/blocks/autotiles/metal-tiles-3-21.png Binary files differdeleted file mode 100644 index ce12293..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-22.png b/mindus/assets/blocks/autotiles/metal-tiles-3-22.png Binary files differdeleted file mode 100644 index 902e067..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-23.png b/mindus/assets/blocks/autotiles/metal-tiles-3-23.png Binary files differdeleted file mode 100644 index a4007b5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-24.png b/mindus/assets/blocks/autotiles/metal-tiles-3-24.png Binary files differdeleted file mode 100644 index 755a3b6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-25.png b/mindus/assets/blocks/autotiles/metal-tiles-3-25.png Binary files differdeleted file mode 100644 index a4445fb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-26.png b/mindus/assets/blocks/autotiles/metal-tiles-3-26.png Binary files differdeleted file mode 100644 index 3f875f6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-27.png b/mindus/assets/blocks/autotiles/metal-tiles-3-27.png Binary files differdeleted file mode 100644 index 4dac529..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-28.png b/mindus/assets/blocks/autotiles/metal-tiles-3-28.png Binary files differdeleted file mode 100644 index 7321f5f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-29.png b/mindus/assets/blocks/autotiles/metal-tiles-3-29.png Binary files differdeleted file mode 100644 index 2af14c9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-3.png b/mindus/assets/blocks/autotiles/metal-tiles-3-3.png Binary files differdeleted file mode 100644 index 88d3a5c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-30.png b/mindus/assets/blocks/autotiles/metal-tiles-3-30.png Binary files differdeleted file mode 100644 index bd38ece..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-31.png b/mindus/assets/blocks/autotiles/metal-tiles-3-31.png Binary files differdeleted file mode 100644 index f4abdc5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-32.png b/mindus/assets/blocks/autotiles/metal-tiles-3-32.png Binary files differdeleted file mode 100644 index b9cb1b4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-33.png b/mindus/assets/blocks/autotiles/metal-tiles-3-33.png Binary files differdeleted file mode 100644 index fc69dba..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-34.png b/mindus/assets/blocks/autotiles/metal-tiles-3-34.png Binary files differdeleted file mode 100644 index 711447f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-35.png b/mindus/assets/blocks/autotiles/metal-tiles-3-35.png Binary files differdeleted file mode 100644 index 4655808..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-36.png b/mindus/assets/blocks/autotiles/metal-tiles-3-36.png Binary files differdeleted file mode 100644 index 74c02f8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-37.png b/mindus/assets/blocks/autotiles/metal-tiles-3-37.png Binary files differdeleted file mode 100644 index 1184018..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-38.png b/mindus/assets/blocks/autotiles/metal-tiles-3-38.png Binary files differdeleted file mode 100644 index d551d84..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-39.png b/mindus/assets/blocks/autotiles/metal-tiles-3-39.png Binary files differdeleted file mode 100644 index 87e8748..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-4.png b/mindus/assets/blocks/autotiles/metal-tiles-3-4.png Binary files differdeleted file mode 100644 index 76e25a5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-40.png b/mindus/assets/blocks/autotiles/metal-tiles-3-40.png Binary files differdeleted file mode 100644 index ff585e0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-41.png b/mindus/assets/blocks/autotiles/metal-tiles-3-41.png Binary files differdeleted file mode 100644 index 44b13f1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-42.png b/mindus/assets/blocks/autotiles/metal-tiles-3-42.png Binary files differdeleted file mode 100644 index 89b5b22..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-43.png b/mindus/assets/blocks/autotiles/metal-tiles-3-43.png Binary files differdeleted file mode 100644 index 7dfc972..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-44.png b/mindus/assets/blocks/autotiles/metal-tiles-3-44.png Binary files differdeleted file mode 100644 index bdca804..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-45.png b/mindus/assets/blocks/autotiles/metal-tiles-3-45.png Binary files differdeleted file mode 100644 index eb5007e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-46.png b/mindus/assets/blocks/autotiles/metal-tiles-3-46.png Binary files differdeleted file mode 100644 index 548e6f6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-5.png b/mindus/assets/blocks/autotiles/metal-tiles-3-5.png Binary files differdeleted file mode 100644 index 72c9e0d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-6.png b/mindus/assets/blocks/autotiles/metal-tiles-3-6.png Binary files differdeleted file mode 100644 index 11ee010..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-7.png b/mindus/assets/blocks/autotiles/metal-tiles-3-7.png Binary files differdeleted file mode 100644 index 4170a58..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-8.png b/mindus/assets/blocks/autotiles/metal-tiles-3-8.png Binary files differdeleted file mode 100644 index a9eefdc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-3-9.png b/mindus/assets/blocks/autotiles/metal-tiles-3-9.png Binary files differdeleted file mode 100644 index 3a35a5d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-3-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-0.png b/mindus/assets/blocks/autotiles/metal-tiles-4-0.png Binary files differdeleted file mode 100644 index 00b4ad8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-1.png b/mindus/assets/blocks/autotiles/metal-tiles-4-1.png Binary files differdeleted file mode 100644 index 82275e2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-10.png b/mindus/assets/blocks/autotiles/metal-tiles-4-10.png Binary files differdeleted file mode 100644 index 10c768e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-11.png b/mindus/assets/blocks/autotiles/metal-tiles-4-11.png Binary files differdeleted file mode 100644 index b95958a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-12.png b/mindus/assets/blocks/autotiles/metal-tiles-4-12.png Binary files differdeleted file mode 100644 index 35a4e45..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-13.png b/mindus/assets/blocks/autotiles/metal-tiles-4-13.png Binary files differdeleted file mode 100644 index 6ae9f4a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-14.png b/mindus/assets/blocks/autotiles/metal-tiles-4-14.png Binary files differdeleted file mode 100644 index 83747f9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-15.png b/mindus/assets/blocks/autotiles/metal-tiles-4-15.png Binary files differdeleted file mode 100644 index c821401..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-16.png b/mindus/assets/blocks/autotiles/metal-tiles-4-16.png Binary files differdeleted file mode 100644 index d529f3c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-17.png b/mindus/assets/blocks/autotiles/metal-tiles-4-17.png Binary files differdeleted file mode 100644 index b6f09b7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-18.png b/mindus/assets/blocks/autotiles/metal-tiles-4-18.png Binary files differdeleted file mode 100644 index d4a6738..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-19.png b/mindus/assets/blocks/autotiles/metal-tiles-4-19.png Binary files differdeleted file mode 100644 index fa0d55b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-2.png b/mindus/assets/blocks/autotiles/metal-tiles-4-2.png Binary files differdeleted file mode 100644 index 7449f92..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-20.png b/mindus/assets/blocks/autotiles/metal-tiles-4-20.png Binary files differdeleted file mode 100644 index 2346538..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-21.png b/mindus/assets/blocks/autotiles/metal-tiles-4-21.png Binary files differdeleted file mode 100644 index e232b9d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-22.png b/mindus/assets/blocks/autotiles/metal-tiles-4-22.png Binary files differdeleted file mode 100644 index 4a0e524..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-23.png b/mindus/assets/blocks/autotiles/metal-tiles-4-23.png Binary files differdeleted file mode 100644 index 74597c6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-24.png b/mindus/assets/blocks/autotiles/metal-tiles-4-24.png Binary files differdeleted file mode 100644 index 60f97bd..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-25.png b/mindus/assets/blocks/autotiles/metal-tiles-4-25.png Binary files differdeleted file mode 100644 index 6acc66c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-26.png b/mindus/assets/blocks/autotiles/metal-tiles-4-26.png Binary files differdeleted file mode 100644 index e830d09..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-27.png b/mindus/assets/blocks/autotiles/metal-tiles-4-27.png Binary files differdeleted file mode 100644 index 078e3de..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-28.png b/mindus/assets/blocks/autotiles/metal-tiles-4-28.png Binary files differdeleted file mode 100644 index 9de1388..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-29.png b/mindus/assets/blocks/autotiles/metal-tiles-4-29.png Binary files differdeleted file mode 100644 index 1810900..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-3.png b/mindus/assets/blocks/autotiles/metal-tiles-4-3.png Binary files differdeleted file mode 100644 index 287abbf..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-30.png b/mindus/assets/blocks/autotiles/metal-tiles-4-30.png Binary files differdeleted file mode 100644 index 7531ec6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-31.png b/mindus/assets/blocks/autotiles/metal-tiles-4-31.png Binary files differdeleted file mode 100644 index e64da1a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-32.png b/mindus/assets/blocks/autotiles/metal-tiles-4-32.png Binary files differdeleted file mode 100644 index c6264f0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-33.png b/mindus/assets/blocks/autotiles/metal-tiles-4-33.png Binary files differdeleted file mode 100644 index 895288c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-34.png b/mindus/assets/blocks/autotiles/metal-tiles-4-34.png Binary files differdeleted file mode 100644 index ff0557e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-35.png b/mindus/assets/blocks/autotiles/metal-tiles-4-35.png Binary files differdeleted file mode 100644 index 9b2bceb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-36.png b/mindus/assets/blocks/autotiles/metal-tiles-4-36.png Binary files differdeleted file mode 100644 index 8db4055..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-37.png b/mindus/assets/blocks/autotiles/metal-tiles-4-37.png Binary files differdeleted file mode 100644 index 0182b7a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-38.png b/mindus/assets/blocks/autotiles/metal-tiles-4-38.png Binary files differdeleted file mode 100644 index f7820a3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-39.png b/mindus/assets/blocks/autotiles/metal-tiles-4-39.png Binary files differdeleted file mode 100644 index 3537e61..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-4.png b/mindus/assets/blocks/autotiles/metal-tiles-4-4.png Binary files differdeleted file mode 100644 index cbaa305..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-40.png b/mindus/assets/blocks/autotiles/metal-tiles-4-40.png Binary files differdeleted file mode 100644 index b21107f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-41.png b/mindus/assets/blocks/autotiles/metal-tiles-4-41.png Binary files differdeleted file mode 100644 index 9c40fa8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-42.png b/mindus/assets/blocks/autotiles/metal-tiles-4-42.png Binary files differdeleted file mode 100644 index cb814d3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-43.png b/mindus/assets/blocks/autotiles/metal-tiles-4-43.png Binary files differdeleted file mode 100644 index bc1dbd5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-44.png b/mindus/assets/blocks/autotiles/metal-tiles-4-44.png Binary files differdeleted file mode 100644 index 563fb3c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-45.png b/mindus/assets/blocks/autotiles/metal-tiles-4-45.png Binary files differdeleted file mode 100644 index b4a3b75..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-46.png b/mindus/assets/blocks/autotiles/metal-tiles-4-46.png Binary files differdeleted file mode 100644 index 4691589..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-5.png b/mindus/assets/blocks/autotiles/metal-tiles-4-5.png Binary files differdeleted file mode 100644 index 9a9ff32..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-6.png b/mindus/assets/blocks/autotiles/metal-tiles-4-6.png Binary files differdeleted file mode 100644 index 457ffa6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-7.png b/mindus/assets/blocks/autotiles/metal-tiles-4-7.png Binary files differdeleted file mode 100644 index 49c18a5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-8.png b/mindus/assets/blocks/autotiles/metal-tiles-4-8.png Binary files differdeleted file mode 100644 index 2ed38c4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-4-9.png b/mindus/assets/blocks/autotiles/metal-tiles-4-9.png Binary files differdeleted file mode 100644 index a353fc2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-4-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-0.png b/mindus/assets/blocks/autotiles/metal-tiles-5-0.png Binary files differdeleted file mode 100644 index 69467f2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-1.png b/mindus/assets/blocks/autotiles/metal-tiles-5-1.png Binary files differdeleted file mode 100644 index 22ead22..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-10.png b/mindus/assets/blocks/autotiles/metal-tiles-5-10.png Binary files differdeleted file mode 100644 index cf16663..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-11.png b/mindus/assets/blocks/autotiles/metal-tiles-5-11.png Binary files differdeleted file mode 100644 index 95e9503..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-12.png b/mindus/assets/blocks/autotiles/metal-tiles-5-12.png Binary files differdeleted file mode 100644 index f439d21..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-13.png b/mindus/assets/blocks/autotiles/metal-tiles-5-13.png Binary files differdeleted file mode 100644 index 5798fae..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-14.png b/mindus/assets/blocks/autotiles/metal-tiles-5-14.png Binary files differdeleted file mode 100644 index 0569883..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-15.png b/mindus/assets/blocks/autotiles/metal-tiles-5-15.png Binary files differdeleted file mode 100644 index 62a79ae..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-16.png b/mindus/assets/blocks/autotiles/metal-tiles-5-16.png Binary files differdeleted file mode 100644 index ee0235a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-17.png b/mindus/assets/blocks/autotiles/metal-tiles-5-17.png Binary files differdeleted file mode 100644 index a15bbc9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-18.png b/mindus/assets/blocks/autotiles/metal-tiles-5-18.png Binary files differdeleted file mode 100644 index c76569b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-19.png b/mindus/assets/blocks/autotiles/metal-tiles-5-19.png Binary files differdeleted file mode 100644 index d54b262..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-2.png b/mindus/assets/blocks/autotiles/metal-tiles-5-2.png Binary files differdeleted file mode 100644 index cd1f86a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-20.png b/mindus/assets/blocks/autotiles/metal-tiles-5-20.png Binary files differdeleted file mode 100644 index a593240..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-21.png b/mindus/assets/blocks/autotiles/metal-tiles-5-21.png Binary files differdeleted file mode 100644 index 13e19ce..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-22.png b/mindus/assets/blocks/autotiles/metal-tiles-5-22.png Binary files differdeleted file mode 100644 index 5623e69..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-23.png b/mindus/assets/blocks/autotiles/metal-tiles-5-23.png Binary files differdeleted file mode 100644 index 53c0630..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-24.png b/mindus/assets/blocks/autotiles/metal-tiles-5-24.png Binary files differdeleted file mode 100644 index 7dbc8ae..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-25.png b/mindus/assets/blocks/autotiles/metal-tiles-5-25.png Binary files differdeleted file mode 100644 index 79e5db2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-26.png b/mindus/assets/blocks/autotiles/metal-tiles-5-26.png Binary files differdeleted file mode 100644 index d6bad14..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-27.png b/mindus/assets/blocks/autotiles/metal-tiles-5-27.png Binary files differdeleted file mode 100644 index 70cbdee..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-28.png b/mindus/assets/blocks/autotiles/metal-tiles-5-28.png Binary files differdeleted file mode 100644 index 2225801..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-29.png b/mindus/assets/blocks/autotiles/metal-tiles-5-29.png Binary files differdeleted file mode 100644 index 4abb670..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-3.png b/mindus/assets/blocks/autotiles/metal-tiles-5-3.png Binary files differdeleted file mode 100644 index ba62f58..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-30.png b/mindus/assets/blocks/autotiles/metal-tiles-5-30.png Binary files differdeleted file mode 100644 index 53b87ce..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-31.png b/mindus/assets/blocks/autotiles/metal-tiles-5-31.png Binary files differdeleted file mode 100644 index 06a4bf4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-32.png b/mindus/assets/blocks/autotiles/metal-tiles-5-32.png Binary files differdeleted file mode 100644 index d79b4ef..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-33.png b/mindus/assets/blocks/autotiles/metal-tiles-5-33.png Binary files differdeleted file mode 100644 index fcdc443..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-34.png b/mindus/assets/blocks/autotiles/metal-tiles-5-34.png Binary files differdeleted file mode 100644 index 9a1e3e5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-35.png b/mindus/assets/blocks/autotiles/metal-tiles-5-35.png Binary files differdeleted file mode 100644 index 59a4ec5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-36.png b/mindus/assets/blocks/autotiles/metal-tiles-5-36.png Binary files differdeleted file mode 100644 index c1b25ae..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-37.png b/mindus/assets/blocks/autotiles/metal-tiles-5-37.png Binary files differdeleted file mode 100644 index 4c6905d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-38.png b/mindus/assets/blocks/autotiles/metal-tiles-5-38.png Binary files differdeleted file mode 100644 index 9888aec..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-39.png b/mindus/assets/blocks/autotiles/metal-tiles-5-39.png Binary files differdeleted file mode 100644 index 95185ac..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-4.png b/mindus/assets/blocks/autotiles/metal-tiles-5-4.png Binary files differdeleted file mode 100644 index e59e637..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-40.png b/mindus/assets/blocks/autotiles/metal-tiles-5-40.png Binary files differdeleted file mode 100644 index c50d43e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-41.png b/mindus/assets/blocks/autotiles/metal-tiles-5-41.png Binary files differdeleted file mode 100644 index 3298734..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-42.png b/mindus/assets/blocks/autotiles/metal-tiles-5-42.png Binary files differdeleted file mode 100644 index c50d43e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-43.png b/mindus/assets/blocks/autotiles/metal-tiles-5-43.png Binary files differdeleted file mode 100644 index a477f91..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-44.png b/mindus/assets/blocks/autotiles/metal-tiles-5-44.png Binary files differdeleted file mode 100644 index d35790a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-45.png b/mindus/assets/blocks/autotiles/metal-tiles-5-45.png Binary files differdeleted file mode 100644 index af47e8f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-46.png b/mindus/assets/blocks/autotiles/metal-tiles-5-46.png Binary files differdeleted file mode 100644 index 3026e07..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-5.png b/mindus/assets/blocks/autotiles/metal-tiles-5-5.png Binary files differdeleted file mode 100644 index 92aedb7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-6.png b/mindus/assets/blocks/autotiles/metal-tiles-5-6.png Binary files differdeleted file mode 100644 index 64ed301..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-7.png b/mindus/assets/blocks/autotiles/metal-tiles-5-7.png Binary files differdeleted file mode 100644 index 07fd707..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-8.png b/mindus/assets/blocks/autotiles/metal-tiles-5-8.png Binary files differdeleted file mode 100644 index 339280d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-5-9.png b/mindus/assets/blocks/autotiles/metal-tiles-5-9.png Binary files differdeleted file mode 100644 index 4fdbfde..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-5-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-0.png b/mindus/assets/blocks/autotiles/metal-tiles-6-0.png Binary files differdeleted file mode 100644 index ad7d00d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-1.png b/mindus/assets/blocks/autotiles/metal-tiles-6-1.png Binary files differdeleted file mode 100644 index 1f48765..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-10.png b/mindus/assets/blocks/autotiles/metal-tiles-6-10.png Binary files differdeleted file mode 100644 index bb073b3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-11.png b/mindus/assets/blocks/autotiles/metal-tiles-6-11.png Binary files differdeleted file mode 100644 index 42b80ef..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-12.png b/mindus/assets/blocks/autotiles/metal-tiles-6-12.png Binary files differdeleted file mode 100644 index 8b7be57..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-13.png b/mindus/assets/blocks/autotiles/metal-tiles-6-13.png Binary files differdeleted file mode 100644 index 6ef9434..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-14.png b/mindus/assets/blocks/autotiles/metal-tiles-6-14.png Binary files differdeleted file mode 100644 index 61f2d64..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-15.png b/mindus/assets/blocks/autotiles/metal-tiles-6-15.png Binary files differdeleted file mode 100644 index 26aae39..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-16.png b/mindus/assets/blocks/autotiles/metal-tiles-6-16.png Binary files differdeleted file mode 100644 index b9030ed..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-17.png b/mindus/assets/blocks/autotiles/metal-tiles-6-17.png Binary files differdeleted file mode 100644 index be1ef5c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-18.png b/mindus/assets/blocks/autotiles/metal-tiles-6-18.png Binary files differdeleted file mode 100644 index 6af4202..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-19.png b/mindus/assets/blocks/autotiles/metal-tiles-6-19.png Binary files differdeleted file mode 100644 index 2788249..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-2.png b/mindus/assets/blocks/autotiles/metal-tiles-6-2.png Binary files differdeleted file mode 100644 index 8b88cf9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-20.png b/mindus/assets/blocks/autotiles/metal-tiles-6-20.png Binary files differdeleted file mode 100644 index 5ac2000..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-21.png b/mindus/assets/blocks/autotiles/metal-tiles-6-21.png Binary files differdeleted file mode 100644 index 6610907..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-22.png b/mindus/assets/blocks/autotiles/metal-tiles-6-22.png Binary files differdeleted file mode 100644 index ef14ca5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-23.png b/mindus/assets/blocks/autotiles/metal-tiles-6-23.png Binary files differdeleted file mode 100644 index 9f57666..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-24.png b/mindus/assets/blocks/autotiles/metal-tiles-6-24.png Binary files differdeleted file mode 100644 index 5f8db4c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-25.png b/mindus/assets/blocks/autotiles/metal-tiles-6-25.png Binary files differdeleted file mode 100644 index 696885b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-26.png b/mindus/assets/blocks/autotiles/metal-tiles-6-26.png Binary files differdeleted file mode 100644 index b353e68..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-27.png b/mindus/assets/blocks/autotiles/metal-tiles-6-27.png Binary files differdeleted file mode 100644 index c7c051e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-28.png b/mindus/assets/blocks/autotiles/metal-tiles-6-28.png Binary files differdeleted file mode 100644 index d39925e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-29.png b/mindus/assets/blocks/autotiles/metal-tiles-6-29.png Binary files differdeleted file mode 100644 index 6c8ce52..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-3.png b/mindus/assets/blocks/autotiles/metal-tiles-6-3.png Binary files differdeleted file mode 100644 index 3a9e4c4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-30.png b/mindus/assets/blocks/autotiles/metal-tiles-6-30.png Binary files differdeleted file mode 100644 index a6cb0e6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-31.png b/mindus/assets/blocks/autotiles/metal-tiles-6-31.png Binary files differdeleted file mode 100644 index 92416de..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-32.png b/mindus/assets/blocks/autotiles/metal-tiles-6-32.png Binary files differdeleted file mode 100644 index 194d2fa..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-33.png b/mindus/assets/blocks/autotiles/metal-tiles-6-33.png Binary files differdeleted file mode 100644 index 65ac22d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-34.png b/mindus/assets/blocks/autotiles/metal-tiles-6-34.png Binary files differdeleted file mode 100644 index 554f821..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-35.png b/mindus/assets/blocks/autotiles/metal-tiles-6-35.png Binary files differdeleted file mode 100644 index eaafb33..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-36.png b/mindus/assets/blocks/autotiles/metal-tiles-6-36.png Binary files differdeleted file mode 100644 index 4cfa1fb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-37.png b/mindus/assets/blocks/autotiles/metal-tiles-6-37.png Binary files differdeleted file mode 100644 index 902f4f0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-38.png b/mindus/assets/blocks/autotiles/metal-tiles-6-38.png Binary files differdeleted file mode 100644 index d6bd022..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-39.png b/mindus/assets/blocks/autotiles/metal-tiles-6-39.png Binary files differdeleted file mode 100644 index 9d2985d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-4.png b/mindus/assets/blocks/autotiles/metal-tiles-6-4.png Binary files differdeleted file mode 100644 index a88d5dd..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-40.png b/mindus/assets/blocks/autotiles/metal-tiles-6-40.png Binary files differdeleted file mode 100644 index 9f48b4c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-41.png b/mindus/assets/blocks/autotiles/metal-tiles-6-41.png Binary files differdeleted file mode 100644 index b0dac68..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-42.png b/mindus/assets/blocks/autotiles/metal-tiles-6-42.png Binary files differdeleted file mode 100644 index 85efe7c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-43.png b/mindus/assets/blocks/autotiles/metal-tiles-6-43.png Binary files differdeleted file mode 100644 index 5bc8a6d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-44.png b/mindus/assets/blocks/autotiles/metal-tiles-6-44.png Binary files differdeleted file mode 100644 index b405c26..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-45.png b/mindus/assets/blocks/autotiles/metal-tiles-6-45.png Binary files differdeleted file mode 100644 index 75c89f9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-46.png b/mindus/assets/blocks/autotiles/metal-tiles-6-46.png Binary files differdeleted file mode 100644 index 76b180f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-5.png b/mindus/assets/blocks/autotiles/metal-tiles-6-5.png Binary files differdeleted file mode 100644 index 3b271b8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-6.png b/mindus/assets/blocks/autotiles/metal-tiles-6-6.png Binary files differdeleted file mode 100644 index 995d78d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-7.png b/mindus/assets/blocks/autotiles/metal-tiles-6-7.png Binary files differdeleted file mode 100644 index bb96155..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-8.png b/mindus/assets/blocks/autotiles/metal-tiles-6-8.png Binary files differdeleted file mode 100644 index 8880f0d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-6-9.png b/mindus/assets/blocks/autotiles/metal-tiles-6-9.png Binary files differdeleted file mode 100644 index d76bf54..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-6-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-0.png b/mindus/assets/blocks/autotiles/metal-tiles-7-0.png Binary files differdeleted file mode 100644 index 7ba2ee7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-1.png b/mindus/assets/blocks/autotiles/metal-tiles-7-1.png Binary files differdeleted file mode 100644 index 7630513..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-10.png b/mindus/assets/blocks/autotiles/metal-tiles-7-10.png Binary files differdeleted file mode 100644 index d83daa7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-11.png b/mindus/assets/blocks/autotiles/metal-tiles-7-11.png Binary files differdeleted file mode 100644 index e008042..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-12.png b/mindus/assets/blocks/autotiles/metal-tiles-7-12.png Binary files differdeleted file mode 100644 index 1db011b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-13.png b/mindus/assets/blocks/autotiles/metal-tiles-7-13.png Binary files differdeleted file mode 100644 index a62e783..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-14.png b/mindus/assets/blocks/autotiles/metal-tiles-7-14.png Binary files differdeleted file mode 100644 index 9006361..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-15.png b/mindus/assets/blocks/autotiles/metal-tiles-7-15.png Binary files differdeleted file mode 100644 index 74e7dc8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-16.png b/mindus/assets/blocks/autotiles/metal-tiles-7-16.png Binary files differdeleted file mode 100644 index b1e540d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-17.png b/mindus/assets/blocks/autotiles/metal-tiles-7-17.png Binary files differdeleted file mode 100644 index 26292ea..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-18.png b/mindus/assets/blocks/autotiles/metal-tiles-7-18.png Binary files differdeleted file mode 100644 index 79e5eba..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-19.png b/mindus/assets/blocks/autotiles/metal-tiles-7-19.png Binary files differdeleted file mode 100644 index 0e066e6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-2.png b/mindus/assets/blocks/autotiles/metal-tiles-7-2.png Binary files differdeleted file mode 100644 index e7fa6c3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-20.png b/mindus/assets/blocks/autotiles/metal-tiles-7-20.png Binary files differdeleted file mode 100644 index 1f1755c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-21.png b/mindus/assets/blocks/autotiles/metal-tiles-7-21.png Binary files differdeleted file mode 100644 index c6115d2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-22.png b/mindus/assets/blocks/autotiles/metal-tiles-7-22.png Binary files differdeleted file mode 100644 index bc8db04..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-23.png b/mindus/assets/blocks/autotiles/metal-tiles-7-23.png Binary files differdeleted file mode 100644 index 6b4e32b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-24.png b/mindus/assets/blocks/autotiles/metal-tiles-7-24.png Binary files differdeleted file mode 100644 index 0352e7a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-25.png b/mindus/assets/blocks/autotiles/metal-tiles-7-25.png Binary files differdeleted file mode 100644 index 8368129..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-26.png b/mindus/assets/blocks/autotiles/metal-tiles-7-26.png Binary files differdeleted file mode 100644 index a8e5f4b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-27.png b/mindus/assets/blocks/autotiles/metal-tiles-7-27.png Binary files differdeleted file mode 100644 index 7559e43..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-28.png b/mindus/assets/blocks/autotiles/metal-tiles-7-28.png Binary files differdeleted file mode 100644 index 96acd2d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-29.png b/mindus/assets/blocks/autotiles/metal-tiles-7-29.png Binary files differdeleted file mode 100644 index 36f0e81..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-3.png b/mindus/assets/blocks/autotiles/metal-tiles-7-3.png Binary files differdeleted file mode 100644 index 388fd85..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-30.png b/mindus/assets/blocks/autotiles/metal-tiles-7-30.png Binary files differdeleted file mode 100644 index 581bb1e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-31.png b/mindus/assets/blocks/autotiles/metal-tiles-7-31.png Binary files differdeleted file mode 100644 index e92efb0..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-32.png b/mindus/assets/blocks/autotiles/metal-tiles-7-32.png Binary files differdeleted file mode 100644 index 36f3ff9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-33.png b/mindus/assets/blocks/autotiles/metal-tiles-7-33.png Binary files differdeleted file mode 100644 index b66baf7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-34.png b/mindus/assets/blocks/autotiles/metal-tiles-7-34.png Binary files differdeleted file mode 100644 index 3c5c929..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-35.png b/mindus/assets/blocks/autotiles/metal-tiles-7-35.png Binary files differdeleted file mode 100644 index 4e06511..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-36.png b/mindus/assets/blocks/autotiles/metal-tiles-7-36.png Binary files differdeleted file mode 100644 index 1e7b97d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-37.png b/mindus/assets/blocks/autotiles/metal-tiles-7-37.png Binary files differdeleted file mode 100644 index 54cd643..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-38.png b/mindus/assets/blocks/autotiles/metal-tiles-7-38.png Binary files differdeleted file mode 100644 index 04940da..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-39.png b/mindus/assets/blocks/autotiles/metal-tiles-7-39.png Binary files differdeleted file mode 100644 index c5398c2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-4.png b/mindus/assets/blocks/autotiles/metal-tiles-7-4.png Binary files differdeleted file mode 100644 index 25211e9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-40.png b/mindus/assets/blocks/autotiles/metal-tiles-7-40.png Binary files differdeleted file mode 100644 index 63407a9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-41.png b/mindus/assets/blocks/autotiles/metal-tiles-7-41.png Binary files differdeleted file mode 100644 index 9d44b4b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-42.png b/mindus/assets/blocks/autotiles/metal-tiles-7-42.png Binary files differdeleted file mode 100644 index 8bf50db..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-43.png b/mindus/assets/blocks/autotiles/metal-tiles-7-43.png Binary files differdeleted file mode 100644 index ab97444..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-44.png b/mindus/assets/blocks/autotiles/metal-tiles-7-44.png Binary files differdeleted file mode 100644 index 33f4f60..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-45.png b/mindus/assets/blocks/autotiles/metal-tiles-7-45.png Binary files differdeleted file mode 100644 index 4b115a6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-46.png b/mindus/assets/blocks/autotiles/metal-tiles-7-46.png Binary files differdeleted file mode 100644 index 9a3a890..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-5.png b/mindus/assets/blocks/autotiles/metal-tiles-7-5.png Binary files differdeleted file mode 100644 index 51bf85b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-6.png b/mindus/assets/blocks/autotiles/metal-tiles-7-6.png Binary files differdeleted file mode 100644 index bfeb5cc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-7.png b/mindus/assets/blocks/autotiles/metal-tiles-7-7.png Binary files differdeleted file mode 100644 index ee557d8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-8.png b/mindus/assets/blocks/autotiles/metal-tiles-7-8.png Binary files differdeleted file mode 100644 index 18aed09..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-7-9.png b/mindus/assets/blocks/autotiles/metal-tiles-7-9.png Binary files differdeleted file mode 100644 index b9b2494..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-7-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-0.png b/mindus/assets/blocks/autotiles/metal-tiles-8-0.png Binary files differdeleted file mode 100644 index 5daca87..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-1.png b/mindus/assets/blocks/autotiles/metal-tiles-8-1.png Binary files differdeleted file mode 100644 index 3222ca6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-10.png b/mindus/assets/blocks/autotiles/metal-tiles-8-10.png Binary files differdeleted file mode 100644 index 3d4f15a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-11.png b/mindus/assets/blocks/autotiles/metal-tiles-8-11.png Binary files differdeleted file mode 100644 index 912ff0e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-12.png b/mindus/assets/blocks/autotiles/metal-tiles-8-12.png Binary files differdeleted file mode 100644 index 72aee98..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-13.png b/mindus/assets/blocks/autotiles/metal-tiles-8-13.png Binary files differdeleted file mode 100644 index 32fb643..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-14.png b/mindus/assets/blocks/autotiles/metal-tiles-8-14.png Binary files differdeleted file mode 100644 index da69402..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-15.png b/mindus/assets/blocks/autotiles/metal-tiles-8-15.png Binary files differdeleted file mode 100644 index 76f44f5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-16.png b/mindus/assets/blocks/autotiles/metal-tiles-8-16.png Binary files differdeleted file mode 100644 index 4121ab6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-17.png b/mindus/assets/blocks/autotiles/metal-tiles-8-17.png Binary files differdeleted file mode 100644 index ca7efdc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-18.png b/mindus/assets/blocks/autotiles/metal-tiles-8-18.png Binary files differdeleted file mode 100644 index f2ca665..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-19.png b/mindus/assets/blocks/autotiles/metal-tiles-8-19.png Binary files differdeleted file mode 100644 index eba78b2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-2.png b/mindus/assets/blocks/autotiles/metal-tiles-8-2.png Binary files differdeleted file mode 100644 index 2860522..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-20.png b/mindus/assets/blocks/autotiles/metal-tiles-8-20.png Binary files differdeleted file mode 100644 index 18923e5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-21.png b/mindus/assets/blocks/autotiles/metal-tiles-8-21.png Binary files differdeleted file mode 100644 index e5d31bc..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-22.png b/mindus/assets/blocks/autotiles/metal-tiles-8-22.png Binary files differdeleted file mode 100644 index 8ea22d4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-23.png b/mindus/assets/blocks/autotiles/metal-tiles-8-23.png Binary files differdeleted file mode 100644 index f955a49..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-24.png b/mindus/assets/blocks/autotiles/metal-tiles-8-24.png Binary files differdeleted file mode 100644 index e0af7c8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-25.png b/mindus/assets/blocks/autotiles/metal-tiles-8-25.png Binary files differdeleted file mode 100644 index 29d1faa..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-26.png b/mindus/assets/blocks/autotiles/metal-tiles-8-26.png Binary files differdeleted file mode 100644 index 466603a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-27.png b/mindus/assets/blocks/autotiles/metal-tiles-8-27.png Binary files differdeleted file mode 100644 index a81a289..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-28.png b/mindus/assets/blocks/autotiles/metal-tiles-8-28.png Binary files differdeleted file mode 100644 index 4a6c8ba..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-29.png b/mindus/assets/blocks/autotiles/metal-tiles-8-29.png Binary files differdeleted file mode 100644 index 825cdd9..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-3.png b/mindus/assets/blocks/autotiles/metal-tiles-8-3.png Binary files differdeleted file mode 100644 index 7c37a25..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-30.png b/mindus/assets/blocks/autotiles/metal-tiles-8-30.png Binary files differdeleted file mode 100644 index 6c54357..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-31.png b/mindus/assets/blocks/autotiles/metal-tiles-8-31.png Binary files differdeleted file mode 100644 index 3070669..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-32.png b/mindus/assets/blocks/autotiles/metal-tiles-8-32.png Binary files differdeleted file mode 100644 index 5e1de66..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-33.png b/mindus/assets/blocks/autotiles/metal-tiles-8-33.png Binary files differdeleted file mode 100644 index 602f00e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-34.png b/mindus/assets/blocks/autotiles/metal-tiles-8-34.png Binary files differdeleted file mode 100644 index df9382a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-35.png b/mindus/assets/blocks/autotiles/metal-tiles-8-35.png Binary files differdeleted file mode 100644 index e3be791..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-36.png b/mindus/assets/blocks/autotiles/metal-tiles-8-36.png Binary files differdeleted file mode 100644 index e8c2913..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-37.png b/mindus/assets/blocks/autotiles/metal-tiles-8-37.png Binary files differdeleted file mode 100644 index 88c2253..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-38.png b/mindus/assets/blocks/autotiles/metal-tiles-8-38.png Binary files differdeleted file mode 100644 index 61eb19f..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-39.png b/mindus/assets/blocks/autotiles/metal-tiles-8-39.png Binary files differdeleted file mode 100644 index ddb8223..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-4.png b/mindus/assets/blocks/autotiles/metal-tiles-8-4.png Binary files differdeleted file mode 100644 index 852bfed..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-40.png b/mindus/assets/blocks/autotiles/metal-tiles-8-40.png Binary files differdeleted file mode 100644 index 71b9e6d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-41.png b/mindus/assets/blocks/autotiles/metal-tiles-8-41.png Binary files differdeleted file mode 100644 index a22f761..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-42.png b/mindus/assets/blocks/autotiles/metal-tiles-8-42.png Binary files differdeleted file mode 100644 index cc9c418..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-43.png b/mindus/assets/blocks/autotiles/metal-tiles-8-43.png Binary files differdeleted file mode 100644 index 142d834..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-44.png b/mindus/assets/blocks/autotiles/metal-tiles-8-44.png Binary files differdeleted file mode 100644 index 2f263ef..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-45.png b/mindus/assets/blocks/autotiles/metal-tiles-8-45.png Binary files differdeleted file mode 100644 index 203bc62..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-46.png b/mindus/assets/blocks/autotiles/metal-tiles-8-46.png Binary files differdeleted file mode 100644 index d2fe08b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-5.png b/mindus/assets/blocks/autotiles/metal-tiles-8-5.png Binary files differdeleted file mode 100644 index 7bdee26..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-6.png b/mindus/assets/blocks/autotiles/metal-tiles-8-6.png Binary files differdeleted file mode 100644 index 1c564b6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-7.png b/mindus/assets/blocks/autotiles/metal-tiles-8-7.png Binary files differdeleted file mode 100644 index 9211d7e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-8.png b/mindus/assets/blocks/autotiles/metal-tiles-8-8.png Binary files differdeleted file mode 100644 index 7c76914..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-8-9.png b/mindus/assets/blocks/autotiles/metal-tiles-8-9.png Binary files differdeleted file mode 100644 index 0c45540..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-8-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-0.png b/mindus/assets/blocks/autotiles/metal-tiles-9-0.png Binary files differdeleted file mode 100644 index 24ee982..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-1.png b/mindus/assets/blocks/autotiles/metal-tiles-9-1.png Binary files differdeleted file mode 100644 index 68e0d16..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-10.png b/mindus/assets/blocks/autotiles/metal-tiles-9-10.png Binary files differdeleted file mode 100644 index 85c444e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-11.png b/mindus/assets/blocks/autotiles/metal-tiles-9-11.png Binary files differdeleted file mode 100644 index 7187e7a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-12.png b/mindus/assets/blocks/autotiles/metal-tiles-9-12.png Binary files differdeleted file mode 100644 index 26287cf..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-13.png b/mindus/assets/blocks/autotiles/metal-tiles-9-13.png Binary files differdeleted file mode 100644 index 0ae157d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-14.png b/mindus/assets/blocks/autotiles/metal-tiles-9-14.png Binary files differdeleted file mode 100644 index 9c0fc7c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-15.png b/mindus/assets/blocks/autotiles/metal-tiles-9-15.png Binary files differdeleted file mode 100644 index e767068..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-16.png b/mindus/assets/blocks/autotiles/metal-tiles-9-16.png Binary files differdeleted file mode 100644 index 90ae779..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-17.png b/mindus/assets/blocks/autotiles/metal-tiles-9-17.png Binary files differdeleted file mode 100644 index f6b7c5a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-18.png b/mindus/assets/blocks/autotiles/metal-tiles-9-18.png Binary files differdeleted file mode 100644 index 854d6b8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-19.png b/mindus/assets/blocks/autotiles/metal-tiles-9-19.png Binary files differdeleted file mode 100644 index 89e0add..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-2.png b/mindus/assets/blocks/autotiles/metal-tiles-9-2.png Binary files differdeleted file mode 100644 index 5860da6..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-20.png b/mindus/assets/blocks/autotiles/metal-tiles-9-20.png Binary files differdeleted file mode 100644 index 35997e4..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-21.png b/mindus/assets/blocks/autotiles/metal-tiles-9-21.png Binary files differdeleted file mode 100644 index 8de8ae8..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-22.png b/mindus/assets/blocks/autotiles/metal-tiles-9-22.png Binary files differdeleted file mode 100644 index 92d6dc7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-23.png b/mindus/assets/blocks/autotiles/metal-tiles-9-23.png Binary files differdeleted file mode 100644 index 5b488d7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-24.png b/mindus/assets/blocks/autotiles/metal-tiles-9-24.png Binary files differdeleted file mode 100644 index 49591fb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-25.png b/mindus/assets/blocks/autotiles/metal-tiles-9-25.png Binary files differdeleted file mode 100644 index 2f7299c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-26.png b/mindus/assets/blocks/autotiles/metal-tiles-9-26.png Binary files differdeleted file mode 100644 index 5983f77..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-27.png b/mindus/assets/blocks/autotiles/metal-tiles-9-27.png Binary files differdeleted file mode 100644 index e79bd60..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-28.png b/mindus/assets/blocks/autotiles/metal-tiles-9-28.png Binary files differdeleted file mode 100644 index 99cdba3..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-29.png b/mindus/assets/blocks/autotiles/metal-tiles-9-29.png Binary files differdeleted file mode 100644 index 220ea61..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-3.png b/mindus/assets/blocks/autotiles/metal-tiles-9-3.png Binary files differdeleted file mode 100644 index 83235e5..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-30.png b/mindus/assets/blocks/autotiles/metal-tiles-9-30.png Binary files differdeleted file mode 100644 index bd9f5ec..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-31.png b/mindus/assets/blocks/autotiles/metal-tiles-9-31.png Binary files differdeleted file mode 100644 index aaffc8c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-32.png b/mindus/assets/blocks/autotiles/metal-tiles-9-32.png Binary files differdeleted file mode 100644 index 021965b..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-33.png b/mindus/assets/blocks/autotiles/metal-tiles-9-33.png Binary files differdeleted file mode 100644 index 334667d..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-34.png b/mindus/assets/blocks/autotiles/metal-tiles-9-34.png Binary files differdeleted file mode 100644 index e4f3c9a..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-35.png b/mindus/assets/blocks/autotiles/metal-tiles-9-35.png Binary files differdeleted file mode 100644 index 89ec484..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-36.png b/mindus/assets/blocks/autotiles/metal-tiles-9-36.png Binary files differdeleted file mode 100644 index 14d5ada..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-37.png b/mindus/assets/blocks/autotiles/metal-tiles-9-37.png Binary files differdeleted file mode 100644 index f33cf39..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-38.png b/mindus/assets/blocks/autotiles/metal-tiles-9-38.png Binary files differdeleted file mode 100644 index 33f11e7..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-39.png b/mindus/assets/blocks/autotiles/metal-tiles-9-39.png Binary files differdeleted file mode 100644 index aa9a2bb..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-4.png b/mindus/assets/blocks/autotiles/metal-tiles-9-4.png Binary files differdeleted file mode 100644 index 13a2232..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-40.png b/mindus/assets/blocks/autotiles/metal-tiles-9-40.png Binary files differdeleted file mode 100644 index 3f7d666..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-41.png b/mindus/assets/blocks/autotiles/metal-tiles-9-41.png Binary files differdeleted file mode 100644 index b8b38e1..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-42.png b/mindus/assets/blocks/autotiles/metal-tiles-9-42.png Binary files differdeleted file mode 100644 index 8a53630..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-43.png b/mindus/assets/blocks/autotiles/metal-tiles-9-43.png Binary files differdeleted file mode 100644 index 8b06f92..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-44.png b/mindus/assets/blocks/autotiles/metal-tiles-9-44.png Binary files differdeleted file mode 100644 index 5704e30..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-45.png b/mindus/assets/blocks/autotiles/metal-tiles-9-45.png Binary files differdeleted file mode 100644 index bccab8c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-46.png b/mindus/assets/blocks/autotiles/metal-tiles-9-46.png Binary files differdeleted file mode 100644 index 47e1dfe..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-5.png b/mindus/assets/blocks/autotiles/metal-tiles-9-5.png Binary files differdeleted file mode 100644 index e3c1a9e..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-6.png b/mindus/assets/blocks/autotiles/metal-tiles-9-6.png Binary files differdeleted file mode 100644 index e198733..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-7.png b/mindus/assets/blocks/autotiles/metal-tiles-9-7.png Binary files differdeleted file mode 100644 index 470f4f2..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-8.png b/mindus/assets/blocks/autotiles/metal-tiles-9-8.png Binary files differdeleted file mode 100644 index fb2c08c..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-tiles-9-9.png b/mindus/assets/blocks/autotiles/metal-tiles-9-9.png Binary files differdeleted file mode 100644 index caa3924..0000000 --- a/mindus/assets/blocks/autotiles/metal-tiles-9-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-0.png b/mindus/assets/blocks/autotiles/metal-wall-1-0.png Binary files differdeleted file mode 100644 index 640609b..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-1.png b/mindus/assets/blocks/autotiles/metal-wall-1-1.png Binary files differdeleted file mode 100644 index a1e90f7..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-10.png b/mindus/assets/blocks/autotiles/metal-wall-1-10.png Binary files differdeleted file mode 100644 index 52125b4..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-11.png b/mindus/assets/blocks/autotiles/metal-wall-1-11.png Binary files differdeleted file mode 100644 index e8b1d7e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-12.png b/mindus/assets/blocks/autotiles/metal-wall-1-12.png Binary files differdeleted file mode 100644 index 0073c49..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-13.png b/mindus/assets/blocks/autotiles/metal-wall-1-13.png Binary files differdeleted file mode 100644 index d49c80a..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-14.png b/mindus/assets/blocks/autotiles/metal-wall-1-14.png Binary files differdeleted file mode 100644 index d44aeb1..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-15.png b/mindus/assets/blocks/autotiles/metal-wall-1-15.png Binary files differdeleted file mode 100644 index e631fec..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-16.png b/mindus/assets/blocks/autotiles/metal-wall-1-16.png Binary files differdeleted file mode 100644 index 3676779..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-17.png b/mindus/assets/blocks/autotiles/metal-wall-1-17.png Binary files differdeleted file mode 100644 index 268b491..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-18.png b/mindus/assets/blocks/autotiles/metal-wall-1-18.png Binary files differdeleted file mode 100644 index 5dfa25a..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-19.png b/mindus/assets/blocks/autotiles/metal-wall-1-19.png Binary files differdeleted file mode 100644 index 4b658c4..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-2.png b/mindus/assets/blocks/autotiles/metal-wall-1-2.png Binary files differdeleted file mode 100644 index b9df68f..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-20.png b/mindus/assets/blocks/autotiles/metal-wall-1-20.png Binary files differdeleted file mode 100644 index 4522fa3..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-21.png b/mindus/assets/blocks/autotiles/metal-wall-1-21.png Binary files differdeleted file mode 100644 index d0f1a56..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-22.png b/mindus/assets/blocks/autotiles/metal-wall-1-22.png Binary files differdeleted file mode 100644 index edf89f4..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-23.png b/mindus/assets/blocks/autotiles/metal-wall-1-23.png Binary files differdeleted file mode 100644 index 040824c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-24.png b/mindus/assets/blocks/autotiles/metal-wall-1-24.png Binary files differdeleted file mode 100644 index 6d0a49e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-25.png b/mindus/assets/blocks/autotiles/metal-wall-1-25.png Binary files differdeleted file mode 100644 index 221364f..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-26.png b/mindus/assets/blocks/autotiles/metal-wall-1-26.png Binary files differdeleted file mode 100644 index 4928345..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-27.png b/mindus/assets/blocks/autotiles/metal-wall-1-27.png Binary files differdeleted file mode 100644 index eebb24b..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-28.png b/mindus/assets/blocks/autotiles/metal-wall-1-28.png Binary files differdeleted file mode 100644 index e2fb598..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-29.png b/mindus/assets/blocks/autotiles/metal-wall-1-29.png Binary files differdeleted file mode 100644 index 15a78d3..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-3.png b/mindus/assets/blocks/autotiles/metal-wall-1-3.png Binary files differdeleted file mode 100644 index 41fab9c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-30.png b/mindus/assets/blocks/autotiles/metal-wall-1-30.png Binary files differdeleted file mode 100644 index 0fba650..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-31.png b/mindus/assets/blocks/autotiles/metal-wall-1-31.png Binary files differdeleted file mode 100644 index 98a9922..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-32.png b/mindus/assets/blocks/autotiles/metal-wall-1-32.png Binary files differdeleted file mode 100644 index 5ab8034..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-33.png b/mindus/assets/blocks/autotiles/metal-wall-1-33.png Binary files differdeleted file mode 100644 index 5a534cb..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-34.png b/mindus/assets/blocks/autotiles/metal-wall-1-34.png Binary files differdeleted file mode 100644 index d87fe4d..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-35.png b/mindus/assets/blocks/autotiles/metal-wall-1-35.png Binary files differdeleted file mode 100644 index 307ed89..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-36.png b/mindus/assets/blocks/autotiles/metal-wall-1-36.png Binary files differdeleted file mode 100644 index 8c6515e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-37.png b/mindus/assets/blocks/autotiles/metal-wall-1-37.png Binary files differdeleted file mode 100644 index 8a26104..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-38.png b/mindus/assets/blocks/autotiles/metal-wall-1-38.png Binary files differdeleted file mode 100644 index de93d55..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-39.png b/mindus/assets/blocks/autotiles/metal-wall-1-39.png Binary files differdeleted file mode 100644 index b28bd3f..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-4.png b/mindus/assets/blocks/autotiles/metal-wall-1-4.png Binary files differdeleted file mode 100644 index 63d4abf..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-40.png b/mindus/assets/blocks/autotiles/metal-wall-1-40.png Binary files differdeleted file mode 100644 index ba00ff4..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-41.png b/mindus/assets/blocks/autotiles/metal-wall-1-41.png Binary files differdeleted file mode 100644 index eede726..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-42.png b/mindus/assets/blocks/autotiles/metal-wall-1-42.png Binary files differdeleted file mode 100644 index 67ba1b8..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-43.png b/mindus/assets/blocks/autotiles/metal-wall-1-43.png Binary files differdeleted file mode 100644 index 8f9ca02..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-44.png b/mindus/assets/blocks/autotiles/metal-wall-1-44.png Binary files differdeleted file mode 100644 index e12b71e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-45.png b/mindus/assets/blocks/autotiles/metal-wall-1-45.png Binary files differdeleted file mode 100644 index 5400826..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-46.png b/mindus/assets/blocks/autotiles/metal-wall-1-46.png Binary files differdeleted file mode 100644 index ee1e6f6..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-5.png b/mindus/assets/blocks/autotiles/metal-wall-1-5.png Binary files differdeleted file mode 100644 index ca1d63e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-6.png b/mindus/assets/blocks/autotiles/metal-wall-1-6.png Binary files differdeleted file mode 100644 index 70c5a91..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-7.png b/mindus/assets/blocks/autotiles/metal-wall-1-7.png Binary files differdeleted file mode 100644 index bab16a5..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-8.png b/mindus/assets/blocks/autotiles/metal-wall-1-8.png Binary files differdeleted file mode 100644 index cf967dc..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-1-9.png b/mindus/assets/blocks/autotiles/metal-wall-1-9.png Binary files differdeleted file mode 100644 index f84fa03..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-1-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-0.png b/mindus/assets/blocks/autotiles/metal-wall-2-0.png Binary files differdeleted file mode 100644 index 04a0ae8..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-1.png b/mindus/assets/blocks/autotiles/metal-wall-2-1.png Binary files differdeleted file mode 100644 index a8acbc3..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-10.png b/mindus/assets/blocks/autotiles/metal-wall-2-10.png Binary files differdeleted file mode 100644 index 48e51ba..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-11.png b/mindus/assets/blocks/autotiles/metal-wall-2-11.png Binary files differdeleted file mode 100644 index c15fa03..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-12.png b/mindus/assets/blocks/autotiles/metal-wall-2-12.png Binary files differdeleted file mode 100644 index 33dc92e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-13.png b/mindus/assets/blocks/autotiles/metal-wall-2-13.png Binary files differdeleted file mode 100644 index 4b78b5a..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-14.png b/mindus/assets/blocks/autotiles/metal-wall-2-14.png Binary files differdeleted file mode 100644 index c00cc7d..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-15.png b/mindus/assets/blocks/autotiles/metal-wall-2-15.png Binary files differdeleted file mode 100644 index fe7cd06..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-16.png b/mindus/assets/blocks/autotiles/metal-wall-2-16.png Binary files differdeleted file mode 100644 index 3f56550..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-17.png b/mindus/assets/blocks/autotiles/metal-wall-2-17.png Binary files differdeleted file mode 100644 index b80c98c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-18.png b/mindus/assets/blocks/autotiles/metal-wall-2-18.png Binary files differdeleted file mode 100644 index bc0c112..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-19.png b/mindus/assets/blocks/autotiles/metal-wall-2-19.png Binary files differdeleted file mode 100644 index 951f456..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-2.png b/mindus/assets/blocks/autotiles/metal-wall-2-2.png Binary files differdeleted file mode 100644 index ce10177..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-20.png b/mindus/assets/blocks/autotiles/metal-wall-2-20.png Binary files differdeleted file mode 100644 index a3ed77f..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-21.png b/mindus/assets/blocks/autotiles/metal-wall-2-21.png Binary files differdeleted file mode 100644 index 397bd21..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-22.png b/mindus/assets/blocks/autotiles/metal-wall-2-22.png Binary files differdeleted file mode 100644 index edfd93b..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-23.png b/mindus/assets/blocks/autotiles/metal-wall-2-23.png Binary files differdeleted file mode 100644 index 7c2b2a2..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-24.png b/mindus/assets/blocks/autotiles/metal-wall-2-24.png Binary files differdeleted file mode 100644 index 2298d69..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-25.png b/mindus/assets/blocks/autotiles/metal-wall-2-25.png Binary files differdeleted file mode 100644 index a433744..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-26.png b/mindus/assets/blocks/autotiles/metal-wall-2-26.png Binary files differdeleted file mode 100644 index 0f242fe..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-27.png b/mindus/assets/blocks/autotiles/metal-wall-2-27.png Binary files differdeleted file mode 100644 index f9130e7..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-28.png b/mindus/assets/blocks/autotiles/metal-wall-2-28.png Binary files differdeleted file mode 100644 index ae38e48..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-29.png b/mindus/assets/blocks/autotiles/metal-wall-2-29.png Binary files differdeleted file mode 100644 index 7f9302d..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-3.png b/mindus/assets/blocks/autotiles/metal-wall-2-3.png Binary files differdeleted file mode 100644 index 7ef2049..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-30.png b/mindus/assets/blocks/autotiles/metal-wall-2-30.png Binary files differdeleted file mode 100644 index 5846ddf..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-31.png b/mindus/assets/blocks/autotiles/metal-wall-2-31.png Binary files differdeleted file mode 100644 index ca9488e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-32.png b/mindus/assets/blocks/autotiles/metal-wall-2-32.png Binary files differdeleted file mode 100644 index d5d7088..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-33.png b/mindus/assets/blocks/autotiles/metal-wall-2-33.png Binary files differdeleted file mode 100644 index 11122b1..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-34.png b/mindus/assets/blocks/autotiles/metal-wall-2-34.png Binary files differdeleted file mode 100644 index ece8ebb..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-35.png b/mindus/assets/blocks/autotiles/metal-wall-2-35.png Binary files differdeleted file mode 100644 index de8930f..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-36.png b/mindus/assets/blocks/autotiles/metal-wall-2-36.png Binary files differdeleted file mode 100644 index 02c4bba..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-37.png b/mindus/assets/blocks/autotiles/metal-wall-2-37.png Binary files differdeleted file mode 100644 index adf0bfe..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-38.png b/mindus/assets/blocks/autotiles/metal-wall-2-38.png Binary files differdeleted file mode 100644 index 4f72695..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-39.png b/mindus/assets/blocks/autotiles/metal-wall-2-39.png Binary files differdeleted file mode 100644 index a913a43..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-4.png b/mindus/assets/blocks/autotiles/metal-wall-2-4.png Binary files differdeleted file mode 100644 index 68f933c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-40.png b/mindus/assets/blocks/autotiles/metal-wall-2-40.png Binary files differdeleted file mode 100644 index 9174e84..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-41.png b/mindus/assets/blocks/autotiles/metal-wall-2-41.png Binary files differdeleted file mode 100644 index 4118b39..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-42.png b/mindus/assets/blocks/autotiles/metal-wall-2-42.png Binary files differdeleted file mode 100644 index aad6bee..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-43.png b/mindus/assets/blocks/autotiles/metal-wall-2-43.png Binary files differdeleted file mode 100644 index da630ff..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-44.png b/mindus/assets/blocks/autotiles/metal-wall-2-44.png Binary files differdeleted file mode 100644 index a554111..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-45.png b/mindus/assets/blocks/autotiles/metal-wall-2-45.png Binary files differdeleted file mode 100644 index 72ed549..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-46.png b/mindus/assets/blocks/autotiles/metal-wall-2-46.png Binary files differdeleted file mode 100644 index 8f4ae93..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-5.png b/mindus/assets/blocks/autotiles/metal-wall-2-5.png Binary files differdeleted file mode 100644 index eada091..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-6.png b/mindus/assets/blocks/autotiles/metal-wall-2-6.png Binary files differdeleted file mode 100644 index afdfbfe..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-7.png b/mindus/assets/blocks/autotiles/metal-wall-2-7.png Binary files differdeleted file mode 100644 index 7613a24..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-8.png b/mindus/assets/blocks/autotiles/metal-wall-2-8.png Binary files differdeleted file mode 100644 index 162b264..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-2-9.png b/mindus/assets/blocks/autotiles/metal-wall-2-9.png Binary files differdeleted file mode 100644 index 5062801..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-2-9.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-0.png b/mindus/assets/blocks/autotiles/metal-wall-3-0.png Binary files differdeleted file mode 100644 index 3311205..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-1.png b/mindus/assets/blocks/autotiles/metal-wall-3-1.png Binary files differdeleted file mode 100644 index 747d2cf..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-10.png b/mindus/assets/blocks/autotiles/metal-wall-3-10.png Binary files differdeleted file mode 100644 index dc5ce4e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-10.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-11.png b/mindus/assets/blocks/autotiles/metal-wall-3-11.png Binary files differdeleted file mode 100644 index f212f2d..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-11.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-12.png b/mindus/assets/blocks/autotiles/metal-wall-3-12.png Binary files differdeleted file mode 100644 index ab7d94d..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-12.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-13.png b/mindus/assets/blocks/autotiles/metal-wall-3-13.png Binary files differdeleted file mode 100644 index 7cdeb16..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-13.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-14.png b/mindus/assets/blocks/autotiles/metal-wall-3-14.png Binary files differdeleted file mode 100644 index a04cb74..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-14.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-15.png b/mindus/assets/blocks/autotiles/metal-wall-3-15.png Binary files differdeleted file mode 100644 index d57a07e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-15.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-16.png b/mindus/assets/blocks/autotiles/metal-wall-3-16.png Binary files differdeleted file mode 100644 index 0653d44..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-16.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-17.png b/mindus/assets/blocks/autotiles/metal-wall-3-17.png Binary files differdeleted file mode 100644 index c3e731d..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-17.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-18.png b/mindus/assets/blocks/autotiles/metal-wall-3-18.png Binary files differdeleted file mode 100644 index 0726f83..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-18.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-19.png b/mindus/assets/blocks/autotiles/metal-wall-3-19.png Binary files differdeleted file mode 100644 index 0c7b8c4..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-19.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-2.png b/mindus/assets/blocks/autotiles/metal-wall-3-2.png Binary files differdeleted file mode 100644 index 6feccb1..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-2.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-20.png b/mindus/assets/blocks/autotiles/metal-wall-3-20.png Binary files differdeleted file mode 100644 index fc1548c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-20.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-21.png b/mindus/assets/blocks/autotiles/metal-wall-3-21.png Binary files differdeleted file mode 100644 index 45725bf..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-21.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-22.png b/mindus/assets/blocks/autotiles/metal-wall-3-22.png Binary files differdeleted file mode 100644 index f781950..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-22.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-23.png b/mindus/assets/blocks/autotiles/metal-wall-3-23.png Binary files differdeleted file mode 100644 index 1f7dabc..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-23.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-24.png b/mindus/assets/blocks/autotiles/metal-wall-3-24.png Binary files differdeleted file mode 100644 index 45ec175..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-24.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-25.png b/mindus/assets/blocks/autotiles/metal-wall-3-25.png Binary files differdeleted file mode 100644 index acd70e7..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-25.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-26.png b/mindus/assets/blocks/autotiles/metal-wall-3-26.png Binary files differdeleted file mode 100644 index 9a8fcde..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-26.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-27.png b/mindus/assets/blocks/autotiles/metal-wall-3-27.png Binary files differdeleted file mode 100644 index 506eef3..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-27.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-28.png b/mindus/assets/blocks/autotiles/metal-wall-3-28.png Binary files differdeleted file mode 100644 index f1902d1..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-28.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-29.png b/mindus/assets/blocks/autotiles/metal-wall-3-29.png Binary files differdeleted file mode 100644 index 5c21785..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-29.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-3.png b/mindus/assets/blocks/autotiles/metal-wall-3-3.png Binary files differdeleted file mode 100644 index c6a8e8e..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-30.png b/mindus/assets/blocks/autotiles/metal-wall-3-30.png Binary files differdeleted file mode 100644 index 0bbb313..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-30.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-31.png b/mindus/assets/blocks/autotiles/metal-wall-3-31.png Binary files differdeleted file mode 100644 index 36351ab..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-31.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-32.png b/mindus/assets/blocks/autotiles/metal-wall-3-32.png Binary files differdeleted file mode 100644 index e34b6ec..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-32.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-33.png b/mindus/assets/blocks/autotiles/metal-wall-3-33.png Binary files differdeleted file mode 100644 index 0a3b85c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-33.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-34.png b/mindus/assets/blocks/autotiles/metal-wall-3-34.png Binary files differdeleted file mode 100644 index 080c108..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-34.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-35.png b/mindus/assets/blocks/autotiles/metal-wall-3-35.png Binary files differdeleted file mode 100644 index 72315a9..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-35.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-36.png b/mindus/assets/blocks/autotiles/metal-wall-3-36.png Binary files differdeleted file mode 100644 index 099f81c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-36.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-37.png b/mindus/assets/blocks/autotiles/metal-wall-3-37.png Binary files differdeleted file mode 100644 index 5801a27..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-37.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-38.png b/mindus/assets/blocks/autotiles/metal-wall-3-38.png Binary files differdeleted file mode 100644 index a07afb9..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-38.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-39.png b/mindus/assets/blocks/autotiles/metal-wall-3-39.png Binary files differdeleted file mode 100644 index 703fcd9..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-39.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-4.png b/mindus/assets/blocks/autotiles/metal-wall-3-4.png Binary files differdeleted file mode 100644 index 1409b76..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-4.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-40.png b/mindus/assets/blocks/autotiles/metal-wall-3-40.png Binary files differdeleted file mode 100644 index c77e1f2..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-40.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-41.png b/mindus/assets/blocks/autotiles/metal-wall-3-41.png Binary files differdeleted file mode 100644 index 5261ec6..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-41.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-42.png b/mindus/assets/blocks/autotiles/metal-wall-3-42.png Binary files differdeleted file mode 100644 index 2703bf2..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-42.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-43.png b/mindus/assets/blocks/autotiles/metal-wall-3-43.png Binary files differdeleted file mode 100644 index 149b85c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-43.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-44.png b/mindus/assets/blocks/autotiles/metal-wall-3-44.png Binary files differdeleted file mode 100644 index 92672ad..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-44.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-45.png b/mindus/assets/blocks/autotiles/metal-wall-3-45.png Binary files differdeleted file mode 100644 index 94ccd2b..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-45.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-46.png b/mindus/assets/blocks/autotiles/metal-wall-3-46.png Binary files differdeleted file mode 100644 index 29c6146..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-46.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-5.png b/mindus/assets/blocks/autotiles/metal-wall-3-5.png Binary files differdeleted file mode 100644 index 57c6bb9..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-5.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-6.png b/mindus/assets/blocks/autotiles/metal-wall-3-6.png Binary files differdeleted file mode 100644 index 726397c..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-6.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-7.png b/mindus/assets/blocks/autotiles/metal-wall-3-7.png Binary files differdeleted file mode 100644 index dc4d5db..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-7.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-8.png b/mindus/assets/blocks/autotiles/metal-wall-3-8.png Binary files differdeleted file mode 100644 index 151dbed..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-8.png +++ /dev/null diff --git a/mindus/assets/blocks/autotiles/metal-wall-3-9.png b/mindus/assets/blocks/autotiles/metal-wall-3-9.png Binary files differdeleted file mode 100644 index 9113075..0000000 --- a/mindus/assets/blocks/autotiles/metal-wall-3-9.png +++ /dev/null diff --git a/mindus/assets/blocks/campaign/advanced-launch-pad.png b/mindus/assets/blocks/campaign/advanced-launch-pad.png Binary files differdeleted file mode 100644 index 1ead655..0000000 --- a/mindus/assets/blocks/campaign/advanced-launch-pad.png +++ /dev/null diff --git a/mindus/assets/blocks/campaign/interplanetary-accelerator.png b/mindus/assets/blocks/campaign/interplanetary-accelerator.png Binary files differdeleted file mode 100644 index 7009ad1..0000000 --- a/mindus/assets/blocks/campaign/interplanetary-accelerator.png +++ /dev/null diff --git a/mindus/assets/blocks/campaign/landing-pad.png b/mindus/assets/blocks/campaign/landing-pad.png Binary files differdeleted file mode 100644 index 1978d09..0000000 --- a/mindus/assets/blocks/campaign/landing-pad.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay0.png b/mindus/assets/blocks/characters/character-overlay0.png Binary files differdeleted file mode 100644 index ab31084..0000000 --- a/mindus/assets/blocks/characters/character-overlay0.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay1.png b/mindus/assets/blocks/characters/character-overlay1.png Binary files differdeleted file mode 100644 index 7b5b7bf..0000000 --- a/mindus/assets/blocks/characters/character-overlay1.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay10.png b/mindus/assets/blocks/characters/character-overlay10.png Binary files differdeleted file mode 100644 index 3bebe9f..0000000 --- a/mindus/assets/blocks/characters/character-overlay10.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay11.png b/mindus/assets/blocks/characters/character-overlay11.png Binary files differdeleted file mode 100644 index 8a360b8..0000000 --- a/mindus/assets/blocks/characters/character-overlay11.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay12.png b/mindus/assets/blocks/characters/character-overlay12.png Binary files differdeleted file mode 100644 index 2a57d8d..0000000 --- a/mindus/assets/blocks/characters/character-overlay12.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay13.png b/mindus/assets/blocks/characters/character-overlay13.png Binary files differdeleted file mode 100644 index 9c8d6de..0000000 --- a/mindus/assets/blocks/characters/character-overlay13.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay14.png b/mindus/assets/blocks/characters/character-overlay14.png Binary files differdeleted file mode 100644 index 6eaae36..0000000 --- a/mindus/assets/blocks/characters/character-overlay14.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay15.png b/mindus/assets/blocks/characters/character-overlay15.png Binary files differdeleted file mode 100644 index d0db8a5..0000000 --- a/mindus/assets/blocks/characters/character-overlay15.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay16.png b/mindus/assets/blocks/characters/character-overlay16.png Binary files differdeleted file mode 100644 index 59f71c7..0000000 --- a/mindus/assets/blocks/characters/character-overlay16.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay17.png b/mindus/assets/blocks/characters/character-overlay17.png Binary files differdeleted file mode 100644 index a61deb9..0000000 --- a/mindus/assets/blocks/characters/character-overlay17.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay18.png b/mindus/assets/blocks/characters/character-overlay18.png Binary files differdeleted file mode 100644 index f9b1c9b..0000000 --- a/mindus/assets/blocks/characters/character-overlay18.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay19.png b/mindus/assets/blocks/characters/character-overlay19.png Binary files differdeleted file mode 100644 index 3b4b4af..0000000 --- a/mindus/assets/blocks/characters/character-overlay19.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay2.png b/mindus/assets/blocks/characters/character-overlay2.png Binary files differdeleted file mode 100644 index d1fe91a..0000000 --- a/mindus/assets/blocks/characters/character-overlay2.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay20.png b/mindus/assets/blocks/characters/character-overlay20.png Binary files differdeleted file mode 100644 index 29e1154..0000000 --- a/mindus/assets/blocks/characters/character-overlay20.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay21.png b/mindus/assets/blocks/characters/character-overlay21.png Binary files differdeleted file mode 100644 index 796910f..0000000 --- a/mindus/assets/blocks/characters/character-overlay21.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay22.png b/mindus/assets/blocks/characters/character-overlay22.png Binary files differdeleted file mode 100644 index 092046c..0000000 --- a/mindus/assets/blocks/characters/character-overlay22.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay23.png b/mindus/assets/blocks/characters/character-overlay23.png Binary files differdeleted file mode 100644 index 3b83f8d..0000000 --- a/mindus/assets/blocks/characters/character-overlay23.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay24.png b/mindus/assets/blocks/characters/character-overlay24.png Binary files differdeleted file mode 100644 index f33968c..0000000 --- a/mindus/assets/blocks/characters/character-overlay24.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay25.png b/mindus/assets/blocks/characters/character-overlay25.png Binary files differdeleted file mode 100644 index 3240b77..0000000 --- a/mindus/assets/blocks/characters/character-overlay25.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay26.png b/mindus/assets/blocks/characters/character-overlay26.png Binary files differdeleted file mode 100644 index 226386a..0000000 --- a/mindus/assets/blocks/characters/character-overlay26.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay27.png b/mindus/assets/blocks/characters/character-overlay27.png Binary files differdeleted file mode 100644 index b5b478f..0000000 --- a/mindus/assets/blocks/characters/character-overlay27.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay28.png b/mindus/assets/blocks/characters/character-overlay28.png Binary files differdeleted file mode 100644 index 961b593..0000000 --- a/mindus/assets/blocks/characters/character-overlay28.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay29.png b/mindus/assets/blocks/characters/character-overlay29.png Binary files differdeleted file mode 100644 index c8b9ecc..0000000 --- a/mindus/assets/blocks/characters/character-overlay29.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay3.png b/mindus/assets/blocks/characters/character-overlay3.png Binary files differdeleted file mode 100644 index 36e9a5f..0000000 --- a/mindus/assets/blocks/characters/character-overlay3.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay30.png b/mindus/assets/blocks/characters/character-overlay30.png Binary files differdeleted file mode 100644 index 31827bd..0000000 --- a/mindus/assets/blocks/characters/character-overlay30.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay31.png b/mindus/assets/blocks/characters/character-overlay31.png Binary files differdeleted file mode 100644 index 2dc061c..0000000 --- a/mindus/assets/blocks/characters/character-overlay31.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay32.png b/mindus/assets/blocks/characters/character-overlay32.png Binary files differdeleted file mode 100644 index 1b199c4..0000000 --- a/mindus/assets/blocks/characters/character-overlay32.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay33.png b/mindus/assets/blocks/characters/character-overlay33.png Binary files differdeleted file mode 100644 index 82dd71b..0000000 --- a/mindus/assets/blocks/characters/character-overlay33.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay34.png b/mindus/assets/blocks/characters/character-overlay34.png Binary files differdeleted file mode 100644 index 3d4d52a..0000000 --- a/mindus/assets/blocks/characters/character-overlay34.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay35.png b/mindus/assets/blocks/characters/character-overlay35.png Binary files differdeleted file mode 100644 index e425182..0000000 --- a/mindus/assets/blocks/characters/character-overlay35.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay36.png b/mindus/assets/blocks/characters/character-overlay36.png Binary files differdeleted file mode 100644 index dbfeea3..0000000 --- a/mindus/assets/blocks/characters/character-overlay36.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay37.png b/mindus/assets/blocks/characters/character-overlay37.png Binary files differdeleted file mode 100644 index cd8e963..0000000 --- a/mindus/assets/blocks/characters/character-overlay37.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay38.png b/mindus/assets/blocks/characters/character-overlay38.png Binary files differdeleted file mode 100644 index 8c4b51e..0000000 --- a/mindus/assets/blocks/characters/character-overlay38.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay39.png b/mindus/assets/blocks/characters/character-overlay39.png Binary files differdeleted file mode 100644 index a5539d8..0000000 --- a/mindus/assets/blocks/characters/character-overlay39.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay4.png b/mindus/assets/blocks/characters/character-overlay4.png Binary files differdeleted file mode 100644 index 6925c6b..0000000 --- a/mindus/assets/blocks/characters/character-overlay4.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay40.png b/mindus/assets/blocks/characters/character-overlay40.png Binary files differdeleted file mode 100644 index 6dbf897..0000000 --- a/mindus/assets/blocks/characters/character-overlay40.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay41.png b/mindus/assets/blocks/characters/character-overlay41.png Binary files differdeleted file mode 100644 index 1cd03b9..0000000 --- a/mindus/assets/blocks/characters/character-overlay41.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay42.png b/mindus/assets/blocks/characters/character-overlay42.png Binary files differdeleted file mode 100644 index 2a1e1aa..0000000 --- a/mindus/assets/blocks/characters/character-overlay42.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay43.png b/mindus/assets/blocks/characters/character-overlay43.png Binary files differdeleted file mode 100644 index 3d7f4a6..0000000 --- a/mindus/assets/blocks/characters/character-overlay43.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay44.png b/mindus/assets/blocks/characters/character-overlay44.png Binary files differdeleted file mode 100644 index 8d8a8a2..0000000 --- a/mindus/assets/blocks/characters/character-overlay44.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay45.png b/mindus/assets/blocks/characters/character-overlay45.png Binary files differdeleted file mode 100644 index 54260f0..0000000 --- a/mindus/assets/blocks/characters/character-overlay45.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay46.png b/mindus/assets/blocks/characters/character-overlay46.png Binary files differdeleted file mode 100644 index 63f1212..0000000 --- a/mindus/assets/blocks/characters/character-overlay46.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay47.png b/mindus/assets/blocks/characters/character-overlay47.png Binary files differdeleted file mode 100644 index 0888925..0000000 --- a/mindus/assets/blocks/characters/character-overlay47.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay48.png b/mindus/assets/blocks/characters/character-overlay48.png Binary files differdeleted file mode 100644 index 5284335..0000000 --- a/mindus/assets/blocks/characters/character-overlay48.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay49.png b/mindus/assets/blocks/characters/character-overlay49.png Binary files differdeleted file mode 100644 index 02ea7c7..0000000 --- a/mindus/assets/blocks/characters/character-overlay49.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay5.png b/mindus/assets/blocks/characters/character-overlay5.png Binary files differdeleted file mode 100644 index abf33bc..0000000 --- a/mindus/assets/blocks/characters/character-overlay5.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay50.png b/mindus/assets/blocks/characters/character-overlay50.png Binary files differdeleted file mode 100644 index eb59850..0000000 --- a/mindus/assets/blocks/characters/character-overlay50.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay51.png b/mindus/assets/blocks/characters/character-overlay51.png Binary files differdeleted file mode 100644 index 4dbe595..0000000 --- a/mindus/assets/blocks/characters/character-overlay51.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay52.png b/mindus/assets/blocks/characters/character-overlay52.png Binary files differdeleted file mode 100644 index bee0c72..0000000 --- a/mindus/assets/blocks/characters/character-overlay52.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay53.png b/mindus/assets/blocks/characters/character-overlay53.png Binary files differdeleted file mode 100644 index e167b56..0000000 --- a/mindus/assets/blocks/characters/character-overlay53.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay54.png b/mindus/assets/blocks/characters/character-overlay54.png Binary files differdeleted file mode 100644 index 81645eb..0000000 --- a/mindus/assets/blocks/characters/character-overlay54.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay55.png b/mindus/assets/blocks/characters/character-overlay55.png Binary files differdeleted file mode 100644 index e297fff..0000000 --- a/mindus/assets/blocks/characters/character-overlay55.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay56.png b/mindus/assets/blocks/characters/character-overlay56.png Binary files differdeleted file mode 100644 index 3c49de4..0000000 --- a/mindus/assets/blocks/characters/character-overlay56.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay57.png b/mindus/assets/blocks/characters/character-overlay57.png Binary files differdeleted file mode 100644 index b7ffe02..0000000 --- a/mindus/assets/blocks/characters/character-overlay57.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay58.png b/mindus/assets/blocks/characters/character-overlay58.png Binary files differdeleted file mode 100644 index 51f7496..0000000 --- a/mindus/assets/blocks/characters/character-overlay58.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay59.png b/mindus/assets/blocks/characters/character-overlay59.png Binary files differdeleted file mode 100644 index ae66afc..0000000 --- a/mindus/assets/blocks/characters/character-overlay59.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay6.png b/mindus/assets/blocks/characters/character-overlay6.png Binary files differdeleted file mode 100644 index 4f4d924..0000000 --- a/mindus/assets/blocks/characters/character-overlay6.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay60.png b/mindus/assets/blocks/characters/character-overlay60.png Binary files differdeleted file mode 100644 index 2581705..0000000 --- a/mindus/assets/blocks/characters/character-overlay60.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay61.png b/mindus/assets/blocks/characters/character-overlay61.png Binary files differdeleted file mode 100644 index c983753..0000000 --- a/mindus/assets/blocks/characters/character-overlay61.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay62.png b/mindus/assets/blocks/characters/character-overlay62.png Binary files differdeleted file mode 100644 index e4e32ed..0000000 --- a/mindus/assets/blocks/characters/character-overlay62.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay63.png b/mindus/assets/blocks/characters/character-overlay63.png Binary files differdeleted file mode 100644 index 0194a9b..0000000 --- a/mindus/assets/blocks/characters/character-overlay63.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay7.png b/mindus/assets/blocks/characters/character-overlay7.png Binary files differdeleted file mode 100644 index 68c0c61..0000000 --- a/mindus/assets/blocks/characters/character-overlay7.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay8.png b/mindus/assets/blocks/characters/character-overlay8.png Binary files differdeleted file mode 100644 index eff4986..0000000 --- a/mindus/assets/blocks/characters/character-overlay8.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/character-overlay9.png b/mindus/assets/blocks/characters/character-overlay9.png Binary files differdeleted file mode 100644 index ce4c494..0000000 --- a/mindus/assets/blocks/characters/character-overlay9.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux0.png b/mindus/assets/blocks/characters/rune-overlay-crux0.png Binary files differdeleted file mode 100644 index 6d2f70d..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux0.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux1.png b/mindus/assets/blocks/characters/rune-overlay-crux1.png Binary files differdeleted file mode 100644 index b238f6f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux1.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux10.png b/mindus/assets/blocks/characters/rune-overlay-crux10.png Binary files differdeleted file mode 100644 index 3cbf48a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux10.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux100.png b/mindus/assets/blocks/characters/rune-overlay-crux100.png Binary files differdeleted file mode 100644 index 2ad0de1..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux100.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux101.png b/mindus/assets/blocks/characters/rune-overlay-crux101.png Binary files differdeleted file mode 100644 index 1d8a7f5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux101.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux102.png b/mindus/assets/blocks/characters/rune-overlay-crux102.png Binary files differdeleted file mode 100644 index 964b9cb..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux102.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux103.png b/mindus/assets/blocks/characters/rune-overlay-crux103.png Binary files differdeleted file mode 100644 index 841b5ab..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux103.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux104.png b/mindus/assets/blocks/characters/rune-overlay-crux104.png Binary files differdeleted file mode 100644 index e35b0af..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux104.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux105.png b/mindus/assets/blocks/characters/rune-overlay-crux105.png Binary files differdeleted file mode 100644 index 67463a5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux105.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux106.png b/mindus/assets/blocks/characters/rune-overlay-crux106.png Binary files differdeleted file mode 100644 index 376d8d2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux106.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux107.png b/mindus/assets/blocks/characters/rune-overlay-crux107.png Binary files differdeleted file mode 100644 index bded9ae..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux107.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux108.png b/mindus/assets/blocks/characters/rune-overlay-crux108.png Binary files differdeleted file mode 100644 index 68a9335..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux108.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux11.png b/mindus/assets/blocks/characters/rune-overlay-crux11.png Binary files differdeleted file mode 100644 index 98f3dee..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux11.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux12.png b/mindus/assets/blocks/characters/rune-overlay-crux12.png Binary files differdeleted file mode 100644 index 5d79d97..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux12.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux13.png b/mindus/assets/blocks/characters/rune-overlay-crux13.png Binary files differdeleted file mode 100644 index 8a18c13..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux13.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux14.png b/mindus/assets/blocks/characters/rune-overlay-crux14.png Binary files differdeleted file mode 100644 index a812a11..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux14.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux15.png b/mindus/assets/blocks/characters/rune-overlay-crux15.png Binary files differdeleted file mode 100644 index 8933bca..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux15.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux16.png b/mindus/assets/blocks/characters/rune-overlay-crux16.png Binary files differdeleted file mode 100644 index 006c9e7..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux16.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux17.png b/mindus/assets/blocks/characters/rune-overlay-crux17.png Binary files differdeleted file mode 100644 index abdf83c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux17.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux18.png b/mindus/assets/blocks/characters/rune-overlay-crux18.png Binary files differdeleted file mode 100644 index c4ee9ca..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux18.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux19.png b/mindus/assets/blocks/characters/rune-overlay-crux19.png Binary files differdeleted file mode 100644 index 38e89db..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux19.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux2.png b/mindus/assets/blocks/characters/rune-overlay-crux2.png Binary files differdeleted file mode 100644 index 8df495a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux2.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux20.png b/mindus/assets/blocks/characters/rune-overlay-crux20.png Binary files differdeleted file mode 100644 index cdcee3a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux20.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux21.png b/mindus/assets/blocks/characters/rune-overlay-crux21.png Binary files differdeleted file mode 100644 index af42b3d..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux21.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux22.png b/mindus/assets/blocks/characters/rune-overlay-crux22.png Binary files differdeleted file mode 100644 index 2c6b962..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux22.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux23.png b/mindus/assets/blocks/characters/rune-overlay-crux23.png Binary files differdeleted file mode 100644 index bc16215..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux23.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux24.png b/mindus/assets/blocks/characters/rune-overlay-crux24.png Binary files differdeleted file mode 100644 index 8a08984..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux24.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux25.png b/mindus/assets/blocks/characters/rune-overlay-crux25.png Binary files differdeleted file mode 100644 index a9aa34e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux25.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux26.png b/mindus/assets/blocks/characters/rune-overlay-crux26.png Binary files differdeleted file mode 100644 index 77c447b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux26.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux27.png b/mindus/assets/blocks/characters/rune-overlay-crux27.png Binary files differdeleted file mode 100644 index 99645a5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux27.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux28.png b/mindus/assets/blocks/characters/rune-overlay-crux28.png Binary files differdeleted file mode 100644 index 50a45a7..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux28.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux29.png b/mindus/assets/blocks/characters/rune-overlay-crux29.png Binary files differdeleted file mode 100644 index 3f3eb3e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux29.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux3.png b/mindus/assets/blocks/characters/rune-overlay-crux3.png Binary files differdeleted file mode 100644 index 54cd8b2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux3.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux30.png b/mindus/assets/blocks/characters/rune-overlay-crux30.png Binary files differdeleted file mode 100644 index 05c9b3e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux30.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux31.png b/mindus/assets/blocks/characters/rune-overlay-crux31.png Binary files differdeleted file mode 100644 index 542ff0c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux31.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux32.png b/mindus/assets/blocks/characters/rune-overlay-crux32.png Binary files differdeleted file mode 100644 index 30a8a5b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux32.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux33.png b/mindus/assets/blocks/characters/rune-overlay-crux33.png Binary files differdeleted file mode 100644 index c273844..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux33.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux34.png b/mindus/assets/blocks/characters/rune-overlay-crux34.png Binary files differdeleted file mode 100644 index a945709..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux34.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux35.png b/mindus/assets/blocks/characters/rune-overlay-crux35.png Binary files differdeleted file mode 100644 index 1ae586e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux35.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux36.png b/mindus/assets/blocks/characters/rune-overlay-crux36.png Binary files differdeleted file mode 100644 index 5d0fd51..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux36.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux37.png b/mindus/assets/blocks/characters/rune-overlay-crux37.png Binary files differdeleted file mode 100644 index 0ea4d04..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux37.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux38.png b/mindus/assets/blocks/characters/rune-overlay-crux38.png Binary files differdeleted file mode 100644 index e9b8f33..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux38.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux39.png b/mindus/assets/blocks/characters/rune-overlay-crux39.png Binary files differdeleted file mode 100644 index 2dd308a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux39.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux4.png b/mindus/assets/blocks/characters/rune-overlay-crux4.png Binary files differdeleted file mode 100644 index 7dc9fe6..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux4.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux40.png b/mindus/assets/blocks/characters/rune-overlay-crux40.png Binary files differdeleted file mode 100644 index 60aa9b6..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux40.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux41.png b/mindus/assets/blocks/characters/rune-overlay-crux41.png Binary files differdeleted file mode 100644 index d8a077c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux41.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux42.png b/mindus/assets/blocks/characters/rune-overlay-crux42.png Binary files differdeleted file mode 100644 index e6bc7d6..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux42.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux43.png b/mindus/assets/blocks/characters/rune-overlay-crux43.png Binary files differdeleted file mode 100644 index bc0fc4a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux43.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux44.png b/mindus/assets/blocks/characters/rune-overlay-crux44.png Binary files differdeleted file mode 100644 index 06a57c6..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux44.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux45.png b/mindus/assets/blocks/characters/rune-overlay-crux45.png Binary files differdeleted file mode 100644 index f262dcd..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux45.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux46.png b/mindus/assets/blocks/characters/rune-overlay-crux46.png Binary files differdeleted file mode 100644 index 84505b7..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux46.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux47.png b/mindus/assets/blocks/characters/rune-overlay-crux47.png Binary files differdeleted file mode 100644 index 8ebca6b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux47.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux48.png b/mindus/assets/blocks/characters/rune-overlay-crux48.png Binary files differdeleted file mode 100644 index c483142..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux48.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux49.png b/mindus/assets/blocks/characters/rune-overlay-crux49.png Binary files differdeleted file mode 100644 index 1cbbf74..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux49.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux5.png b/mindus/assets/blocks/characters/rune-overlay-crux5.png Binary files differdeleted file mode 100644 index 2cc022b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux5.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux50.png b/mindus/assets/blocks/characters/rune-overlay-crux50.png Binary files differdeleted file mode 100644 index d1e852d..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux50.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux51.png b/mindus/assets/blocks/characters/rune-overlay-crux51.png Binary files differdeleted file mode 100644 index 0a013e9..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux51.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux52.png b/mindus/assets/blocks/characters/rune-overlay-crux52.png Binary files differdeleted file mode 100644 index 4a9d262..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux52.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux53.png b/mindus/assets/blocks/characters/rune-overlay-crux53.png Binary files differdeleted file mode 100644 index 1e0a7d6..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux53.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux54.png b/mindus/assets/blocks/characters/rune-overlay-crux54.png Binary files differdeleted file mode 100644 index 672e194..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux54.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux55.png b/mindus/assets/blocks/characters/rune-overlay-crux55.png Binary files differdeleted file mode 100644 index b96b760..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux55.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux56.png b/mindus/assets/blocks/characters/rune-overlay-crux56.png Binary files differdeleted file mode 100644 index ef8ced4..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux56.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux57.png b/mindus/assets/blocks/characters/rune-overlay-crux57.png Binary files differdeleted file mode 100644 index ec49477..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux57.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux58.png b/mindus/assets/blocks/characters/rune-overlay-crux58.png Binary files differdeleted file mode 100644 index 66404b1..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux58.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux59.png b/mindus/assets/blocks/characters/rune-overlay-crux59.png Binary files differdeleted file mode 100644 index 0457f94..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux59.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux6.png b/mindus/assets/blocks/characters/rune-overlay-crux6.png Binary files differdeleted file mode 100644 index 7b7ff04..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux6.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux60.png b/mindus/assets/blocks/characters/rune-overlay-crux60.png Binary files differdeleted file mode 100644 index b82a757..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux60.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux61.png b/mindus/assets/blocks/characters/rune-overlay-crux61.png Binary files differdeleted file mode 100644 index d208652..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux61.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux62.png b/mindus/assets/blocks/characters/rune-overlay-crux62.png Binary files differdeleted file mode 100644 index 49d3ec2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux62.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux63.png b/mindus/assets/blocks/characters/rune-overlay-crux63.png Binary files differdeleted file mode 100644 index 1875a75..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux63.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux64.png b/mindus/assets/blocks/characters/rune-overlay-crux64.png Binary files differdeleted file mode 100644 index 897c02c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux64.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux65.png b/mindus/assets/blocks/characters/rune-overlay-crux65.png Binary files differdeleted file mode 100644 index d3889d7..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux65.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux66.png b/mindus/assets/blocks/characters/rune-overlay-crux66.png Binary files differdeleted file mode 100644 index c42fa4b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux66.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux67.png b/mindus/assets/blocks/characters/rune-overlay-crux67.png Binary files differdeleted file mode 100644 index 3cf7699..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux67.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux68.png b/mindus/assets/blocks/characters/rune-overlay-crux68.png Binary files differdeleted file mode 100644 index 14f8025..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux68.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux69.png b/mindus/assets/blocks/characters/rune-overlay-crux69.png Binary files differdeleted file mode 100644 index 7c6656a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux69.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux7.png b/mindus/assets/blocks/characters/rune-overlay-crux7.png Binary files differdeleted file mode 100644 index 53060a0..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux7.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux70.png b/mindus/assets/blocks/characters/rune-overlay-crux70.png Binary files differdeleted file mode 100644 index 2456468..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux70.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux71.png b/mindus/assets/blocks/characters/rune-overlay-crux71.png Binary files differdeleted file mode 100644 index f7d1b12..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux71.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux72.png b/mindus/assets/blocks/characters/rune-overlay-crux72.png Binary files differdeleted file mode 100644 index e3c6db3..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux72.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux73.png b/mindus/assets/blocks/characters/rune-overlay-crux73.png Binary files differdeleted file mode 100644 index f63d4cc..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux73.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux74.png b/mindus/assets/blocks/characters/rune-overlay-crux74.png Binary files differdeleted file mode 100644 index 6d6db43..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux74.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux75.png b/mindus/assets/blocks/characters/rune-overlay-crux75.png Binary files differdeleted file mode 100644 index 0f39439..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux75.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux76.png b/mindus/assets/blocks/characters/rune-overlay-crux76.png Binary files differdeleted file mode 100644 index 9e29658..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux76.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux77.png b/mindus/assets/blocks/characters/rune-overlay-crux77.png Binary files differdeleted file mode 100644 index 82b4eaf..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux77.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux78.png b/mindus/assets/blocks/characters/rune-overlay-crux78.png Binary files differdeleted file mode 100644 index 7e471b5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux78.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux79.png b/mindus/assets/blocks/characters/rune-overlay-crux79.png Binary files differdeleted file mode 100644 index 4b887af..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux79.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux8.png b/mindus/assets/blocks/characters/rune-overlay-crux8.png Binary files differdeleted file mode 100644 index bf6b5d5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux8.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux80.png b/mindus/assets/blocks/characters/rune-overlay-crux80.png Binary files differdeleted file mode 100644 index 5fa1728..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux80.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux81.png b/mindus/assets/blocks/characters/rune-overlay-crux81.png Binary files differdeleted file mode 100644 index 3567d7f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux81.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux82.png b/mindus/assets/blocks/characters/rune-overlay-crux82.png Binary files differdeleted file mode 100644 index 7046d94..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux82.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux83.png b/mindus/assets/blocks/characters/rune-overlay-crux83.png Binary files differdeleted file mode 100644 index 9bcab0e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux83.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux84.png b/mindus/assets/blocks/characters/rune-overlay-crux84.png Binary files differdeleted file mode 100644 index 0cdfdee..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux84.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux85.png b/mindus/assets/blocks/characters/rune-overlay-crux85.png Binary files differdeleted file mode 100644 index 338575b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux85.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux86.png b/mindus/assets/blocks/characters/rune-overlay-crux86.png Binary files differdeleted file mode 100644 index 7ea4899..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux86.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux87.png b/mindus/assets/blocks/characters/rune-overlay-crux87.png Binary files differdeleted file mode 100644 index e801acd..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux87.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux88.png b/mindus/assets/blocks/characters/rune-overlay-crux88.png Binary files differdeleted file mode 100644 index cc76da4..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux88.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux89.png b/mindus/assets/blocks/characters/rune-overlay-crux89.png Binary files differdeleted file mode 100644 index 7d1a220..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux89.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux9.png b/mindus/assets/blocks/characters/rune-overlay-crux9.png Binary files differdeleted file mode 100644 index 9b1e288..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux9.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux90.png b/mindus/assets/blocks/characters/rune-overlay-crux90.png Binary files differdeleted file mode 100644 index a47a233..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux90.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux91.png b/mindus/assets/blocks/characters/rune-overlay-crux91.png Binary files differdeleted file mode 100644 index 24d03e3..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux91.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux92.png b/mindus/assets/blocks/characters/rune-overlay-crux92.png Binary files differdeleted file mode 100644 index 67f103c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux92.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux93.png b/mindus/assets/blocks/characters/rune-overlay-crux93.png Binary files differdeleted file mode 100644 index 25821bf..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux93.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux94.png b/mindus/assets/blocks/characters/rune-overlay-crux94.png Binary files differdeleted file mode 100644 index aa7c7d1..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux94.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux95.png b/mindus/assets/blocks/characters/rune-overlay-crux95.png Binary files differdeleted file mode 100644 index 7a31bba..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux95.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux96.png b/mindus/assets/blocks/characters/rune-overlay-crux96.png Binary files differdeleted file mode 100644 index 67111b6..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux96.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux97.png b/mindus/assets/blocks/characters/rune-overlay-crux97.png Binary files differdeleted file mode 100644 index c710323..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux97.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux98.png b/mindus/assets/blocks/characters/rune-overlay-crux98.png Binary files differdeleted file mode 100644 index e4d40e1..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux98.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay-crux99.png b/mindus/assets/blocks/characters/rune-overlay-crux99.png Binary files differdeleted file mode 100644 index e6fd0d0..0000000 --- a/mindus/assets/blocks/characters/rune-overlay-crux99.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay0.png b/mindus/assets/blocks/characters/rune-overlay0.png Binary files differdeleted file mode 100644 index 50b167f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay0.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay1.png b/mindus/assets/blocks/characters/rune-overlay1.png Binary files differdeleted file mode 100644 index 59b547e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay1.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay10.png b/mindus/assets/blocks/characters/rune-overlay10.png Binary files differdeleted file mode 100644 index 6fb852f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay10.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay100.png b/mindus/assets/blocks/characters/rune-overlay100.png Binary files differdeleted file mode 100644 index ad0c976..0000000 --- a/mindus/assets/blocks/characters/rune-overlay100.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay101.png b/mindus/assets/blocks/characters/rune-overlay101.png Binary files differdeleted file mode 100644 index 12a6d9f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay101.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay102.png b/mindus/assets/blocks/characters/rune-overlay102.png Binary files differdeleted file mode 100644 index 6f0b1b7..0000000 --- a/mindus/assets/blocks/characters/rune-overlay102.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay103.png b/mindus/assets/blocks/characters/rune-overlay103.png Binary files differdeleted file mode 100644 index 63274c2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay103.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay104.png b/mindus/assets/blocks/characters/rune-overlay104.png Binary files differdeleted file mode 100644 index 1cba8cc..0000000 --- a/mindus/assets/blocks/characters/rune-overlay104.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay105.png b/mindus/assets/blocks/characters/rune-overlay105.png Binary files differdeleted file mode 100644 index 759fc03..0000000 --- a/mindus/assets/blocks/characters/rune-overlay105.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay106.png b/mindus/assets/blocks/characters/rune-overlay106.png Binary files differdeleted file mode 100644 index 3a40e7b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay106.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay107.png b/mindus/assets/blocks/characters/rune-overlay107.png Binary files differdeleted file mode 100644 index 29e2e11..0000000 --- a/mindus/assets/blocks/characters/rune-overlay107.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay108.png b/mindus/assets/blocks/characters/rune-overlay108.png Binary files differdeleted file mode 100644 index 7851e84..0000000 --- a/mindus/assets/blocks/characters/rune-overlay108.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay11.png b/mindus/assets/blocks/characters/rune-overlay11.png Binary files differdeleted file mode 100644 index 89207d0..0000000 --- a/mindus/assets/blocks/characters/rune-overlay11.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay12.png b/mindus/assets/blocks/characters/rune-overlay12.png Binary files differdeleted file mode 100644 index 18638a5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay12.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay13.png b/mindus/assets/blocks/characters/rune-overlay13.png Binary files differdeleted file mode 100644 index 14669c8..0000000 --- a/mindus/assets/blocks/characters/rune-overlay13.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay14.png b/mindus/assets/blocks/characters/rune-overlay14.png Binary files differdeleted file mode 100644 index 1a1313e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay14.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay15.png b/mindus/assets/blocks/characters/rune-overlay15.png Binary files differdeleted file mode 100644 index 4c36143..0000000 --- a/mindus/assets/blocks/characters/rune-overlay15.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay16.png b/mindus/assets/blocks/characters/rune-overlay16.png Binary files differdeleted file mode 100644 index 46959bb..0000000 --- a/mindus/assets/blocks/characters/rune-overlay16.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay17.png b/mindus/assets/blocks/characters/rune-overlay17.png Binary files differdeleted file mode 100644 index eaa6ef9..0000000 --- a/mindus/assets/blocks/characters/rune-overlay17.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay18.png b/mindus/assets/blocks/characters/rune-overlay18.png Binary files differdeleted file mode 100644 index a2b27f9..0000000 --- a/mindus/assets/blocks/characters/rune-overlay18.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay19.png b/mindus/assets/blocks/characters/rune-overlay19.png Binary files differdeleted file mode 100644 index 4ae4801..0000000 --- a/mindus/assets/blocks/characters/rune-overlay19.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay2.png b/mindus/assets/blocks/characters/rune-overlay2.png Binary files differdeleted file mode 100644 index bc77232..0000000 --- a/mindus/assets/blocks/characters/rune-overlay2.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay20.png b/mindus/assets/blocks/characters/rune-overlay20.png Binary files differdeleted file mode 100644 index 353cb26..0000000 --- a/mindus/assets/blocks/characters/rune-overlay20.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay21.png b/mindus/assets/blocks/characters/rune-overlay21.png Binary files differdeleted file mode 100644 index 8d08e8e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay21.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay22.png b/mindus/assets/blocks/characters/rune-overlay22.png Binary files differdeleted file mode 100644 index 4e2453c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay22.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay23.png b/mindus/assets/blocks/characters/rune-overlay23.png Binary files differdeleted file mode 100644 index f87ffd3..0000000 --- a/mindus/assets/blocks/characters/rune-overlay23.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay24.png b/mindus/assets/blocks/characters/rune-overlay24.png Binary files differdeleted file mode 100644 index 49a28f8..0000000 --- a/mindus/assets/blocks/characters/rune-overlay24.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay25.png b/mindus/assets/blocks/characters/rune-overlay25.png Binary files differdeleted file mode 100644 index e9e1086..0000000 --- a/mindus/assets/blocks/characters/rune-overlay25.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay26.png b/mindus/assets/blocks/characters/rune-overlay26.png Binary files differdeleted file mode 100644 index 6cab8e5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay26.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay27.png b/mindus/assets/blocks/characters/rune-overlay27.png Binary files differdeleted file mode 100644 index d8801a3..0000000 --- a/mindus/assets/blocks/characters/rune-overlay27.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay28.png b/mindus/assets/blocks/characters/rune-overlay28.png Binary files differdeleted file mode 100644 index 814312e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay28.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay29.png b/mindus/assets/blocks/characters/rune-overlay29.png Binary files differdeleted file mode 100644 index 91209b5..0000000 --- a/mindus/assets/blocks/characters/rune-overlay29.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay3.png b/mindus/assets/blocks/characters/rune-overlay3.png Binary files differdeleted file mode 100644 index 012ecca..0000000 --- a/mindus/assets/blocks/characters/rune-overlay3.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay30.png b/mindus/assets/blocks/characters/rune-overlay30.png Binary files differdeleted file mode 100644 index db6fe7a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay30.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay31.png b/mindus/assets/blocks/characters/rune-overlay31.png Binary files differdeleted file mode 100644 index d2b089f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay31.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay32.png b/mindus/assets/blocks/characters/rune-overlay32.png Binary files differdeleted file mode 100644 index 6b444fe..0000000 --- a/mindus/assets/blocks/characters/rune-overlay32.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay33.png b/mindus/assets/blocks/characters/rune-overlay33.png Binary files differdeleted file mode 100644 index b4cd89f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay33.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay34.png b/mindus/assets/blocks/characters/rune-overlay34.png Binary files differdeleted file mode 100644 index 86de197..0000000 --- a/mindus/assets/blocks/characters/rune-overlay34.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay35.png b/mindus/assets/blocks/characters/rune-overlay35.png Binary files differdeleted file mode 100644 index e4f0237..0000000 --- a/mindus/assets/blocks/characters/rune-overlay35.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay36.png b/mindus/assets/blocks/characters/rune-overlay36.png Binary files differdeleted file mode 100644 index ba69315..0000000 --- a/mindus/assets/blocks/characters/rune-overlay36.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay37.png b/mindus/assets/blocks/characters/rune-overlay37.png Binary files differdeleted file mode 100644 index f576b68..0000000 --- a/mindus/assets/blocks/characters/rune-overlay37.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay38.png b/mindus/assets/blocks/characters/rune-overlay38.png Binary files differdeleted file mode 100644 index 553937c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay38.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay39.png b/mindus/assets/blocks/characters/rune-overlay39.png Binary files differdeleted file mode 100644 index 77f60b7..0000000 --- a/mindus/assets/blocks/characters/rune-overlay39.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay4.png b/mindus/assets/blocks/characters/rune-overlay4.png Binary files differdeleted file mode 100644 index ee6c317..0000000 --- a/mindus/assets/blocks/characters/rune-overlay4.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay40.png b/mindus/assets/blocks/characters/rune-overlay40.png Binary files differdeleted file mode 100644 index bf56c74..0000000 --- a/mindus/assets/blocks/characters/rune-overlay40.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay41.png b/mindus/assets/blocks/characters/rune-overlay41.png Binary files differdeleted file mode 100644 index 47fba77..0000000 --- a/mindus/assets/blocks/characters/rune-overlay41.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay42.png b/mindus/assets/blocks/characters/rune-overlay42.png Binary files differdeleted file mode 100644 index e231ca3..0000000 --- a/mindus/assets/blocks/characters/rune-overlay42.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay43.png b/mindus/assets/blocks/characters/rune-overlay43.png Binary files differdeleted file mode 100644 index 0b78d57..0000000 --- a/mindus/assets/blocks/characters/rune-overlay43.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay44.png b/mindus/assets/blocks/characters/rune-overlay44.png Binary files differdeleted file mode 100644 index 5f247e0..0000000 --- a/mindus/assets/blocks/characters/rune-overlay44.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay45.png b/mindus/assets/blocks/characters/rune-overlay45.png Binary files differdeleted file mode 100644 index 1e3bbd3..0000000 --- a/mindus/assets/blocks/characters/rune-overlay45.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay46.png b/mindus/assets/blocks/characters/rune-overlay46.png Binary files differdeleted file mode 100644 index d569595..0000000 --- a/mindus/assets/blocks/characters/rune-overlay46.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay47.png b/mindus/assets/blocks/characters/rune-overlay47.png Binary files differdeleted file mode 100644 index 7068249..0000000 --- a/mindus/assets/blocks/characters/rune-overlay47.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay48.png b/mindus/assets/blocks/characters/rune-overlay48.png Binary files differdeleted file mode 100644 index 478dc04..0000000 --- a/mindus/assets/blocks/characters/rune-overlay48.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay49.png b/mindus/assets/blocks/characters/rune-overlay49.png Binary files differdeleted file mode 100644 index 4de1595..0000000 --- a/mindus/assets/blocks/characters/rune-overlay49.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay5.png b/mindus/assets/blocks/characters/rune-overlay5.png Binary files differdeleted file mode 100644 index 3f9ca5d..0000000 --- a/mindus/assets/blocks/characters/rune-overlay5.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay50.png b/mindus/assets/blocks/characters/rune-overlay50.png Binary files differdeleted file mode 100644 index fc1d6ee..0000000 --- a/mindus/assets/blocks/characters/rune-overlay50.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay51.png b/mindus/assets/blocks/characters/rune-overlay51.png Binary files differdeleted file mode 100644 index 5a6fd41..0000000 --- a/mindus/assets/blocks/characters/rune-overlay51.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay52.png b/mindus/assets/blocks/characters/rune-overlay52.png Binary files differdeleted file mode 100644 index 7afee30..0000000 --- a/mindus/assets/blocks/characters/rune-overlay52.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay53.png b/mindus/assets/blocks/characters/rune-overlay53.png Binary files differdeleted file mode 100644 index 4dba710..0000000 --- a/mindus/assets/blocks/characters/rune-overlay53.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay54.png b/mindus/assets/blocks/characters/rune-overlay54.png Binary files differdeleted file mode 100644 index b6e7ed9..0000000 --- a/mindus/assets/blocks/characters/rune-overlay54.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay55.png b/mindus/assets/blocks/characters/rune-overlay55.png Binary files differdeleted file mode 100644 index c1b5041..0000000 --- a/mindus/assets/blocks/characters/rune-overlay55.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay56.png b/mindus/assets/blocks/characters/rune-overlay56.png Binary files differdeleted file mode 100644 index c6b6cc8..0000000 --- a/mindus/assets/blocks/characters/rune-overlay56.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay57.png b/mindus/assets/blocks/characters/rune-overlay57.png Binary files differdeleted file mode 100644 index 05a1ee9..0000000 --- a/mindus/assets/blocks/characters/rune-overlay57.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay58.png b/mindus/assets/blocks/characters/rune-overlay58.png Binary files differdeleted file mode 100644 index d49ad16..0000000 --- a/mindus/assets/blocks/characters/rune-overlay58.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay59.png b/mindus/assets/blocks/characters/rune-overlay59.png Binary files differdeleted file mode 100644 index 83b38b1..0000000 --- a/mindus/assets/blocks/characters/rune-overlay59.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay6.png b/mindus/assets/blocks/characters/rune-overlay6.png Binary files differdeleted file mode 100644 index d21ba0e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay6.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay60.png b/mindus/assets/blocks/characters/rune-overlay60.png Binary files differdeleted file mode 100644 index 50fd227..0000000 --- a/mindus/assets/blocks/characters/rune-overlay60.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay61.png b/mindus/assets/blocks/characters/rune-overlay61.png Binary files differdeleted file mode 100644 index e85ae24..0000000 --- a/mindus/assets/blocks/characters/rune-overlay61.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay62.png b/mindus/assets/blocks/characters/rune-overlay62.png Binary files differdeleted file mode 100644 index 3588ba2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay62.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay63.png b/mindus/assets/blocks/characters/rune-overlay63.png Binary files differdeleted file mode 100644 index 5e8b9eb..0000000 --- a/mindus/assets/blocks/characters/rune-overlay63.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay64.png b/mindus/assets/blocks/characters/rune-overlay64.png Binary files differdeleted file mode 100644 index c0dae86..0000000 --- a/mindus/assets/blocks/characters/rune-overlay64.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay65.png b/mindus/assets/blocks/characters/rune-overlay65.png Binary files differdeleted file mode 100644 index a3665ab..0000000 --- a/mindus/assets/blocks/characters/rune-overlay65.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay66.png b/mindus/assets/blocks/characters/rune-overlay66.png Binary files differdeleted file mode 100644 index 43f7aeb..0000000 --- a/mindus/assets/blocks/characters/rune-overlay66.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay67.png b/mindus/assets/blocks/characters/rune-overlay67.png Binary files differdeleted file mode 100644 index baa6d33..0000000 --- a/mindus/assets/blocks/characters/rune-overlay67.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay68.png b/mindus/assets/blocks/characters/rune-overlay68.png Binary files differdeleted file mode 100644 index ba53de2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay68.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay69.png b/mindus/assets/blocks/characters/rune-overlay69.png Binary files differdeleted file mode 100644 index 1242827..0000000 --- a/mindus/assets/blocks/characters/rune-overlay69.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay7.png b/mindus/assets/blocks/characters/rune-overlay7.png Binary files differdeleted file mode 100644 index 23bac5d..0000000 --- a/mindus/assets/blocks/characters/rune-overlay7.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay70.png b/mindus/assets/blocks/characters/rune-overlay70.png Binary files differdeleted file mode 100644 index 45e8a86..0000000 --- a/mindus/assets/blocks/characters/rune-overlay70.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay71.png b/mindus/assets/blocks/characters/rune-overlay71.png Binary files differdeleted file mode 100644 index d95cfe2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay71.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay72.png b/mindus/assets/blocks/characters/rune-overlay72.png Binary files differdeleted file mode 100644 index 2ddde55..0000000 --- a/mindus/assets/blocks/characters/rune-overlay72.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay73.png b/mindus/assets/blocks/characters/rune-overlay73.png Binary files differdeleted file mode 100644 index 76e1d13..0000000 --- a/mindus/assets/blocks/characters/rune-overlay73.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay74.png b/mindus/assets/blocks/characters/rune-overlay74.png Binary files differdeleted file mode 100644 index f577cde..0000000 --- a/mindus/assets/blocks/characters/rune-overlay74.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay75.png b/mindus/assets/blocks/characters/rune-overlay75.png Binary files differdeleted file mode 100644 index df89b7e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay75.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay76.png b/mindus/assets/blocks/characters/rune-overlay76.png Binary files differdeleted file mode 100644 index 4180b2c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay76.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay77.png b/mindus/assets/blocks/characters/rune-overlay77.png Binary files differdeleted file mode 100644 index d66113b..0000000 --- a/mindus/assets/blocks/characters/rune-overlay77.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay78.png b/mindus/assets/blocks/characters/rune-overlay78.png Binary files differdeleted file mode 100644 index 458b52f..0000000 --- a/mindus/assets/blocks/characters/rune-overlay78.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay79.png b/mindus/assets/blocks/characters/rune-overlay79.png Binary files differdeleted file mode 100644 index c423c4c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay79.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay8.png b/mindus/assets/blocks/characters/rune-overlay8.png Binary files differdeleted file mode 100644 index 5318fab..0000000 --- a/mindus/assets/blocks/characters/rune-overlay8.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay80.png b/mindus/assets/blocks/characters/rune-overlay80.png Binary files differdeleted file mode 100644 index 158f09e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay80.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay81.png b/mindus/assets/blocks/characters/rune-overlay81.png Binary files differdeleted file mode 100644 index 106eb5e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay81.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay82.png b/mindus/assets/blocks/characters/rune-overlay82.png Binary files differdeleted file mode 100644 index 1735b2c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay82.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay83.png b/mindus/assets/blocks/characters/rune-overlay83.png Binary files differdeleted file mode 100644 index 17a2693..0000000 --- a/mindus/assets/blocks/characters/rune-overlay83.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay84.png b/mindus/assets/blocks/characters/rune-overlay84.png Binary files differdeleted file mode 100644 index 39bf525..0000000 --- a/mindus/assets/blocks/characters/rune-overlay84.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay85.png b/mindus/assets/blocks/characters/rune-overlay85.png Binary files differdeleted file mode 100644 index 04c8228..0000000 --- a/mindus/assets/blocks/characters/rune-overlay85.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay86.png b/mindus/assets/blocks/characters/rune-overlay86.png Binary files differdeleted file mode 100644 index 1c75129..0000000 --- a/mindus/assets/blocks/characters/rune-overlay86.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay87.png b/mindus/assets/blocks/characters/rune-overlay87.png Binary files differdeleted file mode 100644 index f3137e2..0000000 --- a/mindus/assets/blocks/characters/rune-overlay87.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay88.png b/mindus/assets/blocks/characters/rune-overlay88.png Binary files differdeleted file mode 100644 index 9f58b32..0000000 --- a/mindus/assets/blocks/characters/rune-overlay88.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay89.png b/mindus/assets/blocks/characters/rune-overlay89.png Binary files differdeleted file mode 100644 index 87e13e0..0000000 --- a/mindus/assets/blocks/characters/rune-overlay89.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay9.png b/mindus/assets/blocks/characters/rune-overlay9.png Binary files differdeleted file mode 100644 index 2148e25..0000000 --- a/mindus/assets/blocks/characters/rune-overlay9.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay90.png b/mindus/assets/blocks/characters/rune-overlay90.png Binary files differdeleted file mode 100644 index 3624c48..0000000 --- a/mindus/assets/blocks/characters/rune-overlay90.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay91.png b/mindus/assets/blocks/characters/rune-overlay91.png Binary files differdeleted file mode 100644 index b1b9739..0000000 --- a/mindus/assets/blocks/characters/rune-overlay91.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay92.png b/mindus/assets/blocks/characters/rune-overlay92.png Binary files differdeleted file mode 100644 index e703928..0000000 --- a/mindus/assets/blocks/characters/rune-overlay92.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay93.png b/mindus/assets/blocks/characters/rune-overlay93.png Binary files differdeleted file mode 100644 index d15e35e..0000000 --- a/mindus/assets/blocks/characters/rune-overlay93.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay94.png b/mindus/assets/blocks/characters/rune-overlay94.png Binary files differdeleted file mode 100644 index 0d5f8f1..0000000 --- a/mindus/assets/blocks/characters/rune-overlay94.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay95.png b/mindus/assets/blocks/characters/rune-overlay95.png Binary files differdeleted file mode 100644 index b1b168c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay95.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay96.png b/mindus/assets/blocks/characters/rune-overlay96.png Binary files differdeleted file mode 100644 index 3972fbc..0000000 --- a/mindus/assets/blocks/characters/rune-overlay96.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay97.png b/mindus/assets/blocks/characters/rune-overlay97.png Binary files differdeleted file mode 100644 index e8d044a..0000000 --- a/mindus/assets/blocks/characters/rune-overlay97.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay98.png b/mindus/assets/blocks/characters/rune-overlay98.png Binary files differdeleted file mode 100644 index d8c7bee..0000000 --- a/mindus/assets/blocks/characters/rune-overlay98.png +++ /dev/null diff --git a/mindus/assets/blocks/characters/rune-overlay99.png b/mindus/assets/blocks/characters/rune-overlay99.png Binary files differdeleted file mode 100644 index 1e3dc3c..0000000 --- a/mindus/assets/blocks/characters/rune-overlay99.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/build-tower.png b/mindus/assets/blocks/defense/build-tower.png Binary files differdeleted file mode 100644 index 44f6219..0000000 --- a/mindus/assets/blocks/defense/build-tower.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/force-projector.png b/mindus/assets/blocks/defense/force-projector.png Binary files differdeleted file mode 100644 index 69ef992..0000000 --- a/mindus/assets/blocks/defense/force-projector.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/large-shield-projector-team.png b/mindus/assets/blocks/defense/large-shield-projector-team.png Binary files differdeleted file mode 100644 index d369c30..0000000 --- a/mindus/assets/blocks/defense/large-shield-projector-team.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/large-shield-projector.png b/mindus/assets/blocks/defense/large-shield-projector.png Binary files differdeleted file mode 100644 index 7c2c862..0000000 --- a/mindus/assets/blocks/defense/large-shield-projector.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/mend-projector.png b/mindus/assets/blocks/defense/mend-projector.png Binary files differdeleted file mode 100644 index 6fbdedc..0000000 --- a/mindus/assets/blocks/defense/mend-projector.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/mender.png b/mindus/assets/blocks/defense/mender.png Binary files differdeleted file mode 100644 index 019d224..0000000 --- a/mindus/assets/blocks/defense/mender.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/overdrive-dome.png b/mindus/assets/blocks/defense/overdrive-dome.png Binary files differdeleted file mode 100644 index a27f18b..0000000 --- a/mindus/assets/blocks/defense/overdrive-dome.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/overdrive-projector.png b/mindus/assets/blocks/defense/overdrive-projector.png Binary files differdeleted file mode 100644 index 0e91627..0000000 --- a/mindus/assets/blocks/defense/overdrive-projector.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/regen-projector.png b/mindus/assets/blocks/defense/regen-projector.png Binary files differdeleted file mode 100644 index c246600..0000000 --- a/mindus/assets/blocks/defense/regen-projector.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/shield-projector.png b/mindus/assets/blocks/defense/shield-projector.png Binary files differdeleted file mode 100644 index df7374e..0000000 --- a/mindus/assets/blocks/defense/shield-projector.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/shock-mine-team-top.png b/mindus/assets/blocks/defense/shock-mine-team-top.png Binary files differdeleted file mode 100644 index aa16dc3..0000000 --- a/mindus/assets/blocks/defense/shock-mine-team-top.png +++ /dev/null diff --git a/mindus/assets/blocks/defense/shockwave-tower.png b/mindus/assets/blocks/defense/shockwave-tower.png Binary files differdeleted file mode 100644 index 25a1f24..0000000 --- a/mindus/assets/blocks/defense/shockwave-tower.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/bridge-arrow.png b/mindus/assets/blocks/distribution/bridge-arrow.png Binary files differdeleted file mode 100644 index ea708c8..0000000 --- a/mindus/assets/blocks/distribution/bridge-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/bridge-conveyor-arrow.png b/mindus/assets/blocks/distribution/bridge-conveyor-arrow.png Binary files differdeleted file mode 100644 index 2740e90..0000000 --- a/mindus/assets/blocks/distribution/bridge-conveyor-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/bridge-conveyor-bridge.png b/mindus/assets/blocks/distribution/bridge-conveyor-bridge.png Binary files differdeleted file mode 100644 index c7b09d9..0000000 --- a/mindus/assets/blocks/distribution/bridge-conveyor-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/bridge-conveyor-end.png b/mindus/assets/blocks/distribution/bridge-conveyor-end.png Binary files differdeleted file mode 100644 index 25ccdde..0000000 --- a/mindus/assets/blocks/distribution/bridge-conveyor-end.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/bridge-conveyor.png b/mindus/assets/blocks/distribution/bridge-conveyor.png Binary files differdeleted file mode 100644 index b1a53c6..0000000 --- a/mindus/assets/blocks/distribution/bridge-conveyor.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/center.png b/mindus/assets/blocks/distribution/center.png Binary files differdeleted file mode 100644 index 7579691..0000000 --- a/mindus/assets/blocks/distribution/center.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-0.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-0.png Binary files differdeleted file mode 100644 index ddc867d..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-1.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-1.png Binary files differdeleted file mode 100644 index 03595e1..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-2.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-2.png Binary files differdeleted file mode 100644 index 5043934..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-3.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-3.png Binary files differdeleted file mode 100644 index d209c5b..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-0-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-0-h.png Binary files differdeleted file mode 100644 index 8c27096..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-0.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-0.png Binary files differdeleted file mode 100644 index e90c44d..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1-h.png Binary files differdeleted file mode 100644 index 571a0d8..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1-v.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1-v.png Binary files differdeleted file mode 100644 index 48dd10e..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1.png Binary files differdeleted file mode 100644 index ed13d44..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-2-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-2-h.png Binary files differdeleted file mode 100644 index df0bddb..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-2.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-2.png Binary files differdeleted file mode 100644 index ffa04ec..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-3.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-3.png Binary files differdeleted file mode 100644 index b15a6d6..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0-h.png Binary files differdeleted file mode 100644 index eb76bd3..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0-v.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0-v.png Binary files differdeleted file mode 100644 index 0bb92f4..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0.png Binary files differdeleted file mode 100644 index be686e7..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-1-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-1-h.png Binary files differdeleted file mode 100644 index 9dd21ed..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-1.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-1.png Binary files differdeleted file mode 100644 index 22a56fe..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-2.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-2.png Binary files differdeleted file mode 100644 index 21ebc71..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-3-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-3-h.png Binary files differdeleted file mode 100644 index aee031c..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-3.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-3.png Binary files differdeleted file mode 100644 index 304675d..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-0-h.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-0-h.png Binary files differdeleted file mode 100644 index ab40269..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-0.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-0.png Binary files differdeleted file mode 100644 index 8055767..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-1.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-1.png Binary files differdeleted file mode 100644 index c8bafb4..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-3.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-3.png Binary files differdeleted file mode 100644 index 1c3e100..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-0.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-0.png Binary files differdeleted file mode 100644 index f05cccc..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-1.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-1.png Binary files differdeleted file mode 100644 index 386c9c0..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-3.png b/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-3.png Binary files differdeleted file mode 100644 index bfa7c8c..0000000 --- a/mindus/assets/blocks/distribution/conveyors/armored-conveyor-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-0-0.png b/mindus/assets/blocks/distribution/conveyors/conveyor-0-0.png Binary files differdeleted file mode 100644 index 5183db1..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-0-1.png b/mindus/assets/blocks/distribution/conveyors/conveyor-0-1.png Binary files differdeleted file mode 100644 index 7389c94..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-0-2.png b/mindus/assets/blocks/distribution/conveyors/conveyor-0-2.png Binary files differdeleted file mode 100644 index 0030870..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-0-3.png b/mindus/assets/blocks/distribution/conveyors/conveyor-0-3.png Binary files differdeleted file mode 100644 index 9580d6e..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-0-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-0-h.png Binary files differdeleted file mode 100644 index 7928ed9..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-0.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-0.png Binary files differdeleted file mode 100644 index 08b63fa..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-1-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-1-h.png Binary files differdeleted file mode 100644 index 2d8ba7d..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-1-v.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-1-v.png Binary files differdeleted file mode 100644 index 93dbcfa..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-1.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-1.png Binary files differdeleted file mode 100644 index 9611e68..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-2-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-2-h.png Binary files differdeleted file mode 100644 index cd37f16..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-1-2.png b/mindus/assets/blocks/distribution/conveyors/conveyor-1-2.png Binary files differdeleted file mode 100644 index d9be4bf..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-0-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-0-h.png Binary files differdeleted file mode 100644 index eea615a..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-0-v.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-0-v.png Binary files differdeleted file mode 100644 index 16dacf3..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-0.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-0.png Binary files differdeleted file mode 100644 index 721cb2b..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-1-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-1-h.png Binary files differdeleted file mode 100644 index 96e0b30..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-1.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-1.png Binary files differdeleted file mode 100644 index e66aaf6..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-2.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-2.png Binary files differdeleted file mode 100644 index 3681c62..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-3-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-3-h.png Binary files differdeleted file mode 100644 index 1817c05..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-2-3.png b/mindus/assets/blocks/distribution/conveyors/conveyor-2-3.png Binary files differdeleted file mode 100644 index 385528a..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-3-0-h.png b/mindus/assets/blocks/distribution/conveyors/conveyor-3-0-h.png Binary files differdeleted file mode 100644 index 3c2d6ed..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-3-0.png b/mindus/assets/blocks/distribution/conveyors/conveyor-3-0.png Binary files differdeleted file mode 100644 index 5734a72..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-3-1.png b/mindus/assets/blocks/distribution/conveyors/conveyor-3-1.png Binary files differdeleted file mode 100644 index 743e834..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-3-3.png b/mindus/assets/blocks/distribution/conveyors/conveyor-3-3.png Binary files differdeleted file mode 100644 index 54008b5..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-4-1.png b/mindus/assets/blocks/distribution/conveyors/conveyor-4-1.png Binary files differdeleted file mode 100644 index c2c31d5..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/conveyor-4-3.png b/mindus/assets/blocks/distribution/conveyors/conveyor-4-3.png Binary files differdeleted file mode 100644 index 4573bda..0000000 --- a/mindus/assets/blocks/distribution/conveyors/conveyor-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-0.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-0.png Binary files differdeleted file mode 100644 index 0f1aecb..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-1.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-1.png Binary files differdeleted file mode 100644 index 9ec7ec7..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-2.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-2.png Binary files differdeleted file mode 100644 index dcdd5ae..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-3.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-3.png Binary files differdeleted file mode 100644 index ed690ac..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-0.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-0.png Binary files differdeleted file mode 100644 index 21fd562..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-v.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-v.png Binary files differdeleted file mode 100644 index e370aa6..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-2-h.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-2-h.png Binary files differdeleted file mode 100644 index 3888ce7..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-2.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-2.png Binary files differdeleted file mode 100644 index a47b05a..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-3.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-3.png Binary files differdeleted file mode 100644 index 6cba533..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-h.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-h.png Binary files differdeleted file mode 100644 index 7a10cdf..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-v.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-v.png Binary files differdeleted file mode 100644 index a3aa7a3..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0.png Binary files differdeleted file mode 100644 index 6f4629f..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-2.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-2.png Binary files differdeleted file mode 100644 index 2125244..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-3.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-3.png Binary files differdeleted file mode 100644 index 50d8b09..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-0-h.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-0-h.png Binary files differdeleted file mode 100644 index 1506859..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-0.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-0.png Binary files differdeleted file mode 100644 index 0746226..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-1.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-1.png Binary files differdeleted file mode 100644 index 4af1e1c..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-3.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-3.png Binary files differdeleted file mode 100644 index 840a63e..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-1.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-1.png Binary files differdeleted file mode 100644 index 4f24d2a..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-3.png b/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-3.png Binary files differdeleted file mode 100644 index 0a92002..0000000 --- a/mindus/assets/blocks/distribution/conveyors/titanium-conveyor-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-0-0.png b/mindus/assets/blocks/distribution/ducts/armored-duct-0-0.png Binary files differdeleted file mode 100644 index ccd7a06..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-0-1.png b/mindus/assets/blocks/distribution/ducts/armored-duct-0-1.png Binary files differdeleted file mode 100644 index 8a75a73..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-0-2.png b/mindus/assets/blocks/distribution/ducts/armored-duct-0-2.png Binary files differdeleted file mode 100644 index d89d76e..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-0-3.png b/mindus/assets/blocks/distribution/ducts/armored-duct-0-3.png Binary files differdeleted file mode 100644 index ad204f3..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-0-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-0-h.png Binary files differdeleted file mode 100644 index b9d6bce..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-0.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-0.png Binary files differdeleted file mode 100644 index 63a6c48..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-1-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-1-h.png Binary files differdeleted file mode 100644 index 2104e28..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-1-v.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-1-v.png Binary files differdeleted file mode 100644 index 4a22d5b..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-1.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-1.png Binary files differdeleted file mode 100644 index 29b47b0..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-2-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-2-h.png Binary files differdeleted file mode 100644 index c6c3cbf..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-2.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-2.png Binary files differdeleted file mode 100644 index 819cb63..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-1-3.png b/mindus/assets/blocks/distribution/ducts/armored-duct-1-3.png Binary files differdeleted file mode 100644 index ef7d864..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-0-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-0-h.png Binary files differdeleted file mode 100644 index 2937ad7..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-0-v.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-0-v.png Binary files differdeleted file mode 100644 index dd5c2d1..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-0.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-0.png Binary files differdeleted file mode 100644 index e6df835..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-1-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-1-h.png Binary files differdeleted file mode 100644 index 077c9b9..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-1.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-1.png Binary files differdeleted file mode 100644 index 9086194..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-2.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-2.png Binary files differdeleted file mode 100644 index aae911e..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-3-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-3-h.png Binary files differdeleted file mode 100644 index 5587009..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-2-3.png b/mindus/assets/blocks/distribution/ducts/armored-duct-2-3.png Binary files differdeleted file mode 100644 index 14ce864..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-3-0-h.png b/mindus/assets/blocks/distribution/ducts/armored-duct-3-0-h.png Binary files differdeleted file mode 100644 index 1ba0792..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-3-0.png b/mindus/assets/blocks/distribution/ducts/armored-duct-3-0.png Binary files differdeleted file mode 100644 index e760e24..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-3-1.png b/mindus/assets/blocks/distribution/ducts/armored-duct-3-1.png Binary files differdeleted file mode 100644 index 78402ae..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-3-3.png b/mindus/assets/blocks/distribution/ducts/armored-duct-3-3.png Binary files differdeleted file mode 100644 index b7ae486..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-4-1.png b/mindus/assets/blocks/distribution/ducts/armored-duct-4-1.png Binary files differdeleted file mode 100644 index dc1c0c1..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/armored-duct-4-3.png b/mindus/assets/blocks/distribution/ducts/armored-duct-4-3.png Binary files differdeleted file mode 100644 index efac19e..0000000 --- a/mindus/assets/blocks/distribution/ducts/armored-duct-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-0-0.png b/mindus/assets/blocks/distribution/ducts/duct-0-0.png Binary files differdeleted file mode 100644 index 6f3b636..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-0-1.png b/mindus/assets/blocks/distribution/ducts/duct-0-1.png Binary files differdeleted file mode 100644 index 8b24d1f..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-0-2.png b/mindus/assets/blocks/distribution/ducts/duct-0-2.png Binary files differdeleted file mode 100644 index 5b61fdd..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-0-3.png b/mindus/assets/blocks/distribution/ducts/duct-0-3.png Binary files differdeleted file mode 100644 index 372e0af..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-0-h.png b/mindus/assets/blocks/distribution/ducts/duct-1-0-h.png Binary files differdeleted file mode 100644 index 2db6afd..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-0.png b/mindus/assets/blocks/distribution/ducts/duct-1-0.png Binary files differdeleted file mode 100644 index 8b2723a..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-1-h.png b/mindus/assets/blocks/distribution/ducts/duct-1-1-h.png Binary files differdeleted file mode 100644 index 845d114..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-1-v.png b/mindus/assets/blocks/distribution/ducts/duct-1-1-v.png Binary files differdeleted file mode 100644 index cb9b2af..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-1.png b/mindus/assets/blocks/distribution/ducts/duct-1-1.png Binary files differdeleted file mode 100644 index cf8eebf..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-2-h.png b/mindus/assets/blocks/distribution/ducts/duct-1-2-h.png Binary files differdeleted file mode 100644 index 872b989..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-2.png b/mindus/assets/blocks/distribution/ducts/duct-1-2.png Binary files differdeleted file mode 100644 index c67a087..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-1-3.png b/mindus/assets/blocks/distribution/ducts/duct-1-3.png Binary files differdeleted file mode 100644 index 77951fd..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-0-h.png b/mindus/assets/blocks/distribution/ducts/duct-2-0-h.png Binary files differdeleted file mode 100644 index 92b36be..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-0-v.png b/mindus/assets/blocks/distribution/ducts/duct-2-0-v.png Binary files differdeleted file mode 100644 index ebc4aad..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-0.png b/mindus/assets/blocks/distribution/ducts/duct-2-0.png Binary files differdeleted file mode 100644 index 8963650..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-1-h.png b/mindus/assets/blocks/distribution/ducts/duct-2-1-h.png Binary files differdeleted file mode 100644 index dde07de..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-1.png b/mindus/assets/blocks/distribution/ducts/duct-2-1.png Binary files differdeleted file mode 100644 index 7ae058a..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-2.png b/mindus/assets/blocks/distribution/ducts/duct-2-2.png Binary files differdeleted file mode 100644 index a7ff8fe..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-3-h.png b/mindus/assets/blocks/distribution/ducts/duct-2-3-h.png Binary files differdeleted file mode 100644 index 7f838f3..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-2-3.png b/mindus/assets/blocks/distribution/ducts/duct-2-3.png Binary files differdeleted file mode 100644 index 09fe070..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-3-0-h.png b/mindus/assets/blocks/distribution/ducts/duct-3-0-h.png Binary files differdeleted file mode 100644 index 771dba4..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-3-0.png b/mindus/assets/blocks/distribution/ducts/duct-3-0.png Binary files differdeleted file mode 100644 index c89b476..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-3-1.png b/mindus/assets/blocks/distribution/ducts/duct-3-1.png Binary files differdeleted file mode 100644 index 2a4c902..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-3-3.png b/mindus/assets/blocks/distribution/ducts/duct-3-3.png Binary files differdeleted file mode 100644 index 1cd719b..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-4-0.png b/mindus/assets/blocks/distribution/ducts/duct-4-0.png Binary files differdeleted file mode 100644 index 8f07d03..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-4-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-4-1.png b/mindus/assets/blocks/distribution/ducts/duct-4-1.png Binary files differdeleted file mode 100644 index 584da12..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-4-3.png b/mindus/assets/blocks/distribution/ducts/duct-4-3.png Binary files differdeleted file mode 100644 index db314a6..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-base.png b/mindus/assets/blocks/distribution/ducts/duct-base.png Binary files differdeleted file mode 100644 index 58d266d..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-base.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-bridge-arrow.png b/mindus/assets/blocks/distribution/ducts/duct-bridge-arrow.png Binary files differdeleted file mode 100644 index 78bb451..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-bridge-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-bridge-bridge-bottom.png b/mindus/assets/blocks/distribution/ducts/duct-bridge-bridge-bottom.png Binary files differdeleted file mode 100644 index 15da706..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-bridge-bridge-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-bridge-bridge.png b/mindus/assets/blocks/distribution/ducts/duct-bridge-bridge.png Binary files differdeleted file mode 100644 index 62b944a..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-bridge-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-bridge-dir.png b/mindus/assets/blocks/distribution/ducts/duct-bridge-dir.png Binary files differdeleted file mode 100644 index bdc7975..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-bridge-dir.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-bridge.png b/mindus/assets/blocks/distribution/ducts/duct-bridge.png Binary files differdeleted file mode 100644 index 29cf409..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-router.png b/mindus/assets/blocks/distribution/ducts/duct-router.png Binary files differdeleted file mode 100644 index 29cf409..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-router.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-unloader-arrows.png b/mindus/assets/blocks/distribution/ducts/duct-unloader-arrows.png Binary files differdeleted file mode 100644 index 9af78ca..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-unloader-arrows.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-unloader-top.png b/mindus/assets/blocks/distribution/ducts/duct-unloader-top.png Binary files differdeleted file mode 100644 index 8e78864..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-unloader-top.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/duct-unloader.png b/mindus/assets/blocks/distribution/ducts/duct-unloader.png Binary files differdeleted file mode 100644 index 71e5674..0000000 --- a/mindus/assets/blocks/distribution/ducts/duct-unloader.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/surge-router.png b/mindus/assets/blocks/distribution/ducts/surge-router.png Binary files differdeleted file mode 100644 index 0d61b11..0000000 --- a/mindus/assets/blocks/distribution/ducts/surge-router.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/ducts/top.png b/mindus/assets/blocks/distribution/ducts/top.png Binary files differdeleted file mode 100644 index d0315ef..0000000 --- a/mindus/assets/blocks/distribution/ducts/top.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/inverted-sorter.png b/mindus/assets/blocks/distribution/inverted-sorter.png Binary files differdeleted file mode 100644 index 9cdc258..0000000 --- a/mindus/assets/blocks/distribution/inverted-sorter.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/item-source.png b/mindus/assets/blocks/distribution/item-source.png Binary files differdeleted file mode 100644 index f0a8b3f..0000000 --- a/mindus/assets/blocks/distribution/item-source.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/item-void.png b/mindus/assets/blocks/distribution/item-void.png Binary files differdeleted file mode 100644 index 30b0834..0000000 --- a/mindus/assets/blocks/distribution/item-void.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/mass-driver-base.png b/mindus/assets/blocks/distribution/mass-driver-base.png Binary files differdeleted file mode 100644 index 4f263c9..0000000 --- a/mindus/assets/blocks/distribution/mass-driver-base.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/mass-driver.png b/mindus/assets/blocks/distribution/mass-driver.png Binary files differdeleted file mode 100644 index 9c0e632..0000000 --- a/mindus/assets/blocks/distribution/mass-driver.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/overflow-gate.png b/mindus/assets/blocks/distribution/overflow-gate.png Binary files differdeleted file mode 100644 index 3e626c0..0000000 --- a/mindus/assets/blocks/distribution/overflow-gate.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/phase-conveyor-arrow.png b/mindus/assets/blocks/distribution/phase-conveyor-arrow.png Binary files differdeleted file mode 100644 index ec3654c..0000000 --- a/mindus/assets/blocks/distribution/phase-conveyor-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/phase-conveyor-bridge.png b/mindus/assets/blocks/distribution/phase-conveyor-bridge.png Binary files differdeleted file mode 100644 index 9c51a42..0000000 --- a/mindus/assets/blocks/distribution/phase-conveyor-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/phase-conveyor-end.png b/mindus/assets/blocks/distribution/phase-conveyor-end.png Binary files differdeleted file mode 100644 index 3692778..0000000 --- a/mindus/assets/blocks/distribution/phase-conveyor-end.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/phase-conveyor.png b/mindus/assets/blocks/distribution/phase-conveyor.png Binary files differdeleted file mode 100644 index 415b83d..0000000 --- a/mindus/assets/blocks/distribution/phase-conveyor.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/sorter.png b/mindus/assets/blocks/distribution/sorter.png Binary files differdeleted file mode 100644 index a0c2321..0000000 --- a/mindus/assets/blocks/distribution/sorter.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-0.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-0.png Binary files differdeleted file mode 100644 index b597da7..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-1.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-1.png Binary files differdeleted file mode 100644 index 7aeacc7..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-2.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-2.png Binary files differdeleted file mode 100644 index 0c8c484..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png Binary files differdeleted file mode 100644 index f98e3c9..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png Binary files differdeleted file mode 100644 index 7fc91a5..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png Binary files differdeleted file mode 100644 index 2d1e2a7..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png b/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png Binary files differdeleted file mode 100644 index febbed5..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/plastanium-conveyor-edge-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-0.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-0.png Binary files differdeleted file mode 100644 index 8f63f2a..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-1.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-1.png Binary files differdeleted file mode 100644 index ec328ab..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png Binary files differdeleted file mode 100644 index ec10480..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-0.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png Binary files differdeleted file mode 100644 index f12784a..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-1.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png Binary files differdeleted file mode 100644 index 983da52..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-2.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png Binary files differdeleted file mode 100644 index 767a05f..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-edge-3.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-stack.png b/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-stack.png Binary files differdeleted file mode 100644 index 6cdcac9..0000000 --- a/mindus/assets/blocks/distribution/stack-conveyors/surge-conveyor-stack.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/underflow-gate.png b/mindus/assets/blocks/distribution/underflow-gate.png Binary files differdeleted file mode 100644 index c875229..0000000 --- a/mindus/assets/blocks/distribution/underflow-gate.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/unit-cargo-unload-point-top.png b/mindus/assets/blocks/distribution/unit-cargo-unload-point-top.png Binary files differdeleted file mode 100644 index a960f5d..0000000 --- a/mindus/assets/blocks/distribution/unit-cargo-unload-point-top.png +++ /dev/null diff --git a/mindus/assets/blocks/distribution/unit-cargo-unload-point.png b/mindus/assets/blocks/distribution/unit-cargo-unload-point.png Binary files differdeleted file mode 100644 index a870a8d..0000000 --- a/mindus/assets/blocks/distribution/unit-cargo-unload-point.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/blast-drill.png b/mindus/assets/blocks/drills/blast-drill.png Binary files differdeleted file mode 100644 index 0867bce..0000000 --- a/mindus/assets/blocks/drills/blast-drill.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/cliff-crusher-rotator.png b/mindus/assets/blocks/drills/cliff-crusher-rotator.png Binary files differdeleted file mode 100644 index 40c4077..0000000 --- a/mindus/assets/blocks/drills/cliff-crusher-rotator.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/cliff-crusher.png b/mindus/assets/blocks/drills/cliff-crusher.png Binary files differdeleted file mode 100644 index f6c8c1a..0000000 --- a/mindus/assets/blocks/drills/cliff-crusher.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/eruption-drill.png b/mindus/assets/blocks/drills/eruption-drill.png Binary files differdeleted file mode 100644 index 24c3ab3..0000000 --- a/mindus/assets/blocks/drills/eruption-drill.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/impact-drill.png b/mindus/assets/blocks/drills/impact-drill.png Binary files differdeleted file mode 100644 index 40ad1b6..0000000 --- a/mindus/assets/blocks/drills/impact-drill.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/large-cliff-crusher-top.png b/mindus/assets/blocks/drills/large-cliff-crusher-top.png Binary files differdeleted file mode 100644 index ac0a2a3..0000000 --- a/mindus/assets/blocks/drills/large-cliff-crusher-top.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/large-cliff-crusher.png b/mindus/assets/blocks/drills/large-cliff-crusher.png Binary files differdeleted file mode 100644 index c475da0..0000000 --- a/mindus/assets/blocks/drills/large-cliff-crusher.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/large-plasma-bore-top.png b/mindus/assets/blocks/drills/large-plasma-bore-top.png Binary files differdeleted file mode 100644 index 7eb8a48..0000000 --- a/mindus/assets/blocks/drills/large-plasma-bore-top.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/large-plasma-bore.png b/mindus/assets/blocks/drills/large-plasma-bore.png Binary files differdeleted file mode 100644 index 1dffdd6..0000000 --- a/mindus/assets/blocks/drills/large-plasma-bore.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/laser-drill.png b/mindus/assets/blocks/drills/laser-drill.png Binary files differdeleted file mode 100644 index 25180d0..0000000 --- a/mindus/assets/blocks/drills/laser-drill.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/mechanical-drill.png b/mindus/assets/blocks/drills/mechanical-drill.png Binary files differdeleted file mode 100644 index 3df3745..0000000 --- a/mindus/assets/blocks/drills/mechanical-drill.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/oil-extractor.png b/mindus/assets/blocks/drills/oil-extractor.png Binary files differdeleted file mode 100644 index bb31a49..0000000 --- a/mindus/assets/blocks/drills/oil-extractor.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/plasma-bore-top.png b/mindus/assets/blocks/drills/plasma-bore-top.png Binary files differdeleted file mode 100644 index 3aa417c..0000000 --- a/mindus/assets/blocks/drills/plasma-bore-top.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/plasma-bore.png b/mindus/assets/blocks/drills/plasma-bore.png Binary files differdeleted file mode 100644 index 223986f..0000000 --- a/mindus/assets/blocks/drills/plasma-bore.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/pneumatic-drill.png b/mindus/assets/blocks/drills/pneumatic-drill.png Binary files differdeleted file mode 100644 index dbd2cc0..0000000 --- a/mindus/assets/blocks/drills/pneumatic-drill.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/vent-condenser.png b/mindus/assets/blocks/drills/vent-condenser.png Binary files differdeleted file mode 100644 index fcadd48..0000000 --- a/mindus/assets/blocks/drills/vent-condenser.png +++ /dev/null diff --git a/mindus/assets/blocks/drills/water-extractor.png b/mindus/assets/blocks/drills/water-extractor.png Binary files differdeleted file mode 100644 index 42b28f6..0000000 --- a/mindus/assets/blocks/drills/water-extractor.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkycite-floor.png b/mindus/assets/blocks/environment/arkycite-floor.png Binary files differdeleted file mode 100644 index e0d5732..0000000 --- a/mindus/assets/blocks/environment/arkycite-floor.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-boulder1.png b/mindus/assets/blocks/environment/arkyic-boulder1.png Binary files differdeleted file mode 100644 index f31b289..0000000 --- a/mindus/assets/blocks/environment/arkyic-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-boulder2.png b/mindus/assets/blocks/environment/arkyic-boulder2.png Binary files differdeleted file mode 100644 index 22e6ccd..0000000 --- a/mindus/assets/blocks/environment/arkyic-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-boulder3.png b/mindus/assets/blocks/environment/arkyic-boulder3.png Binary files differdeleted file mode 100644 index fda485e..0000000 --- a/mindus/assets/blocks/environment/arkyic-boulder3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-stone1.png b/mindus/assets/blocks/environment/arkyic-stone1.png Binary files differdeleted file mode 100644 index e25f347..0000000 --- a/mindus/assets/blocks/environment/arkyic-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-stone2.png b/mindus/assets/blocks/environment/arkyic-stone2.png Binary files differdeleted file mode 100644 index 5ed8b4c..0000000 --- a/mindus/assets/blocks/environment/arkyic-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-stone3.png b/mindus/assets/blocks/environment/arkyic-stone3.png Binary files differdeleted file mode 100644 index a16a58a..0000000 --- a/mindus/assets/blocks/environment/arkyic-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-vent1.png b/mindus/assets/blocks/environment/arkyic-vent1.png Binary files differdeleted file mode 100644 index 5f6a480..0000000 --- a/mindus/assets/blocks/environment/arkyic-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-vent2.png b/mindus/assets/blocks/environment/arkyic-vent2.png Binary files differdeleted file mode 100644 index 10ec406..0000000 --- a/mindus/assets/blocks/environment/arkyic-vent2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-wall-large.png b/mindus/assets/blocks/environment/arkyic-wall-large.png Binary files differdeleted file mode 100644 index 55dc3ae..0000000 --- a/mindus/assets/blocks/environment/arkyic-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-wall1.png b/mindus/assets/blocks/environment/arkyic-wall1.png Binary files differdeleted file mode 100644 index 83dceed..0000000 --- a/mindus/assets/blocks/environment/arkyic-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-wall2.png b/mindus/assets/blocks/environment/arkyic-wall2.png Binary files differdeleted file mode 100644 index 0abd6ae..0000000 --- a/mindus/assets/blocks/environment/arkyic-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/arkyic-wall3.png b/mindus/assets/blocks/environment/arkyic-wall3.png Binary files differdeleted file mode 100644 index 23a66e9..0000000 --- a/mindus/assets/blocks/environment/arkyic-wall3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/basalt-boulder1.png b/mindus/assets/blocks/environment/basalt-boulder1.png Binary files differdeleted file mode 100644 index dc52a70..0000000 --- a/mindus/assets/blocks/environment/basalt-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/basalt-boulder2.png b/mindus/assets/blocks/environment/basalt-boulder2.png Binary files differdeleted file mode 100644 index dfee5c7..0000000 --- a/mindus/assets/blocks/environment/basalt-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/basalt-vent1.png b/mindus/assets/blocks/environment/basalt-vent1.png Binary files differdeleted file mode 100644 index 416a2fd..0000000 --- a/mindus/assets/blocks/environment/basalt-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/basalt1.png b/mindus/assets/blocks/environment/basalt1.png Binary files differdeleted file mode 100644 index cf15a4e..0000000 --- a/mindus/assets/blocks/environment/basalt1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/basalt2.png b/mindus/assets/blocks/environment/basalt2.png Binary files differdeleted file mode 100644 index db27743..0000000 --- a/mindus/assets/blocks/environment/basalt2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/basalt3.png b/mindus/assets/blocks/environment/basalt3.png Binary files differdeleted file mode 100644 index 26ea402..0000000 --- a/mindus/assets/blocks/environment/basalt3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-boulder1.png b/mindus/assets/blocks/environment/beryllic-boulder1.png Binary files differdeleted file mode 100644 index b9eaa44..0000000 --- a/mindus/assets/blocks/environment/beryllic-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-boulder2.png b/mindus/assets/blocks/environment/beryllic-boulder2.png Binary files differdeleted file mode 100644 index ff5a723..0000000 --- a/mindus/assets/blocks/environment/beryllic-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone-wall-large.png b/mindus/assets/blocks/environment/beryllic-stone-wall-large.png Binary files differdeleted file mode 100644 index e660522..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone-wall1.png b/mindus/assets/blocks/environment/beryllic-stone-wall1.png Binary files differdeleted file mode 100644 index 5203226..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone-wall2.png b/mindus/assets/blocks/environment/beryllic-stone-wall2.png Binary files differdeleted file mode 100644 index e936059..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone1.png b/mindus/assets/blocks/environment/beryllic-stone1.png Binary files differdeleted file mode 100644 index 31da580..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone2.png b/mindus/assets/blocks/environment/beryllic-stone2.png Binary files differdeleted file mode 100644 index e5c57ce..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone3.png b/mindus/assets/blocks/environment/beryllic-stone3.png Binary files differdeleted file mode 100644 index e41a051..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/beryllic-stone4.png b/mindus/assets/blocks/environment/beryllic-stone4.png Binary files differdeleted file mode 100644 index 9c67991..0000000 --- a/mindus/assets/blocks/environment/beryllic-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/bluemat1.png b/mindus/assets/blocks/environment/bluemat1.png Binary files differdeleted file mode 100644 index f53787d..0000000 --- a/mindus/assets/blocks/environment/bluemat1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/bluemat2.png b/mindus/assets/blocks/environment/bluemat2.png Binary files differdeleted file mode 100644 index d493309..0000000 --- a/mindus/assets/blocks/environment/bluemat2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/bluemat3.png b/mindus/assets/blocks/environment/bluemat3.png Binary files differdeleted file mode 100644 index a4e955f..0000000 --- a/mindus/assets/blocks/environment/bluemat3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/boulder1.png b/mindus/assets/blocks/environment/boulder1.png Binary files differdeleted file mode 100644 index 22d4929..0000000 --- a/mindus/assets/blocks/environment/boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/boulder2.png b/mindus/assets/blocks/environment/boulder2.png Binary files differdeleted file mode 100644 index 8379417..0000000 --- a/mindus/assets/blocks/environment/boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-boulder1.png b/mindus/assets/blocks/environment/carbon-boulder1.png Binary files differdeleted file mode 100644 index d48f298..0000000 --- a/mindus/assets/blocks/environment/carbon-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-boulder2.png b/mindus/assets/blocks/environment/carbon-boulder2.png Binary files differdeleted file mode 100644 index a3ae84b..0000000 --- a/mindus/assets/blocks/environment/carbon-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-stone1.png b/mindus/assets/blocks/environment/carbon-stone1.png Binary files differdeleted file mode 100644 index 241cc18..0000000 --- a/mindus/assets/blocks/environment/carbon-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-stone2.png b/mindus/assets/blocks/environment/carbon-stone2.png Binary files differdeleted file mode 100644 index 90c80b1..0000000 --- a/mindus/assets/blocks/environment/carbon-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-stone3.png b/mindus/assets/blocks/environment/carbon-stone3.png Binary files differdeleted file mode 100644 index dc56e9c..0000000 --- a/mindus/assets/blocks/environment/carbon-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-stone4.png b/mindus/assets/blocks/environment/carbon-stone4.png Binary files differdeleted file mode 100644 index 9a2a163..0000000 --- a/mindus/assets/blocks/environment/carbon-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-vent.png b/mindus/assets/blocks/environment/carbon-vent.png Binary files differdeleted file mode 100644 index 583fe20..0000000 --- a/mindus/assets/blocks/environment/carbon-vent.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-vent1.png b/mindus/assets/blocks/environment/carbon-vent1.png Binary files differdeleted file mode 100644 index ccbf2f7..0000000 --- a/mindus/assets/blocks/environment/carbon-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-vent2.png b/mindus/assets/blocks/environment/carbon-vent2.png Binary files differdeleted file mode 100644 index a87225c..0000000 --- a/mindus/assets/blocks/environment/carbon-vent2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-wall-large.png b/mindus/assets/blocks/environment/carbon-wall-large.png Binary files differdeleted file mode 100644 index 8367461..0000000 --- a/mindus/assets/blocks/environment/carbon-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-wall1.png b/mindus/assets/blocks/environment/carbon-wall1.png Binary files differdeleted file mode 100644 index 9558777..0000000 --- a/mindus/assets/blocks/environment/carbon-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/carbon-wall2.png b/mindus/assets/blocks/environment/carbon-wall2.png Binary files differdeleted file mode 100644 index 98a5334..0000000 --- a/mindus/assets/blocks/environment/carbon-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/char1.png b/mindus/assets/blocks/environment/char1.png Binary files differdeleted file mode 100644 index 94ce8df..0000000 --- a/mindus/assets/blocks/environment/char1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/char2.png b/mindus/assets/blocks/environment/char2.png Binary files differdeleted file mode 100644 index 47db29c..0000000 --- a/mindus/assets/blocks/environment/char2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/char3.png b/mindus/assets/blocks/environment/char3.png Binary files differdeleted file mode 100644 index be117bb..0000000 --- a/mindus/assets/blocks/environment/char3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/core-zone.png b/mindus/assets/blocks/environment/core-zone.png Binary files differdeleted file mode 100644 index 8b3e389..0000000 --- a/mindus/assets/blocks/environment/core-zone.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crater-stone1.png b/mindus/assets/blocks/environment/crater-stone1.png Binary files differdeleted file mode 100644 index 0cd39f7..0000000 --- a/mindus/assets/blocks/environment/crater-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crater-stone2.png b/mindus/assets/blocks/environment/crater-stone2.png Binary files differdeleted file mode 100644 index 48c8560..0000000 --- a/mindus/assets/blocks/environment/crater-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crater-stone3.png b/mindus/assets/blocks/environment/crater-stone3.png Binary files differdeleted file mode 100644 index a5246a5..0000000 --- a/mindus/assets/blocks/environment/crater-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crater-stone4.png b/mindus/assets/blocks/environment/crater-stone4.png Binary files differdeleted file mode 100644 index 24ccffa..0000000 --- a/mindus/assets/blocks/environment/crater-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crater-stone5.png b/mindus/assets/blocks/environment/crater-stone5.png Binary files differdeleted file mode 100644 index f9407bb..0000000 --- a/mindus/assets/blocks/environment/crater-stone5.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crater-stone6.png b/mindus/assets/blocks/environment/crater-stone6.png Binary files differdeleted file mode 100644 index 632d3ef..0000000 --- a/mindus/assets/blocks/environment/crater-stone6.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-blocks1.png b/mindus/assets/blocks/environment/crystal-blocks1.png Binary files differdeleted file mode 100644 index a65944b..0000000 --- a/mindus/assets/blocks/environment/crystal-blocks1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-blocks2.png b/mindus/assets/blocks/environment/crystal-blocks2.png Binary files differdeleted file mode 100644 index 0ccf6f7..0000000 --- a/mindus/assets/blocks/environment/crystal-blocks2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-blocks3.png b/mindus/assets/blocks/environment/crystal-blocks3.png Binary files differdeleted file mode 100644 index e90907b..0000000 --- a/mindus/assets/blocks/environment/crystal-blocks3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-cluster1.png b/mindus/assets/blocks/environment/crystal-cluster1.png Binary files differdeleted file mode 100644 index 946cbdc..0000000 --- a/mindus/assets/blocks/environment/crystal-cluster1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-cluster2.png b/mindus/assets/blocks/environment/crystal-cluster2.png Binary files differdeleted file mode 100644 index 2e1e8ef..0000000 --- a/mindus/assets/blocks/environment/crystal-cluster2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-cluster3.png b/mindus/assets/blocks/environment/crystal-cluster3.png Binary files differdeleted file mode 100644 index b1a6f40..0000000 --- a/mindus/assets/blocks/environment/crystal-cluster3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-floor2.png b/mindus/assets/blocks/environment/crystal-floor2.png Binary files differdeleted file mode 100644 index 545c355..0000000 --- a/mindus/assets/blocks/environment/crystal-floor2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-floor3.png b/mindus/assets/blocks/environment/crystal-floor3.png Binary files differdeleted file mode 100644 index 824898f..0000000 --- a/mindus/assets/blocks/environment/crystal-floor3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-floor4.png b/mindus/assets/blocks/environment/crystal-floor4.png Binary files differdeleted file mode 100644 index 3ed7a8b..0000000 --- a/mindus/assets/blocks/environment/crystal-floor4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-orbs1.png b/mindus/assets/blocks/environment/crystal-orbs1.png Binary files differdeleted file mode 100644 index 945acb3..0000000 --- a/mindus/assets/blocks/environment/crystal-orbs1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-orbs2.png b/mindus/assets/blocks/environment/crystal-orbs2.png Binary files differdeleted file mode 100644 index fb91877..0000000 --- a/mindus/assets/blocks/environment/crystal-orbs2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystal-orbs3.png b/mindus/assets/blocks/environment/crystal-orbs3.png Binary files differdeleted file mode 100644 index f66e334..0000000 --- a/mindus/assets/blocks/environment/crystal-orbs3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-boulder1.png b/mindus/assets/blocks/environment/crystalline-boulder1.png Binary files differdeleted file mode 100644 index 3625fcf..0000000 --- a/mindus/assets/blocks/environment/crystalline-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-boulder2.png b/mindus/assets/blocks/environment/crystalline-boulder2.png Binary files differdeleted file mode 100644 index 621efab..0000000 --- a/mindus/assets/blocks/environment/crystalline-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone-wall-large.png b/mindus/assets/blocks/environment/crystalline-stone-wall-large.png Binary files differdeleted file mode 100644 index 9d146ea..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone-wall1.png b/mindus/assets/blocks/environment/crystalline-stone-wall1.png Binary files differdeleted file mode 100644 index a2c90a5..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone-wall2.png b/mindus/assets/blocks/environment/crystalline-stone-wall2.png Binary files differdeleted file mode 100644 index 565eee9..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone-wall3.png b/mindus/assets/blocks/environment/crystalline-stone-wall3.png Binary files differdeleted file mode 100644 index 20e4299..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone-wall3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone-wall4.png b/mindus/assets/blocks/environment/crystalline-stone-wall4.png Binary files differdeleted file mode 100644 index 4d9b5d8..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone-wall4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone1.png b/mindus/assets/blocks/environment/crystalline-stone1.png Binary files differdeleted file mode 100644 index 578de4b..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone2.png b/mindus/assets/blocks/environment/crystalline-stone2.png Binary files differdeleted file mode 100644 index d4bba9b..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone3.png b/mindus/assets/blocks/environment/crystalline-stone3.png Binary files differdeleted file mode 100644 index 5e53179..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone4.png b/mindus/assets/blocks/environment/crystalline-stone4.png Binary files differdeleted file mode 100644 index 22ce7a7..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-stone5.png b/mindus/assets/blocks/environment/crystalline-stone5.png Binary files differdeleted file mode 100644 index 3963dbc..0000000 --- a/mindus/assets/blocks/environment/crystalline-stone5.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-vent.png b/mindus/assets/blocks/environment/crystalline-vent.png Binary files differdeleted file mode 100644 index a974831..0000000 --- a/mindus/assets/blocks/environment/crystalline-vent.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-vent1.png b/mindus/assets/blocks/environment/crystalline-vent1.png Binary files differdeleted file mode 100644 index 1df332b..0000000 --- a/mindus/assets/blocks/environment/crystalline-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/crystalline-vent2.png b/mindus/assets/blocks/environment/crystalline-vent2.png Binary files differdeleted file mode 100644 index 97f35eb..0000000 --- a/mindus/assets/blocks/environment/crystalline-vent2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite-boulder1.png b/mindus/assets/blocks/environment/dacite-boulder1.png Binary files differdeleted file mode 100644 index 6d87dcd..0000000 --- a/mindus/assets/blocks/environment/dacite-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite-boulder2.png b/mindus/assets/blocks/environment/dacite-boulder2.png Binary files differdeleted file mode 100644 index 6704524..0000000 --- a/mindus/assets/blocks/environment/dacite-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite-wall-large.png b/mindus/assets/blocks/environment/dacite-wall-large.png Binary files differdeleted file mode 100644 index 12be810..0000000 --- a/mindus/assets/blocks/environment/dacite-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite-wall1.png b/mindus/assets/blocks/environment/dacite-wall1.png Binary files differdeleted file mode 100644 index 40c36d0..0000000 --- a/mindus/assets/blocks/environment/dacite-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite-wall2.png b/mindus/assets/blocks/environment/dacite-wall2.png Binary files differdeleted file mode 100644 index a4bae3e..0000000 --- a/mindus/assets/blocks/environment/dacite-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite1.png b/mindus/assets/blocks/environment/dacite1.png Binary files differdeleted file mode 100644 index ef65267..0000000 --- a/mindus/assets/blocks/environment/dacite1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite2.png b/mindus/assets/blocks/environment/dacite2.png Binary files differdeleted file mode 100644 index f9d9115..0000000 --- a/mindus/assets/blocks/environment/dacite2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dacite3.png b/mindus/assets/blocks/environment/dacite3.png Binary files differdeleted file mode 100644 index 8a1621d..0000000 --- a/mindus/assets/blocks/environment/dacite3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-metal-large.png b/mindus/assets/blocks/environment/dark-metal-large.png Binary files differdeleted file mode 100644 index a1efe07..0000000 --- a/mindus/assets/blocks/environment/dark-metal-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-metal1.png b/mindus/assets/blocks/environment/dark-metal1.png Binary files differdeleted file mode 100644 index c284e63..0000000 --- a/mindus/assets/blocks/environment/dark-metal1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-metal2.png b/mindus/assets/blocks/environment/dark-metal2.png Binary files differdeleted file mode 100644 index 207575a..0000000 --- a/mindus/assets/blocks/environment/dark-metal2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-panel-1.png b/mindus/assets/blocks/environment/dark-panel-1.png Binary files differdeleted file mode 100644 index fe2683a..0000000 --- a/mindus/assets/blocks/environment/dark-panel-1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-panel-2.png b/mindus/assets/blocks/environment/dark-panel-2.png Binary files differdeleted file mode 100644 index e45e817..0000000 --- a/mindus/assets/blocks/environment/dark-panel-2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-panel-3.png b/mindus/assets/blocks/environment/dark-panel-3.png Binary files differdeleted file mode 100644 index 8734637..0000000 --- a/mindus/assets/blocks/environment/dark-panel-3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-panel-4.png b/mindus/assets/blocks/environment/dark-panel-4.png Binary files differdeleted file mode 100644 index cb277a0..0000000 --- a/mindus/assets/blocks/environment/dark-panel-4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dark-panel-6.png b/mindus/assets/blocks/environment/dark-panel-6.png Binary files differdeleted file mode 100644 index d3b9251..0000000 --- a/mindus/assets/blocks/environment/dark-panel-6.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/darksand-tainted-water.png b/mindus/assets/blocks/environment/darksand-tainted-water.png Binary files differdeleted file mode 100644 index a687787..0000000 --- a/mindus/assets/blocks/environment/darksand-tainted-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/darksand-water.png b/mindus/assets/blocks/environment/darksand-water.png Binary files differdeleted file mode 100644 index f2e6968..0000000 --- a/mindus/assets/blocks/environment/darksand-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/darksand1.png b/mindus/assets/blocks/environment/darksand1.png Binary files differdeleted file mode 100644 index 91866e5..0000000 --- a/mindus/assets/blocks/environment/darksand1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/darksand2.png b/mindus/assets/blocks/environment/darksand2.png Binary files differdeleted file mode 100644 index c8eb59e..0000000 --- a/mindus/assets/blocks/environment/darksand2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/darksand3.png b/mindus/assets/blocks/environment/darksand3.png Binary files differdeleted file mode 100644 index c8ece42..0000000 --- a/mindus/assets/blocks/environment/darksand3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/deep-tainted-water.png b/mindus/assets/blocks/environment/deep-tainted-water.png Binary files differdeleted file mode 100644 index f1f8a47..0000000 --- a/mindus/assets/blocks/environment/deep-tainted-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/deep-water.png b/mindus/assets/blocks/environment/deep-water.png Binary files differdeleted file mode 100644 index a0d0e10..0000000 --- a/mindus/assets/blocks/environment/deep-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dense-red-stone1.png b/mindus/assets/blocks/environment/dense-red-stone1.png Binary files differdeleted file mode 100644 index 05a3455..0000000 --- a/mindus/assets/blocks/environment/dense-red-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dense-red-stone2.png b/mindus/assets/blocks/environment/dense-red-stone2.png Binary files differdeleted file mode 100644 index 6fe1899..0000000 --- a/mindus/assets/blocks/environment/dense-red-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dense-red-stone3.png b/mindus/assets/blocks/environment/dense-red-stone3.png Binary files differdeleted file mode 100644 index a484201..0000000 --- a/mindus/assets/blocks/environment/dense-red-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dense-red-stone4.png b/mindus/assets/blocks/environment/dense-red-stone4.png Binary files differdeleted file mode 100644 index dfa2ef8..0000000 --- a/mindus/assets/blocks/environment/dense-red-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dirt-wall-large.png b/mindus/assets/blocks/environment/dirt-wall-large.png Binary files differdeleted file mode 100644 index db43337..0000000 --- a/mindus/assets/blocks/environment/dirt-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dirt-wall1.png b/mindus/assets/blocks/environment/dirt-wall1.png Binary files differdeleted file mode 100644 index 6eb65e0..0000000 --- a/mindus/assets/blocks/environment/dirt-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dirt1.png b/mindus/assets/blocks/environment/dirt1.png Binary files differdeleted file mode 100644 index 38f11e7..0000000 --- a/mindus/assets/blocks/environment/dirt1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dirt2.png b/mindus/assets/blocks/environment/dirt2.png Binary files differdeleted file mode 100644 index e4aa286..0000000 --- a/mindus/assets/blocks/environment/dirt2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dirt3.png b/mindus/assets/blocks/environment/dirt3.png Binary files differdeleted file mode 100644 index ff65a1f..0000000 --- a/mindus/assets/blocks/environment/dirt3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dune-wall-large.png b/mindus/assets/blocks/environment/dune-wall-large.png Binary files differdeleted file mode 100644 index d2a69ea..0000000 --- a/mindus/assets/blocks/environment/dune-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dune-wall1.png b/mindus/assets/blocks/environment/dune-wall1.png Binary files differdeleted file mode 100644 index 5b4462f..0000000 --- a/mindus/assets/blocks/environment/dune-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/dune-wall2.png b/mindus/assets/blocks/environment/dune-wall2.png Binary files differdeleted file mode 100644 index f849893..0000000 --- a/mindus/assets/blocks/environment/dune-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/edge-stencil.png b/mindus/assets/blocks/environment/edge-stencil.png Binary files differdeleted file mode 100644 index 0bd0cb7..0000000 --- a/mindus/assets/blocks/environment/edge-stencil.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/edge.png b/mindus/assets/blocks/environment/edge.png Binary files differdeleted file mode 100644 index 12c3b44..0000000 --- a/mindus/assets/blocks/environment/edge.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/env-error.png b/mindus/assets/blocks/environment/env-error.png Binary files differdeleted file mode 100644 index d851d7f..0000000 --- a/mindus/assets/blocks/environment/env-error.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-boulder1.png b/mindus/assets/blocks/environment/ferric-boulder1.png Binary files differdeleted file mode 100644 index 56bcb4b..0000000 --- a/mindus/assets/blocks/environment/ferric-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-boulder2.png b/mindus/assets/blocks/environment/ferric-boulder2.png Binary files differdeleted file mode 100644 index acba7d4..0000000 --- a/mindus/assets/blocks/environment/ferric-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-craters1.png b/mindus/assets/blocks/environment/ferric-craters1.png Binary files differdeleted file mode 100644 index 3249fe9..0000000 --- a/mindus/assets/blocks/environment/ferric-craters1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-craters2.png b/mindus/assets/blocks/environment/ferric-craters2.png Binary files differdeleted file mode 100644 index 91586af..0000000 --- a/mindus/assets/blocks/environment/ferric-craters2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-craters3.png b/mindus/assets/blocks/environment/ferric-craters3.png Binary files differdeleted file mode 100644 index 8b25404..0000000 --- a/mindus/assets/blocks/environment/ferric-craters3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-stone-wall-large.png b/mindus/assets/blocks/environment/ferric-stone-wall-large.png Binary files differdeleted file mode 100644 index 399cf4f..0000000 --- a/mindus/assets/blocks/environment/ferric-stone-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-stone-wall1.png b/mindus/assets/blocks/environment/ferric-stone-wall1.png Binary files differdeleted file mode 100644 index 580ef7d..0000000 --- a/mindus/assets/blocks/environment/ferric-stone-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-stone1.png b/mindus/assets/blocks/environment/ferric-stone1.png Binary files differdeleted file mode 100644 index 4a1a0bc..0000000 --- a/mindus/assets/blocks/environment/ferric-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-stone2.png b/mindus/assets/blocks/environment/ferric-stone2.png Binary files differdeleted file mode 100644 index f4e9af5..0000000 --- a/mindus/assets/blocks/environment/ferric-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-stone3.png b/mindus/assets/blocks/environment/ferric-stone3.png Binary files differdeleted file mode 100644 index 1bc4111..0000000 --- a/mindus/assets/blocks/environment/ferric-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ferric-stone4.png b/mindus/assets/blocks/environment/ferric-stone4.png Binary files differdeleted file mode 100644 index 17ed876..0000000 --- a/mindus/assets/blocks/environment/ferric-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/graphitic-wall-large.png b/mindus/assets/blocks/environment/graphitic-wall-large.png Binary files differdeleted file mode 100644 index 476879a..0000000 --- a/mindus/assets/blocks/environment/graphitic-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/graphitic-wall1.png b/mindus/assets/blocks/environment/graphitic-wall1.png Binary files differdeleted file mode 100644 index 21454de..0000000 --- a/mindus/assets/blocks/environment/graphitic-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/graphitic-wall2.png b/mindus/assets/blocks/environment/graphitic-wall2.png Binary files differdeleted file mode 100644 index aa78bd8..0000000 --- a/mindus/assets/blocks/environment/graphitic-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/graphitic-wall3.png b/mindus/assets/blocks/environment/graphitic-wall3.png Binary files differdeleted file mode 100644 index 8419091..0000000 --- a/mindus/assets/blocks/environment/graphitic-wall3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/grass1.png b/mindus/assets/blocks/environment/grass1.png Binary files differdeleted file mode 100644 index 9b4c556..0000000 --- a/mindus/assets/blocks/environment/grass1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/grass2.png b/mindus/assets/blocks/environment/grass2.png Binary files differdeleted file mode 100644 index d858821..0000000 --- a/mindus/assets/blocks/environment/grass2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/grass3.png b/mindus/assets/blocks/environment/grass3.png Binary files differdeleted file mode 100644 index 9e1aca0..0000000 --- a/mindus/assets/blocks/environment/grass3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/hotrock1.png b/mindus/assets/blocks/environment/hotrock1.png Binary files differdeleted file mode 100644 index 9b1f60d..0000000 --- a/mindus/assets/blocks/environment/hotrock1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/hotrock2.png b/mindus/assets/blocks/environment/hotrock2.png Binary files differdeleted file mode 100644 index 04435af..0000000 --- a/mindus/assets/blocks/environment/hotrock2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/hotrock3.png b/mindus/assets/blocks/environment/hotrock3.png Binary files differdeleted file mode 100644 index 87beeef..0000000 --- a/mindus/assets/blocks/environment/hotrock3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice-snow1.png b/mindus/assets/blocks/environment/ice-snow1.png Binary files differdeleted file mode 100644 index 05fa939..0000000 --- a/mindus/assets/blocks/environment/ice-snow1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice-snow2.png b/mindus/assets/blocks/environment/ice-snow2.png Binary files differdeleted file mode 100644 index 71c7b59..0000000 --- a/mindus/assets/blocks/environment/ice-snow2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice-snow3.png b/mindus/assets/blocks/environment/ice-snow3.png Binary files differdeleted file mode 100644 index 946bad2..0000000 --- a/mindus/assets/blocks/environment/ice-snow3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice-wall-large.png b/mindus/assets/blocks/environment/ice-wall-large.png Binary files differdeleted file mode 100644 index 4ef7e53..0000000 --- a/mindus/assets/blocks/environment/ice-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice-wall1.png b/mindus/assets/blocks/environment/ice-wall1.png Binary files differdeleted file mode 100644 index 56f647f..0000000 --- a/mindus/assets/blocks/environment/ice-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice-wall2.png b/mindus/assets/blocks/environment/ice-wall2.png Binary files differdeleted file mode 100644 index 99674f6..0000000 --- a/mindus/assets/blocks/environment/ice-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice1.png b/mindus/assets/blocks/environment/ice1.png Binary files differdeleted file mode 100644 index 355ed2d..0000000 --- a/mindus/assets/blocks/environment/ice1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice2.png b/mindus/assets/blocks/environment/ice2.png Binary files differdeleted file mode 100644 index eb53e77..0000000 --- a/mindus/assets/blocks/environment/ice2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ice3.png b/mindus/assets/blocks/environment/ice3.png Binary files differdeleted file mode 100644 index 6b1b8b0..0000000 --- a/mindus/assets/blocks/environment/ice3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/magmarock1.png b/mindus/assets/blocks/environment/magmarock1.png Binary files differdeleted file mode 100644 index 7218a6f..0000000 --- a/mindus/assets/blocks/environment/magmarock1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/magmarock2.png b/mindus/assets/blocks/environment/magmarock2.png Binary files differdeleted file mode 100644 index 6a3330c..0000000 --- a/mindus/assets/blocks/environment/magmarock2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/magmarock3.png b/mindus/assets/blocks/environment/magmarock3.png Binary files differdeleted file mode 100644 index 2921b1a..0000000 --- a/mindus/assets/blocks/environment/magmarock3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor-2.png b/mindus/assets/blocks/environment/metal-floor-2.png Binary files differdeleted file mode 100644 index 26ddfa3..0000000 --- a/mindus/assets/blocks/environment/metal-floor-2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor-3.png b/mindus/assets/blocks/environment/metal-floor-3.png Binary files differdeleted file mode 100644 index e5f1b58..0000000 --- a/mindus/assets/blocks/environment/metal-floor-3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor-5.png b/mindus/assets/blocks/environment/metal-floor-5.png Binary files differdeleted file mode 100644 index 7b7cf40..0000000 --- a/mindus/assets/blocks/environment/metal-floor-5.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor-damaged1.png b/mindus/assets/blocks/environment/metal-floor-damaged1.png Binary files differdeleted file mode 100644 index 500d2a1..0000000 --- a/mindus/assets/blocks/environment/metal-floor-damaged1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor-damaged2.png b/mindus/assets/blocks/environment/metal-floor-damaged2.png Binary files differdeleted file mode 100644 index 0346965..0000000 --- a/mindus/assets/blocks/environment/metal-floor-damaged2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor-damaged3.png b/mindus/assets/blocks/environment/metal-floor-damaged3.png Binary files differdeleted file mode 100644 index 59dad1b..0000000 --- a/mindus/assets/blocks/environment/metal-floor-damaged3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/metal-floor.png b/mindus/assets/blocks/environment/metal-floor.png Binary files differdeleted file mode 100644 index ca564d0..0000000 --- a/mindus/assets/blocks/environment/metal-floor.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/molten-slag1.png b/mindus/assets/blocks/environment/molten-slag1.png Binary files differdeleted file mode 100644 index 07db3b0..0000000 --- a/mindus/assets/blocks/environment/molten-slag1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/moss1.png b/mindus/assets/blocks/environment/moss1.png Binary files differdeleted file mode 100644 index 69d8abd..0000000 --- a/mindus/assets/blocks/environment/moss1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/moss2.png b/mindus/assets/blocks/environment/moss2.png Binary files differdeleted file mode 100644 index 181c54a..0000000 --- a/mindus/assets/blocks/environment/moss2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/moss3.png b/mindus/assets/blocks/environment/moss3.png Binary files differdeleted file mode 100644 index f9b0b7b..0000000 --- a/mindus/assets/blocks/environment/moss3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/mud1.png b/mindus/assets/blocks/environment/mud1.png Binary files differdeleted file mode 100644 index b3bde63..0000000 --- a/mindus/assets/blocks/environment/mud1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/mud2.png b/mindus/assets/blocks/environment/mud2.png Binary files differdeleted file mode 100644 index 12a52d6..0000000 --- a/mindus/assets/blocks/environment/mud2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/mud3.png b/mindus/assets/blocks/environment/mud3.png Binary files differdeleted file mode 100644 index 325eaf4..0000000 --- a/mindus/assets/blocks/environment/mud3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-beryllium1.png b/mindus/assets/blocks/environment/ore-beryllium1.png Binary files differdeleted file mode 100644 index 4d682b8..0000000 --- a/mindus/assets/blocks/environment/ore-beryllium1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-beryllium2.png b/mindus/assets/blocks/environment/ore-beryllium2.png Binary files differdeleted file mode 100644 index baa2364..0000000 --- a/mindus/assets/blocks/environment/ore-beryllium2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-beryllium3.png b/mindus/assets/blocks/environment/ore-beryllium3.png Binary files differdeleted file mode 100644 index 05a9465..0000000 --- a/mindus/assets/blocks/environment/ore-beryllium3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-coal1.png b/mindus/assets/blocks/environment/ore-coal1.png Binary files differdeleted file mode 100644 index 6b5a5ee..0000000 --- a/mindus/assets/blocks/environment/ore-coal1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-coal2.png b/mindus/assets/blocks/environment/ore-coal2.png Binary files differdeleted file mode 100644 index 4e6f721..0000000 --- a/mindus/assets/blocks/environment/ore-coal2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-coal3.png b/mindus/assets/blocks/environment/ore-coal3.png Binary files differdeleted file mode 100644 index 4e8fb4e..0000000 --- a/mindus/assets/blocks/environment/ore-coal3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-copper1.png b/mindus/assets/blocks/environment/ore-copper1.png Binary files differdeleted file mode 100644 index 578b5b4..0000000 --- a/mindus/assets/blocks/environment/ore-copper1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-copper2.png b/mindus/assets/blocks/environment/ore-copper2.png Binary files differdeleted file mode 100644 index 3afab6a..0000000 --- a/mindus/assets/blocks/environment/ore-copper2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-copper3.png b/mindus/assets/blocks/environment/ore-copper3.png Binary files differdeleted file mode 100644 index 561d14c..0000000 --- a/mindus/assets/blocks/environment/ore-copper3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-crystal-thorium1.png b/mindus/assets/blocks/environment/ore-crystal-thorium1.png Binary files differdeleted file mode 100644 index 9ba038e..0000000 --- a/mindus/assets/blocks/environment/ore-crystal-thorium1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-crystal-thorium2.png b/mindus/assets/blocks/environment/ore-crystal-thorium2.png Binary files differdeleted file mode 100644 index 219adc2..0000000 --- a/mindus/assets/blocks/environment/ore-crystal-thorium2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-crystal-thorium3.png b/mindus/assets/blocks/environment/ore-crystal-thorium3.png Binary files differdeleted file mode 100644 index daa6ace..0000000 --- a/mindus/assets/blocks/environment/ore-crystal-thorium3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-lead1.png b/mindus/assets/blocks/environment/ore-lead1.png Binary files differdeleted file mode 100644 index 94eed99..0000000 --- a/mindus/assets/blocks/environment/ore-lead1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-lead2.png b/mindus/assets/blocks/environment/ore-lead2.png Binary files differdeleted file mode 100644 index c86de92..0000000 --- a/mindus/assets/blocks/environment/ore-lead2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-lead3.png b/mindus/assets/blocks/environment/ore-lead3.png Binary files differdeleted file mode 100644 index c99376f..0000000 --- a/mindus/assets/blocks/environment/ore-lead3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-scrap1.png b/mindus/assets/blocks/environment/ore-scrap1.png Binary files differdeleted file mode 100644 index 8973fe2..0000000 --- a/mindus/assets/blocks/environment/ore-scrap1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-scrap2.png b/mindus/assets/blocks/environment/ore-scrap2.png Binary files differdeleted file mode 100644 index 9a196d1..0000000 --- a/mindus/assets/blocks/environment/ore-scrap2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-scrap3.png b/mindus/assets/blocks/environment/ore-scrap3.png Binary files differdeleted file mode 100644 index e5e88a2..0000000 --- a/mindus/assets/blocks/environment/ore-scrap3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-thorium1.png b/mindus/assets/blocks/environment/ore-thorium1.png Binary files differdeleted file mode 100644 index f07faf6..0000000 --- a/mindus/assets/blocks/environment/ore-thorium1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-thorium2.png b/mindus/assets/blocks/environment/ore-thorium2.png Binary files differdeleted file mode 100644 index 41787f4..0000000 --- a/mindus/assets/blocks/environment/ore-thorium2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-thorium3.png b/mindus/assets/blocks/environment/ore-thorium3.png Binary files differdeleted file mode 100644 index d2604e0..0000000 --- a/mindus/assets/blocks/environment/ore-thorium3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-titanium1.png b/mindus/assets/blocks/environment/ore-titanium1.png Binary files differdeleted file mode 100644 index 95e95ed..0000000 --- a/mindus/assets/blocks/environment/ore-titanium1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-titanium2.png b/mindus/assets/blocks/environment/ore-titanium2.png Binary files differdeleted file mode 100644 index d4e5327..0000000 --- a/mindus/assets/blocks/environment/ore-titanium2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-titanium3.png b/mindus/assets/blocks/environment/ore-titanium3.png Binary files differdeleted file mode 100644 index 6bfae17..0000000 --- a/mindus/assets/blocks/environment/ore-titanium3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-tungsten1.png b/mindus/assets/blocks/environment/ore-tungsten1.png Binary files differdeleted file mode 100644 index 094ef3e..0000000 --- a/mindus/assets/blocks/environment/ore-tungsten1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-tungsten2.png b/mindus/assets/blocks/environment/ore-tungsten2.png Binary files differdeleted file mode 100644 index 4b6b9e2..0000000 --- a/mindus/assets/blocks/environment/ore-tungsten2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-tungsten3.png b/mindus/assets/blocks/environment/ore-tungsten3.png Binary files differdeleted file mode 100644 index c379d30..0000000 --- a/mindus/assets/blocks/environment/ore-tungsten3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-beryllium1.png b/mindus/assets/blocks/environment/ore-wall-beryllium1.png Binary files differdeleted file mode 100644 index e9a3cc3..0000000 --- a/mindus/assets/blocks/environment/ore-wall-beryllium1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-beryllium2.png b/mindus/assets/blocks/environment/ore-wall-beryllium2.png Binary files differdeleted file mode 100644 index 0904e0d..0000000 --- a/mindus/assets/blocks/environment/ore-wall-beryllium2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-beryllium3.png b/mindus/assets/blocks/environment/ore-wall-beryllium3.png Binary files differdeleted file mode 100644 index 5c9b8c7..0000000 --- a/mindus/assets/blocks/environment/ore-wall-beryllium3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-graphite1.png b/mindus/assets/blocks/environment/ore-wall-graphite1.png Binary files differdeleted file mode 100644 index 12b7df9..0000000 --- a/mindus/assets/blocks/environment/ore-wall-graphite1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-graphite2.png b/mindus/assets/blocks/environment/ore-wall-graphite2.png Binary files differdeleted file mode 100644 index 5132f76..0000000 --- a/mindus/assets/blocks/environment/ore-wall-graphite2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-graphite3.png b/mindus/assets/blocks/environment/ore-wall-graphite3.png Binary files differdeleted file mode 100644 index 5369276..0000000 --- a/mindus/assets/blocks/environment/ore-wall-graphite3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-thorium1.png b/mindus/assets/blocks/environment/ore-wall-thorium1.png Binary files differdeleted file mode 100644 index 05342af..0000000 --- a/mindus/assets/blocks/environment/ore-wall-thorium1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-thorium2.png b/mindus/assets/blocks/environment/ore-wall-thorium2.png Binary files differdeleted file mode 100644 index ed21d0d..0000000 --- a/mindus/assets/blocks/environment/ore-wall-thorium2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-thorium3.png b/mindus/assets/blocks/environment/ore-wall-thorium3.png Binary files differdeleted file mode 100644 index 5a58f15..0000000 --- a/mindus/assets/blocks/environment/ore-wall-thorium3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-tungsten1.png b/mindus/assets/blocks/environment/ore-wall-tungsten1.png Binary files differdeleted file mode 100644 index 81e61e1..0000000 --- a/mindus/assets/blocks/environment/ore-wall-tungsten1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-tungsten2.png b/mindus/assets/blocks/environment/ore-wall-tungsten2.png Binary files differdeleted file mode 100644 index 6ed7eba..0000000 --- a/mindus/assets/blocks/environment/ore-wall-tungsten2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/ore-wall-tungsten3.png b/mindus/assets/blocks/environment/ore-wall-tungsten3.png Binary files differdeleted file mode 100644 index d1e7993..0000000 --- a/mindus/assets/blocks/environment/ore-wall-tungsten3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/pebbles1.png b/mindus/assets/blocks/environment/pebbles1.png Binary files differdeleted file mode 100644 index 8c8cf52..0000000 --- a/mindus/assets/blocks/environment/pebbles1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/pebbles2.png b/mindus/assets/blocks/environment/pebbles2.png Binary files differdeleted file mode 100644 index 4360626..0000000 --- a/mindus/assets/blocks/environment/pebbles2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/pebbles3.png b/mindus/assets/blocks/environment/pebbles3.png Binary files differdeleted file mode 100644 index a542a96..0000000 --- a/mindus/assets/blocks/environment/pebbles3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/pine.png b/mindus/assets/blocks/environment/pine.png Binary files differdeleted file mode 100644 index 9f746c3..0000000 --- a/mindus/assets/blocks/environment/pine.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/pooled-cryofluid.png b/mindus/assets/blocks/environment/pooled-cryofluid.png Binary files differdeleted file mode 100644 index 3dac992..0000000 --- a/mindus/assets/blocks/environment/pooled-cryofluid.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/pur-bush.png b/mindus/assets/blocks/environment/pur-bush.png Binary files differdeleted file mode 100644 index 76768eb..0000000 --- a/mindus/assets/blocks/environment/pur-bush.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-diamond-wall1.png b/mindus/assets/blocks/environment/red-diamond-wall1.png Binary files differdeleted file mode 100644 index 8eb8d9b..0000000 --- a/mindus/assets/blocks/environment/red-diamond-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-diamond-wall2.png b/mindus/assets/blocks/environment/red-diamond-wall2.png Binary files differdeleted file mode 100644 index 1901166..0000000 --- a/mindus/assets/blocks/environment/red-diamond-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-diamond-wall3.png b/mindus/assets/blocks/environment/red-diamond-wall3.png Binary files differdeleted file mode 100644 index a2c5220..0000000 --- a/mindus/assets/blocks/environment/red-diamond-wall3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice-boulder1.png b/mindus/assets/blocks/environment/red-ice-boulder1.png Binary files differdeleted file mode 100644 index 2c49e57..0000000 --- a/mindus/assets/blocks/environment/red-ice-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice-boulder2.png b/mindus/assets/blocks/environment/red-ice-boulder2.png Binary files differdeleted file mode 100644 index b6935e1..0000000 --- a/mindus/assets/blocks/environment/red-ice-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice-boulder3.png b/mindus/assets/blocks/environment/red-ice-boulder3.png Binary files differdeleted file mode 100644 index 1e1b542..0000000 --- a/mindus/assets/blocks/environment/red-ice-boulder3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice-wall-large.png b/mindus/assets/blocks/environment/red-ice-wall-large.png Binary files differdeleted file mode 100644 index 0d09b3b..0000000 --- a/mindus/assets/blocks/environment/red-ice-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice-wall1.png b/mindus/assets/blocks/environment/red-ice-wall1.png Binary files differdeleted file mode 100644 index 2ed857c..0000000 --- a/mindus/assets/blocks/environment/red-ice-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice-wall2.png b/mindus/assets/blocks/environment/red-ice-wall2.png Binary files differdeleted file mode 100644 index 931929e..0000000 --- a/mindus/assets/blocks/environment/red-ice-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice1.png b/mindus/assets/blocks/environment/red-ice1.png Binary files differdeleted file mode 100644 index c03c486..0000000 --- a/mindus/assets/blocks/environment/red-ice1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice2.png b/mindus/assets/blocks/environment/red-ice2.png Binary files differdeleted file mode 100644 index e3e309f..0000000 --- a/mindus/assets/blocks/environment/red-ice2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-ice3.png b/mindus/assets/blocks/environment/red-ice3.png Binary files differdeleted file mode 100644 index f33ec98..0000000 --- a/mindus/assets/blocks/environment/red-ice3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-boulder1.png b/mindus/assets/blocks/environment/red-stone-boulder1.png Binary files differdeleted file mode 100644 index c7df230..0000000 --- a/mindus/assets/blocks/environment/red-stone-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-boulder2.png b/mindus/assets/blocks/environment/red-stone-boulder2.png Binary files differdeleted file mode 100644 index 2fe2ad2..0000000 --- a/mindus/assets/blocks/environment/red-stone-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-boulder3.png b/mindus/assets/blocks/environment/red-stone-boulder3.png Binary files differdeleted file mode 100644 index 62e2616..0000000 --- a/mindus/assets/blocks/environment/red-stone-boulder3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-boulder4.png b/mindus/assets/blocks/environment/red-stone-boulder4.png Binary files differdeleted file mode 100644 index 2d3d0c3..0000000 --- a/mindus/assets/blocks/environment/red-stone-boulder4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-vent1.png b/mindus/assets/blocks/environment/red-stone-vent1.png Binary files differdeleted file mode 100644 index 09d370f..0000000 --- a/mindus/assets/blocks/environment/red-stone-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-vent2.png b/mindus/assets/blocks/environment/red-stone-vent2.png Binary files differdeleted file mode 100644 index a454baa..0000000 --- a/mindus/assets/blocks/environment/red-stone-vent2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-wall-large.png b/mindus/assets/blocks/environment/red-stone-wall-large.png Binary files differdeleted file mode 100644 index a0c4a5c..0000000 --- a/mindus/assets/blocks/environment/red-stone-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-wall1.png b/mindus/assets/blocks/environment/red-stone-wall1.png Binary files differdeleted file mode 100644 index a14f6f7..0000000 --- a/mindus/assets/blocks/environment/red-stone-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone-wall2.png b/mindus/assets/blocks/environment/red-stone-wall2.png Binary files differdeleted file mode 100644 index 18b79ea..0000000 --- a/mindus/assets/blocks/environment/red-stone-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone1.png b/mindus/assets/blocks/environment/red-stone1.png Binary files differdeleted file mode 100644 index bcad408..0000000 --- a/mindus/assets/blocks/environment/red-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone2.png b/mindus/assets/blocks/environment/red-stone2.png Binary files differdeleted file mode 100644 index b857043..0000000 --- a/mindus/assets/blocks/environment/red-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone3.png b/mindus/assets/blocks/environment/red-stone3.png Binary files differdeleted file mode 100644 index 5fae657..0000000 --- a/mindus/assets/blocks/environment/red-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/red-stone4.png b/mindus/assets/blocks/environment/red-stone4.png Binary files differdeleted file mode 100644 index b1931ec..0000000 --- a/mindus/assets/blocks/environment/red-stone4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/redmat1.png b/mindus/assets/blocks/environment/redmat1.png Binary files differdeleted file mode 100644 index daa3995..0000000 --- a/mindus/assets/blocks/environment/redmat1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/redmat2.png b/mindus/assets/blocks/environment/redmat2.png Binary files differdeleted file mode 100644 index b5fca70..0000000 --- a/mindus/assets/blocks/environment/redmat2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/redmat3.png b/mindus/assets/blocks/environment/redmat3.png Binary files differdeleted file mode 100644 index 88e06a4..0000000 --- a/mindus/assets/blocks/environment/redmat3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/redweed1.png b/mindus/assets/blocks/environment/redweed1.png Binary files differdeleted file mode 100644 index a981a01..0000000 --- a/mindus/assets/blocks/environment/redweed1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/redweed2.png b/mindus/assets/blocks/environment/redweed2.png Binary files differdeleted file mode 100644 index d1d0b4b..0000000 --- a/mindus/assets/blocks/environment/redweed2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/redweed3.png b/mindus/assets/blocks/environment/redweed3.png Binary files differdeleted file mode 100644 index b9fd3a8..0000000 --- a/mindus/assets/blocks/environment/redweed3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/regolith-wall-large.png b/mindus/assets/blocks/environment/regolith-wall-large.png Binary files differdeleted file mode 100644 index 1721a2a..0000000 --- a/mindus/assets/blocks/environment/regolith-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/regolith-wall1.png b/mindus/assets/blocks/environment/regolith-wall1.png Binary files differdeleted file mode 100644 index 7b46145..0000000 --- a/mindus/assets/blocks/environment/regolith-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/regolith-wall2.png b/mindus/assets/blocks/environment/regolith-wall2.png Binary files differdeleted file mode 100644 index 41ae883..0000000 --- a/mindus/assets/blocks/environment/regolith-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/regolith1.png b/mindus/assets/blocks/environment/regolith1.png Binary files differdeleted file mode 100644 index dad9752..0000000 --- a/mindus/assets/blocks/environment/regolith1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/regolith2.png b/mindus/assets/blocks/environment/regolith2.png Binary files differdeleted file mode 100644 index a700e03..0000000 --- a/mindus/assets/blocks/environment/regolith2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/regolith3.png b/mindus/assets/blocks/environment/regolith3.png Binary files differdeleted file mode 100644 index 91ad120..0000000 --- a/mindus/assets/blocks/environment/regolith3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-boulder1.png b/mindus/assets/blocks/environment/rhyolite-boulder1.png Binary files differdeleted file mode 100644 index 47cb5ef..0000000 --- a/mindus/assets/blocks/environment/rhyolite-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-boulder2.png b/mindus/assets/blocks/environment/rhyolite-boulder2.png Binary files differdeleted file mode 100644 index de1c76b..0000000 --- a/mindus/assets/blocks/environment/rhyolite-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-boulder3.png b/mindus/assets/blocks/environment/rhyolite-boulder3.png Binary files differdeleted file mode 100644 index 331a2b7..0000000 --- a/mindus/assets/blocks/environment/rhyolite-boulder3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-crater1.png b/mindus/assets/blocks/environment/rhyolite-crater1.png Binary files differdeleted file mode 100644 index 0174a41..0000000 --- a/mindus/assets/blocks/environment/rhyolite-crater1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-crater2.png b/mindus/assets/blocks/environment/rhyolite-crater2.png Binary files differdeleted file mode 100644 index 6cddef9..0000000 --- a/mindus/assets/blocks/environment/rhyolite-crater2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-crater3.png b/mindus/assets/blocks/environment/rhyolite-crater3.png Binary files differdeleted file mode 100644 index 0bd8f0e..0000000 --- a/mindus/assets/blocks/environment/rhyolite-crater3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-vent.png b/mindus/assets/blocks/environment/rhyolite-vent.png Binary files differdeleted file mode 100644 index c1a5c99..0000000 --- a/mindus/assets/blocks/environment/rhyolite-vent.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-vent1.png b/mindus/assets/blocks/environment/rhyolite-vent1.png Binary files differdeleted file mode 100644 index 6ec1110..0000000 --- a/mindus/assets/blocks/environment/rhyolite-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-vent2.png b/mindus/assets/blocks/environment/rhyolite-vent2.png Binary files differdeleted file mode 100644 index 0ffaf96..0000000 --- a/mindus/assets/blocks/environment/rhyolite-vent2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-wall-large.png b/mindus/assets/blocks/environment/rhyolite-wall-large.png Binary files differdeleted file mode 100644 index c88a15e..0000000 --- a/mindus/assets/blocks/environment/rhyolite-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-wall1.png b/mindus/assets/blocks/environment/rhyolite-wall1.png Binary files differdeleted file mode 100644 index 6ea6923..0000000 --- a/mindus/assets/blocks/environment/rhyolite-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite-wall2.png b/mindus/assets/blocks/environment/rhyolite-wall2.png Binary files differdeleted file mode 100644 index 2e83246..0000000 --- a/mindus/assets/blocks/environment/rhyolite-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite1.png b/mindus/assets/blocks/environment/rhyolite1.png Binary files differdeleted file mode 100644 index c55fd56..0000000 --- a/mindus/assets/blocks/environment/rhyolite1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite2.png b/mindus/assets/blocks/environment/rhyolite2.png Binary files differdeleted file mode 100644 index 37b482f..0000000 --- a/mindus/assets/blocks/environment/rhyolite2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rhyolite3.png b/mindus/assets/blocks/environment/rhyolite3.png Binary files differdeleted file mode 100644 index 8fdb670..0000000 --- a/mindus/assets/blocks/environment/rhyolite3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rough-rhyolite1.png b/mindus/assets/blocks/environment/rough-rhyolite1.png Binary files differdeleted file mode 100644 index 1917ede..0000000 --- a/mindus/assets/blocks/environment/rough-rhyolite1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rough-rhyolite2.png b/mindus/assets/blocks/environment/rough-rhyolite2.png Binary files differdeleted file mode 100644 index c3a4d2d..0000000 --- a/mindus/assets/blocks/environment/rough-rhyolite2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rough-rhyolite3.png b/mindus/assets/blocks/environment/rough-rhyolite3.png Binary files differdeleted file mode 100644 index 9cb78eb..0000000 --- a/mindus/assets/blocks/environment/rough-rhyolite3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/rough-rhyolite4.png b/mindus/assets/blocks/environment/rough-rhyolite4.png Binary files differdeleted file mode 100644 index 71c6f8d..0000000 --- a/mindus/assets/blocks/environment/rough-rhyolite4.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/salt-wall1.png b/mindus/assets/blocks/environment/salt-wall1.png Binary files differdeleted file mode 100644 index 63bb165..0000000 --- a/mindus/assets/blocks/environment/salt-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/salt-wall2.png b/mindus/assets/blocks/environment/salt-wall2.png Binary files differdeleted file mode 100644 index ae324d3..0000000 --- a/mindus/assets/blocks/environment/salt-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/salt1.png b/mindus/assets/blocks/environment/salt1.png Binary files differdeleted file mode 100644 index 285babf..0000000 --- a/mindus/assets/blocks/environment/salt1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-boulder1.png b/mindus/assets/blocks/environment/sand-boulder1.png Binary files differdeleted file mode 100644 index 573469b..0000000 --- a/mindus/assets/blocks/environment/sand-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-boulder2.png b/mindus/assets/blocks/environment/sand-boulder2.png Binary files differdeleted file mode 100644 index 667529f..0000000 --- a/mindus/assets/blocks/environment/sand-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-floor1.png b/mindus/assets/blocks/environment/sand-floor1.png Binary files differdeleted file mode 100644 index 40d4916..0000000 --- a/mindus/assets/blocks/environment/sand-floor1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-floor2.png b/mindus/assets/blocks/environment/sand-floor2.png Binary files differdeleted file mode 100644 index 1a22960..0000000 --- a/mindus/assets/blocks/environment/sand-floor2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-floor3.png b/mindus/assets/blocks/environment/sand-floor3.png Binary files differdeleted file mode 100644 index 71e6f7b..0000000 --- a/mindus/assets/blocks/environment/sand-floor3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-wall-large.png b/mindus/assets/blocks/environment/sand-wall-large.png Binary files differdeleted file mode 100644 index dd8b463..0000000 --- a/mindus/assets/blocks/environment/sand-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-wall1.png b/mindus/assets/blocks/environment/sand-wall1.png Binary files differdeleted file mode 100644 index ee4e4bd..0000000 --- a/mindus/assets/blocks/environment/sand-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-wall2.png b/mindus/assets/blocks/environment/sand-wall2.png Binary files differdeleted file mode 100644 index 62c70f4..0000000 --- a/mindus/assets/blocks/environment/sand-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/sand-water.png b/mindus/assets/blocks/environment/sand-water.png Binary files differdeleted file mode 100644 index a4683d3..0000000 --- a/mindus/assets/blocks/environment/sand-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale-boulder1.png b/mindus/assets/blocks/environment/shale-boulder1.png Binary files differdeleted file mode 100644 index 199c6c0..0000000 --- a/mindus/assets/blocks/environment/shale-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale-boulder2.png b/mindus/assets/blocks/environment/shale-boulder2.png Binary files differdeleted file mode 100644 index 3cee755..0000000 --- a/mindus/assets/blocks/environment/shale-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale-wall-large.png b/mindus/assets/blocks/environment/shale-wall-large.png Binary files differdeleted file mode 100644 index 9ce1dcd..0000000 --- a/mindus/assets/blocks/environment/shale-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale-wall1.png b/mindus/assets/blocks/environment/shale-wall1.png Binary files differdeleted file mode 100644 index b983bc6..0000000 --- a/mindus/assets/blocks/environment/shale-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale-wall2.png b/mindus/assets/blocks/environment/shale-wall2.png Binary files differdeleted file mode 100644 index f89fed6..0000000 --- a/mindus/assets/blocks/environment/shale-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale1.png b/mindus/assets/blocks/environment/shale1.png Binary files differdeleted file mode 100644 index 328e286..0000000 --- a/mindus/assets/blocks/environment/shale1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale2.png b/mindus/assets/blocks/environment/shale2.png Binary files differdeleted file mode 100644 index e2cda57..0000000 --- a/mindus/assets/blocks/environment/shale2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shale3.png b/mindus/assets/blocks/environment/shale3.png Binary files differdeleted file mode 100644 index fde0c72..0000000 --- a/mindus/assets/blocks/environment/shale3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shallow-water.png b/mindus/assets/blocks/environment/shallow-water.png Binary files differdeleted file mode 100644 index 21e323f..0000000 --- a/mindus/assets/blocks/environment/shallow-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shrubs-large.png b/mindus/assets/blocks/environment/shrubs-large.png Binary files differdeleted file mode 100644 index e2fe1ab..0000000 --- a/mindus/assets/blocks/environment/shrubs-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shrubs1.png b/mindus/assets/blocks/environment/shrubs1.png Binary files differdeleted file mode 100644 index d9596f7..0000000 --- a/mindus/assets/blocks/environment/shrubs1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/shrubs2.png b/mindus/assets/blocks/environment/shrubs2.png Binary files differdeleted file mode 100644 index 8758541..0000000 --- a/mindus/assets/blocks/environment/shrubs2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/single/colored-floor.png b/mindus/assets/blocks/environment/single/colored-floor.png deleted file mode 120000 index a20bf5a..0000000 --- a/mindus/assets/blocks/environment/single/colored-floor.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/colored-floor-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/colored-wall.png b/mindus/assets/blocks/environment/single/colored-wall.png deleted file mode 120000 index 7afe834..0000000 --- a/mindus/assets/blocks/environment/single/colored-wall.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/colored-wall-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-1.png b/mindus/assets/blocks/environment/single/metal-tiles-1.png deleted file mode 120000 index fb2babd..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-1.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-1-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-10.png b/mindus/assets/blocks/environment/single/metal-tiles-10.png deleted file mode 120000 index 17482a9..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-10.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-10-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-11.png b/mindus/assets/blocks/environment/single/metal-tiles-11.png deleted file mode 120000 index 7f60b5a..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-11.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-11-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-12.png b/mindus/assets/blocks/environment/single/metal-tiles-12.png deleted file mode 120000 index 2f3a9a2..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-12.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-12-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-2.png b/mindus/assets/blocks/environment/single/metal-tiles-2.png deleted file mode 120000 index 5169a49..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-2.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-2-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-3.png b/mindus/assets/blocks/environment/single/metal-tiles-3.png deleted file mode 120000 index dfb955e..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-3.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-3-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-4.png b/mindus/assets/blocks/environment/single/metal-tiles-4.png deleted file mode 120000 index e72949a..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-4.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-4-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-5.png b/mindus/assets/blocks/environment/single/metal-tiles-5.png deleted file mode 120000 index 2d26ff4..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-5.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-5-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-6.png b/mindus/assets/blocks/environment/single/metal-tiles-6.png deleted file mode 120000 index 53cee72..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-6.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-6-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-7.png b/mindus/assets/blocks/environment/single/metal-tiles-7.png deleted file mode 120000 index 79c26ee..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-7.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-7-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-8.png b/mindus/assets/blocks/environment/single/metal-tiles-8.png deleted file mode 120000 index 7e3bd9b..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-8.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-8-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-tiles-9.png b/mindus/assets/blocks/environment/single/metal-tiles-9.png deleted file mode 120000 index ecaf110..0000000 --- a/mindus/assets/blocks/environment/single/metal-tiles-9.png +++ /dev/null @@ -1 +0,0 @@ -../../autotiles/metal-tiles-9-39.png
\ No newline at end of file diff --git a/mindus/assets/blocks/environment/single/metal-wall-1.png b/mindus/assets/blocks/environment/single/metal-wall-1.png Binary files differdeleted file mode 100644 index 95adac5..0000000 --- a/mindus/assets/blocks/environment/single/metal-wall-1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/single/metal-wall-2.png b/mindus/assets/blocks/environment/single/metal-wall-2.png Binary files differdeleted file mode 100644 index 2f0db5b..0000000 --- a/mindus/assets/blocks/environment/single/metal-wall-2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/single/metal-wall-3.png b/mindus/assets/blocks/environment/single/metal-wall-3.png Binary files differdeleted file mode 100644 index 9806760..0000000 --- a/mindus/assets/blocks/environment/single/metal-wall-3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow-boulder1.png b/mindus/assets/blocks/environment/snow-boulder1.png Binary files differdeleted file mode 100644 index 8e8e6f9..0000000 --- a/mindus/assets/blocks/environment/snow-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow-boulder2.png b/mindus/assets/blocks/environment/snow-boulder2.png Binary files differdeleted file mode 100644 index 5f530c0..0000000 --- a/mindus/assets/blocks/environment/snow-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow-pine.png b/mindus/assets/blocks/environment/snow-pine.png Binary files differdeleted file mode 100644 index 036c20c..0000000 --- a/mindus/assets/blocks/environment/snow-pine.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow-wall-large.png b/mindus/assets/blocks/environment/snow-wall-large.png Binary files differdeleted file mode 100644 index b7ff809..0000000 --- a/mindus/assets/blocks/environment/snow-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow-wall1.png b/mindus/assets/blocks/environment/snow-wall1.png Binary files differdeleted file mode 100644 index 6655c37..0000000 --- a/mindus/assets/blocks/environment/snow-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow-wall2.png b/mindus/assets/blocks/environment/snow-wall2.png Binary files differdeleted file mode 100644 index 40ba359..0000000 --- a/mindus/assets/blocks/environment/snow-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow1.png b/mindus/assets/blocks/environment/snow1.png Binary files differdeleted file mode 100644 index 3387f23..0000000 --- a/mindus/assets/blocks/environment/snow1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow2.png b/mindus/assets/blocks/environment/snow2.png Binary files differdeleted file mode 100644 index 013c458..0000000 --- a/mindus/assets/blocks/environment/snow2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/snow3.png b/mindus/assets/blocks/environment/snow3.png Binary files differdeleted file mode 100644 index baa63ec..0000000 --- a/mindus/assets/blocks/environment/snow3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spawn.png b/mindus/assets/blocks/environment/spawn.png Binary files differdeleted file mode 100644 index d8b2859..0000000 --- a/mindus/assets/blocks/environment/spawn.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-cluster1.png b/mindus/assets/blocks/environment/spore-cluster1.png Binary files differdeleted file mode 100644 index c28dc43..0000000 --- a/mindus/assets/blocks/environment/spore-cluster1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-cluster2.png b/mindus/assets/blocks/environment/spore-cluster2.png Binary files differdeleted file mode 100644 index 725f1b9..0000000 --- a/mindus/assets/blocks/environment/spore-cluster2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-cluster3.png b/mindus/assets/blocks/environment/spore-cluster3.png Binary files differdeleted file mode 100644 index 7b5e93e..0000000 --- a/mindus/assets/blocks/environment/spore-cluster3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-moss1.png b/mindus/assets/blocks/environment/spore-moss1.png Binary files differdeleted file mode 100644 index dacdf4c..0000000 --- a/mindus/assets/blocks/environment/spore-moss1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-moss2.png b/mindus/assets/blocks/environment/spore-moss2.png Binary files differdeleted file mode 100644 index 475e877..0000000 --- a/mindus/assets/blocks/environment/spore-moss2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-moss3.png b/mindus/assets/blocks/environment/spore-moss3.png Binary files differdeleted file mode 100644 index 69e7656..0000000 --- a/mindus/assets/blocks/environment/spore-moss3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-pine.png b/mindus/assets/blocks/environment/spore-pine.png Binary files differdeleted file mode 100644 index bdb2f9c..0000000 --- a/mindus/assets/blocks/environment/spore-pine.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-wall-large.png b/mindus/assets/blocks/environment/spore-wall-large.png Binary files differdeleted file mode 100644 index 1f1fec5..0000000 --- a/mindus/assets/blocks/environment/spore-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-wall1.png b/mindus/assets/blocks/environment/spore-wall1.png Binary files differdeleted file mode 100644 index c0ee3ef..0000000 --- a/mindus/assets/blocks/environment/spore-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/spore-wall2.png b/mindus/assets/blocks/environment/spore-wall2.png Binary files differdeleted file mode 100644 index 0a83a69..0000000 --- a/mindus/assets/blocks/environment/spore-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone-vent.png b/mindus/assets/blocks/environment/stone-vent.png Binary files differdeleted file mode 100644 index c8dd9e4..0000000 --- a/mindus/assets/blocks/environment/stone-vent.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone-wall-large.png b/mindus/assets/blocks/environment/stone-wall-large.png Binary files differdeleted file mode 100644 index 76d3ca3..0000000 --- a/mindus/assets/blocks/environment/stone-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone-wall1.png b/mindus/assets/blocks/environment/stone-wall1.png Binary files differdeleted file mode 100644 index 358e36e..0000000 --- a/mindus/assets/blocks/environment/stone-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone-wall2.png b/mindus/assets/blocks/environment/stone-wall2.png Binary files differdeleted file mode 100644 index 326d88f..0000000 --- a/mindus/assets/blocks/environment/stone-wall2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone1.png b/mindus/assets/blocks/environment/stone1.png Binary files differdeleted file mode 100644 index 73d29a1..0000000 --- a/mindus/assets/blocks/environment/stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone2.png b/mindus/assets/blocks/environment/stone2.png Binary files differdeleted file mode 100644 index c0b9dc6..0000000 --- a/mindus/assets/blocks/environment/stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/stone3.png b/mindus/assets/blocks/environment/stone3.png Binary files differdeleted file mode 100644 index df94fbd..0000000 --- a/mindus/assets/blocks/environment/stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/tainted-water.png b/mindus/assets/blocks/environment/tainted-water.png Binary files differdeleted file mode 100644 index 7a46957..0000000 --- a/mindus/assets/blocks/environment/tainted-water.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/tendrils1.png b/mindus/assets/blocks/environment/tendrils1.png Binary files differdeleted file mode 100644 index c9f8aa8..0000000 --- a/mindus/assets/blocks/environment/tendrils1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/tendrils2.png b/mindus/assets/blocks/environment/tendrils2.png Binary files differdeleted file mode 100644 index dc55153..0000000 --- a/mindus/assets/blocks/environment/tendrils2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/tendrils3.png b/mindus/assets/blocks/environment/tendrils3.png Binary files differdeleted file mode 100644 index 5a95f59..0000000 --- a/mindus/assets/blocks/environment/tendrils3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/vibrant-crystal-cluster1.png b/mindus/assets/blocks/environment/vibrant-crystal-cluster1.png Binary files differdeleted file mode 100644 index 0b9946b..0000000 --- a/mindus/assets/blocks/environment/vibrant-crystal-cluster1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/vibrant-crystal-cluster2.png b/mindus/assets/blocks/environment/vibrant-crystal-cluster2.png Binary files differdeleted file mode 100644 index db826af..0000000 --- a/mindus/assets/blocks/environment/vibrant-crystal-cluster2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/vibrant-crystal-cluster3.png b/mindus/assets/blocks/environment/vibrant-crystal-cluster3.png Binary files differdeleted file mode 100644 index 380e598..0000000 --- a/mindus/assets/blocks/environment/vibrant-crystal-cluster3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/white-tree-dead.png b/mindus/assets/blocks/environment/white-tree-dead.png Binary files differdeleted file mode 100644 index 1f25959..0000000 --- a/mindus/assets/blocks/environment/white-tree-dead.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-boulder1.png b/mindus/assets/blocks/environment/yellow-stone-boulder1.png Binary files differdeleted file mode 100644 index 3045f0a..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-boulder1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-boulder2.png b/mindus/assets/blocks/environment/yellow-stone-boulder2.png Binary files differdeleted file mode 100644 index 2b8e408..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-boulder2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-plates1.png b/mindus/assets/blocks/environment/yellow-stone-plates1.png Binary files differdeleted file mode 100644 index e4e4728..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-plates1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-plates2.png b/mindus/assets/blocks/environment/yellow-stone-plates2.png Binary files differdeleted file mode 100644 index 29364f9..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-plates2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-vent1.png b/mindus/assets/blocks/environment/yellow-stone-vent1.png Binary files differdeleted file mode 100644 index cc4f172..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-vent1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-vent2.png b/mindus/assets/blocks/environment/yellow-stone-vent2.png Binary files differdeleted file mode 100644 index 1125d80..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-vent2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-wall-large.png b/mindus/assets/blocks/environment/yellow-stone-wall-large.png Binary files differdeleted file mode 100644 index e8eafea..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone-wall1.png b/mindus/assets/blocks/environment/yellow-stone-wall1.png Binary files differdeleted file mode 100644 index 7f8a7e5..0000000 --- a/mindus/assets/blocks/environment/yellow-stone-wall1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone1.png b/mindus/assets/blocks/environment/yellow-stone1.png Binary files differdeleted file mode 100644 index 9b5b23c..0000000 --- a/mindus/assets/blocks/environment/yellow-stone1.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone2.png b/mindus/assets/blocks/environment/yellow-stone2.png Binary files differdeleted file mode 100644 index 6837526..0000000 --- a/mindus/assets/blocks/environment/yellow-stone2.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellow-stone3.png b/mindus/assets/blocks/environment/yellow-stone3.png Binary files differdeleted file mode 100644 index 2a73445..0000000 --- a/mindus/assets/blocks/environment/yellow-stone3.png +++ /dev/null diff --git a/mindus/assets/blocks/environment/yellowcoral.png b/mindus/assets/blocks/environment/yellowcoral.png Binary files differdeleted file mode 100644 index afad9c8..0000000 --- a/mindus/assets/blocks/environment/yellowcoral.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/bridge-conduit-arrow.png b/mindus/assets/blocks/liquid/bridge-conduit-arrow.png Binary files differdeleted file mode 100644 index 2740e90..0000000 --- a/mindus/assets/blocks/liquid/bridge-conduit-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/bridge-conduit-bridge.png b/mindus/assets/blocks/liquid/bridge-conduit-bridge.png Binary files differdeleted file mode 100644 index 6d31c10..0000000 --- a/mindus/assets/blocks/liquid/bridge-conduit-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/bridge-conduit-end.png b/mindus/assets/blocks/liquid/bridge-conduit-end.png Binary files differdeleted file mode 100644 index 940184b..0000000 --- a/mindus/assets/blocks/liquid/bridge-conduit-end.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/bridge-conduit.png b/mindus/assets/blocks/liquid/bridge-conduit.png Binary files differdeleted file mode 100644 index f630f96..0000000 --- a/mindus/assets/blocks/liquid/bridge-conduit.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-0-0.png b/mindus/assets/blocks/liquid/conduits/conduit-0-0.png Binary files differdeleted file mode 100644 index 15ba9bb..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-0-2.png b/mindus/assets/blocks/liquid/conduits/conduit-0-2.png Binary files differdeleted file mode 100644 index 13dad3b..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-0-h.png b/mindus/assets/blocks/liquid/conduits/conduit-1-0-h.png Binary files differdeleted file mode 100644 index 61ee4e8..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-0.png b/mindus/assets/blocks/liquid/conduits/conduit-1-0.png Binary files differdeleted file mode 100644 index 215a33a..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-1-h.png b/mindus/assets/blocks/liquid/conduits/conduit-1-1-h.png Binary files differdeleted file mode 100644 index e6dd640..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-1-v.png b/mindus/assets/blocks/liquid/conduits/conduit-1-1-v.png Binary files differdeleted file mode 100644 index f3457cd..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-1.png b/mindus/assets/blocks/liquid/conduits/conduit-1-1.png Binary files differdeleted file mode 100644 index 1379f29..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-2-h.png b/mindus/assets/blocks/liquid/conduits/conduit-1-2-h.png Binary files differdeleted file mode 100644 index 8e844b9..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-2.png b/mindus/assets/blocks/liquid/conduits/conduit-1-2.png Binary files differdeleted file mode 100644 index e6dd640..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-1-3.png b/mindus/assets/blocks/liquid/conduits/conduit-1-3.png Binary files differdeleted file mode 100644 index 61ee4e8..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-0-h.png b/mindus/assets/blocks/liquid/conduits/conduit-2-0-h.png Binary files differdeleted file mode 100644 index 20316a5..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-0-v.png b/mindus/assets/blocks/liquid/conduits/conduit-2-0-v.png Binary files differdeleted file mode 100644 index 89f0046..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-0.png b/mindus/assets/blocks/liquid/conduits/conduit-2-0.png Binary files differdeleted file mode 100644 index defe522..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-2.png b/mindus/assets/blocks/liquid/conduits/conduit-2-2.png Binary files differdeleted file mode 100644 index 4d70997..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-2-3-h.png b/mindus/assets/blocks/liquid/conduits/conduit-2-3-h.png Binary files differdeleted file mode 100644 index 6d01066..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-3-0-h.png b/mindus/assets/blocks/liquid/conduits/conduit-3-0-h.png Binary files differdeleted file mode 100644 index b61158e..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-3-0.png b/mindus/assets/blocks/liquid/conduits/conduit-3-0.png Binary files differdeleted file mode 100644 index 9683ba0..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-3-1.png b/mindus/assets/blocks/liquid/conduits/conduit-3-1.png Binary files differdeleted file mode 100644 index 1e5d060..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-3-3.png b/mindus/assets/blocks/liquid/conduits/conduit-3-3.png Binary files differdeleted file mode 100644 index 48a748d..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-4-0.png b/mindus/assets/blocks/liquid/conduits/conduit-4-0.png Binary files differdeleted file mode 100644 index 558b75d..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-4-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-4-1.png b/mindus/assets/blocks/liquid/conduits/conduit-4-1.png Binary files differdeleted file mode 100644 index 0c03820..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-4-3.png b/mindus/assets/blocks/liquid/conduits/conduit-4-3.png Binary files differdeleted file mode 100644 index b20c51d..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-bottom-0.png b/mindus/assets/blocks/liquid/conduits/conduit-bottom-0.png Binary files differdeleted file mode 100644 index a794853..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-bottom-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/conduit-bottom-1.png b/mindus/assets/blocks/liquid/conduits/conduit-bottom-1.png Binary files differdeleted file mode 100644 index aeeef59..0000000 --- a/mindus/assets/blocks/liquid/conduits/conduit-bottom-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-0.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-0-0.png Binary files differdeleted file mode 100644 index 4cade4e..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-1.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-0-1.png Binary files differdeleted file mode 100644 index 4a2c98d..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-2.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-0-2.png Binary files differdeleted file mode 100644 index 8a7262a..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-3.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-0-3.png Binary files differdeleted file mode 100644 index 80afc01..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-0-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-0-h.png Binary files differdeleted file mode 100644 index 109ede5..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-0.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-0.png Binary files differdeleted file mode 100644 index 94f689f..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1-h.png Binary files differdeleted file mode 100644 index fe8ad2b..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1-v.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1-v.png Binary files differdeleted file mode 100644 index 6312882..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1.png Binary files differdeleted file mode 100644 index 8fb1ea5..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-2-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-2-h.png Binary files differdeleted file mode 100644 index 6443295..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-2.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-2.png Binary files differdeleted file mode 100644 index fe8ad2b..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-3.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-1-3.png Binary files differdeleted file mode 100644 index 109ede5..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0-h.png Binary files differdeleted file mode 100644 index 19660c2..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0-v.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0-v.png Binary files differdeleted file mode 100644 index 29008a8..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0.png Binary files differdeleted file mode 100644 index 7bd7dae..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-1-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-2-1-h.png Binary files differdeleted file mode 100644 index bbdee9c..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-2.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-2-2.png Binary files differdeleted file mode 100644 index 0bbda2b..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-3-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-2-3-h.png Binary files differdeleted file mode 100644 index a97100e..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-0-h.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-3-0-h.png Binary files differdeleted file mode 100644 index d9cab71..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-0.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-3-0.png Binary files differdeleted file mode 100644 index 946a7a9..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-1.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-3-1.png Binary files differdeleted file mode 100644 index df12caa..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-3.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-3-3.png Binary files differdeleted file mode 100644 index 51a2fcb..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-4-1.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-4-1.png Binary files differdeleted file mode 100644 index b617458..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/plated-conduit-4-3.png b/mindus/assets/blocks/liquid/conduits/plated-conduit-4-3.png Binary files differdeleted file mode 100644 index bd19694..0000000 --- a/mindus/assets/blocks/liquid/conduits/plated-conduit-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-0.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-0.png Binary files differdeleted file mode 100644 index e97c0e1..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-2.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-2.png Binary files differdeleted file mode 100644 index 73c32ac..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-3.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-3.png Binary files differdeleted file mode 100644 index 5d104a8..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-0-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-0-h.png Binary files differdeleted file mode 100644 index 1f5af36..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-0.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-0.png Binary files differdeleted file mode 100644 index b967435..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1-h.png Binary files differdeleted file mode 100644 index 5b1e4e3..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1-v.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1-v.png Binary files differdeleted file mode 100644 index b6b1328..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1.png Binary files differdeleted file mode 100644 index 5bf489a..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-2-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-2-h.png Binary files differdeleted file mode 100644 index 0907c3e..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-2.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-2.png Binary files differdeleted file mode 100644 index 5b1e4e3..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-3.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-3.png Binary files differdeleted file mode 100644 index 1f5af36..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0-h.png Binary files differdeleted file mode 100644 index 90fdd36..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0-v.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0-v.png Binary files differdeleted file mode 100644 index 3b205bf..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0.png Binary files differdeleted file mode 100644 index ae563da..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-1-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-1-h.png Binary files differdeleted file mode 100644 index 0adfb39..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-2.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-2.png Binary files differdeleted file mode 100644 index 7bbddb5..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-3-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-3-h.png Binary files differdeleted file mode 100644 index fd38269..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-0-h.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-0-h.png Binary files differdeleted file mode 100644 index 96c3a73..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-0.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-0.png Binary files differdeleted file mode 100644 index 0b49250..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-1.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-1.png Binary files differdeleted file mode 100644 index 074c17a..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-3.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-3.png Binary files differdeleted file mode 100644 index a874674..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-0.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-0.png Binary files differdeleted file mode 100644 index d807f19..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-1.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-1.png Binary files differdeleted file mode 100644 index 2053317..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-3.png b/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-3.png Binary files differdeleted file mode 100644 index 660170e..0000000 --- a/mindus/assets/blocks/liquid/conduits/pulse-conduit-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-0.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-0.png Binary files differdeleted file mode 100644 index 448d07a..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-1.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-1.png Binary files differdeleted file mode 100644 index b15f447..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-2.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-2.png Binary files differdeleted file mode 100644 index 5aec990..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-3.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-3.png Binary files differdeleted file mode 100644 index e61572d..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-0-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-0-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-0-h.png Binary files differdeleted file mode 100644 index 7964512..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-0.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-0.png Binary files differdeleted file mode 100644 index fdb649c..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1-h.png Binary files differdeleted file mode 100644 index 4671ac4..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1-v.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1-v.png Binary files differdeleted file mode 100644 index 6cf4efd..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1.png Binary files differdeleted file mode 100644 index 523f009..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-2-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-2-h.png Binary files differdeleted file mode 100644 index ababa67..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-2-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-2.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-2.png Binary files differdeleted file mode 100644 index cb7f02f..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-3.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-3.png Binary files differdeleted file mode 100644 index 1a482f7..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-1-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0-h.png Binary files differdeleted file mode 100644 index 48ded48..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0-v.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0-v.png Binary files differdeleted file mode 100644 index 4e6a10e..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0-v.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0.png Binary files differdeleted file mode 100644 index cc3b39c..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-1-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-1-h.png Binary files differdeleted file mode 100644 index 2059f05..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-1-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-1.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-1.png Binary files differdeleted file mode 100644 index 38611a0..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-2.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-2.png Binary files differdeleted file mode 100644 index 0bb24ba..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-2.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-3-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-3-h.png Binary files differdeleted file mode 100644 index 2e3ee2f..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-3-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-3.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-3.png Binary files differdeleted file mode 100644 index 9f854fb..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-2-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-0-h.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-0-h.png Binary files differdeleted file mode 100644 index 0ed0aef..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-0-h.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-0.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-0.png Binary files differdeleted file mode 100644 index 615f6ef..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-1.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-1.png Binary files differdeleted file mode 100644 index 42de74b..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-3.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-3.png Binary files differdeleted file mode 100644 index 22b1555..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-3-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-0.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-0.png Binary files differdeleted file mode 100644 index 197dfc0..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-0.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-1.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-1.png Binary files differdeleted file mode 100644 index 5610b46..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-1.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-3.png b/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-3.png Binary files differdeleted file mode 100644 index 932f914..0000000 --- a/mindus/assets/blocks/liquid/conduits/reinforced-conduit-4-3.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/impulse-pump-liquid.png b/mindus/assets/blocks/liquid/impulse-pump-liquid.png Binary files differdeleted file mode 100644 index f2d696c..0000000 --- a/mindus/assets/blocks/liquid/impulse-pump-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/impulse-pump.png b/mindus/assets/blocks/liquid/impulse-pump.png Binary files differdeleted file mode 100644 index bf73079..0000000 --- a/mindus/assets/blocks/liquid/impulse-pump.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-container.png b/mindus/assets/blocks/liquid/liquid-container.png Binary files differdeleted file mode 100644 index 19bc701..0000000 --- a/mindus/assets/blocks/liquid/liquid-container.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-junction.png b/mindus/assets/blocks/liquid/liquid-junction.png Binary files differdeleted file mode 100644 index 1f34b73..0000000 --- a/mindus/assets/blocks/liquid/liquid-junction.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-router.png b/mindus/assets/blocks/liquid/liquid-router.png Binary files differdeleted file mode 100644 index 5621822..0000000 --- a/mindus/assets/blocks/liquid/liquid-router.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-source.png b/mindus/assets/blocks/liquid/liquid-source.png Binary files differdeleted file mode 100644 index c6f65ac..0000000 --- a/mindus/assets/blocks/liquid/liquid-source.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-tank-bottom.png b/mindus/assets/blocks/liquid/liquid-tank-bottom.png Binary files differdeleted file mode 100644 index 440f475..0000000 --- a/mindus/assets/blocks/liquid/liquid-tank-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-tank.png b/mindus/assets/blocks/liquid/liquid-tank.png Binary files differdeleted file mode 100644 index b9dc52a..0000000 --- a/mindus/assets/blocks/liquid/liquid-tank.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/liquid-void.png b/mindus/assets/blocks/liquid/liquid-void.png Binary files differdeleted file mode 100644 index 956cfe8..0000000 --- a/mindus/assets/blocks/liquid/liquid-void.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/mechanical-pump-liquid.png b/mindus/assets/blocks/liquid/mechanical-pump-liquid.png Binary files differdeleted file mode 100644 index f2d696c..0000000 --- a/mindus/assets/blocks/liquid/mechanical-pump-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/mechanical-pump.png b/mindus/assets/blocks/liquid/mechanical-pump.png Binary files differdeleted file mode 100644 index 9ffc837..0000000 --- a/mindus/assets/blocks/liquid/mechanical-pump.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/phase-conduit-arrow.png b/mindus/assets/blocks/liquid/phase-conduit-arrow.png Binary files differdeleted file mode 100644 index 9bd3c6c..0000000 --- a/mindus/assets/blocks/liquid/phase-conduit-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/phase-conduit-bridge.png b/mindus/assets/blocks/liquid/phase-conduit-bridge.png Binary files differdeleted file mode 100644 index 6eab161..0000000 --- a/mindus/assets/blocks/liquid/phase-conduit-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/phase-conduit-end.png b/mindus/assets/blocks/liquid/phase-conduit-end.png Binary files differdeleted file mode 100644 index d8b3f61..0000000 --- a/mindus/assets/blocks/liquid/phase-conduit-end.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/phase-conduit.png b/mindus/assets/blocks/liquid/phase-conduit.png Binary files differdeleted file mode 100644 index 2f7b8cd..0000000 --- a/mindus/assets/blocks/liquid/phase-conduit.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-arrow.png b/mindus/assets/blocks/liquid/reinforced-bridge-conduit-arrow.png Binary files differdeleted file mode 100644 index d7c908d..0000000 --- a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-bridge-liquid.png b/mindus/assets/blocks/liquid/reinforced-bridge-conduit-bridge-liquid.png Binary files differdeleted file mode 100644 index f5b99bf..0000000 --- a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-bridge-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-bridge.png b/mindus/assets/blocks/liquid/reinforced-bridge-conduit-bridge.png Binary files differdeleted file mode 100644 index c4d4321..0000000 --- a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-bridge.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-dir.png b/mindus/assets/blocks/liquid/reinforced-bridge-conduit-dir.png Binary files differdeleted file mode 100644 index e1028a7..0000000 --- a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-dir.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-liquid.png b/mindus/assets/blocks/liquid/reinforced-bridge-conduit-liquid.png Binary files differdeleted file mode 100644 index 5a6d0a5..0000000 --- a/mindus/assets/blocks/liquid/reinforced-bridge-conduit-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-bridge-conduit.png b/mindus/assets/blocks/liquid/reinforced-bridge-conduit.png Binary files differdeleted file mode 100644 index 7af3870..0000000 --- a/mindus/assets/blocks/liquid/reinforced-bridge-conduit.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-container.png b/mindus/assets/blocks/liquid/reinforced-liquid-container.png Binary files differdeleted file mode 100644 index 434b1ac..0000000 --- a/mindus/assets/blocks/liquid/reinforced-liquid-container.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-junction.png b/mindus/assets/blocks/liquid/reinforced-liquid-junction.png Binary files differdeleted file mode 100644 index bfb52e9..0000000 --- a/mindus/assets/blocks/liquid/reinforced-liquid-junction.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-liquid-tank-bottom.png b/mindus/assets/blocks/liquid/reinforced-liquid-tank-bottom.png Binary files differdeleted file mode 100644 index 2b69b7b..0000000 --- a/mindus/assets/blocks/liquid/reinforced-liquid-tank-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-pump-liquid.png b/mindus/assets/blocks/liquid/reinforced-pump-liquid.png Binary files differdeleted file mode 100644 index 04173af..0000000 --- a/mindus/assets/blocks/liquid/reinforced-pump-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/reinforced-pump.png b/mindus/assets/blocks/liquid/reinforced-pump.png Binary files differdeleted file mode 100644 index 51f06ca..0000000 --- a/mindus/assets/blocks/liquid/reinforced-pump.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/rotary-pump-liquid.png b/mindus/assets/blocks/liquid/rotary-pump-liquid.png Binary files differdeleted file mode 100644 index f2d696c..0000000 --- a/mindus/assets/blocks/liquid/rotary-pump-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/liquid/rotary-pump.png b/mindus/assets/blocks/liquid/rotary-pump.png Binary files differdeleted file mode 100644 index 5c82434..0000000 --- a/mindus/assets/blocks/liquid/rotary-pump.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/canvas.png b/mindus/assets/blocks/logic/canvas.png Binary files differdeleted file mode 100644 index a70c306..0000000 --- a/mindus/assets/blocks/logic/canvas.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/hyper-processor.png b/mindus/assets/blocks/logic/hyper-processor.png Binary files differdeleted file mode 100644 index 1915cd9..0000000 --- a/mindus/assets/blocks/logic/hyper-processor.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/large-logic-display.png b/mindus/assets/blocks/logic/large-logic-display.png Binary files differdeleted file mode 100644 index bf64634..0000000 --- a/mindus/assets/blocks/logic/large-logic-display.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/logic-display.png b/mindus/assets/blocks/logic/logic-display.png Binary files differdeleted file mode 100644 index bd2fc32..0000000 --- a/mindus/assets/blocks/logic/logic-display.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/logic-processor.png b/mindus/assets/blocks/logic/logic-processor.png Binary files differdeleted file mode 100644 index af50383..0000000 --- a/mindus/assets/blocks/logic/logic-processor.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/memory-bank.png b/mindus/assets/blocks/logic/memory-bank.png Binary files differdeleted file mode 100644 index 5ea0e6c..0000000 --- a/mindus/assets/blocks/logic/memory-bank.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/memory-cell.png b/mindus/assets/blocks/logic/memory-cell.png Binary files differdeleted file mode 100644 index 34a8c2c..0000000 --- a/mindus/assets/blocks/logic/memory-cell.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/message.png b/mindus/assets/blocks/logic/message.png Binary files differdeleted file mode 100644 index 48aedde..0000000 --- a/mindus/assets/blocks/logic/message.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/micro-processor.png b/mindus/assets/blocks/logic/micro-processor.png Binary files differdeleted file mode 100644 index 76f4885..0000000 --- a/mindus/assets/blocks/logic/micro-processor.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/reinforced-message.png b/mindus/assets/blocks/logic/reinforced-message.png Binary files differdeleted file mode 100644 index 37df68d..0000000 --- a/mindus/assets/blocks/logic/reinforced-message.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/switch-on.png b/mindus/assets/blocks/logic/switch-on.png Binary files differdeleted file mode 100644 index 68e1d2d..0000000 --- a/mindus/assets/blocks/logic/switch-on.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/switch.png b/mindus/assets/blocks/logic/switch.png Binary files differdeleted file mode 100644 index 5dcd363..0000000 --- a/mindus/assets/blocks/logic/switch.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tile-logic-display.png b/mindus/assets/blocks/logic/tile-logic-display.png Binary files differdeleted file mode 100644 index 977f5d8..0000000 --- a/mindus/assets/blocks/logic/tile-logic-display.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png Binary files differdeleted file mode 100644 index 9be4484..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-0.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png Binary files differdeleted file mode 100644 index f76df94..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-1.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png Binary files differdeleted file mode 100644 index 760d3b4..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-10.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png Binary files differdeleted file mode 100644 index f8f0009..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-11.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png Binary files differdeleted file mode 100644 index bc3ef87..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-12.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png Binary files differdeleted file mode 100644 index 3917ed0..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-13.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png Binary files differdeleted file mode 100644 index 9be8d2d..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-14.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png Binary files differdeleted file mode 100644 index 24cbf45..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-15.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png Binary files differdeleted file mode 100644 index 030c04d..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-16.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png Binary files differdeleted file mode 100644 index 2e10d7a..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-17.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png Binary files differdeleted file mode 100644 index 32e6748..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-18.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png Binary files differdeleted file mode 100644 index e319f4d..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-19.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png Binary files differdeleted file mode 100644 index a9aee0b..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-2.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png Binary files differdeleted file mode 100644 index d9e5150..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-20.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png Binary files differdeleted file mode 100644 index 8e2c760..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-21.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png Binary files differdeleted file mode 100644 index 4195407..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-22.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png Binary files differdeleted file mode 100644 index a588cd0..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-23.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png Binary files differdeleted file mode 100644 index f516680..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-24.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png Binary files differdeleted file mode 100644 index 2b59262..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-25.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png Binary files differdeleted file mode 100644 index 35af5d4..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-26.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png Binary files differdeleted file mode 100644 index 3941118..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-27.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png Binary files differdeleted file mode 100644 index 3517bec..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-28.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png Binary files differdeleted file mode 100644 index cd705e7..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-29.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png Binary files differdeleted file mode 100644 index 028cf04..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-3.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png Binary files differdeleted file mode 100644 index f6a711b..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-30.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png Binary files differdeleted file mode 100644 index 68aebb4..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-31.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png Binary files differdeleted file mode 100644 index 883257c..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-32.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png Binary files differdeleted file mode 100644 index f3fb63a..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-33.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png Binary files differdeleted file mode 100644 index 537303f..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-34.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png Binary files differdeleted file mode 100644 index 932e934..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-35.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png Binary files differdeleted file mode 100644 index 50237ac..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-36.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png Binary files differdeleted file mode 100644 index 7ff182b..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-37.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png Binary files differdeleted file mode 100644 index e4d823c..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-38.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png Binary files differdeleted file mode 100644 index b037e0d..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-39.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png Binary files differdeleted file mode 100644 index cdc2ed9..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-4.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png Binary files differdeleted file mode 100644 index 5bf94a0..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-40.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png Binary files differdeleted file mode 100644 index 9086970..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-41.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png Binary files differdeleted file mode 100644 index 653c075..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-42.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png Binary files differdeleted file mode 100644 index 03b8c5a..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-43.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png Binary files differdeleted file mode 100644 index fcad3bb..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-44.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png Binary files differdeleted file mode 100644 index c25438f..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-45.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png Binary files differdeleted file mode 100644 index aa1d559..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-46.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png Binary files differdeleted file mode 100644 index bb8dfda..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-5.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png Binary files differdeleted file mode 100644 index a389f86..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-6.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png Binary files differdeleted file mode 100644 index 5fa02ec..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-7.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png Binary files differdeleted file mode 100644 index 4d4a5dc..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-8.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png b/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png Binary files differdeleted file mode 100644 index 0ac5dd1..0000000 --- a/mindus/assets/blocks/logic/tiled-display/tile-logic-display-9.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/world-cell.png b/mindus/assets/blocks/logic/world-cell.png Binary files differdeleted file mode 100644 index cfc5d87..0000000 --- a/mindus/assets/blocks/logic/world-cell.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/world-message.png b/mindus/assets/blocks/logic/world-message.png Binary files differdeleted file mode 100644 index a94bb57..0000000 --- a/mindus/assets/blocks/logic/world-message.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/world-processor.png b/mindus/assets/blocks/logic/world-processor.png Binary files differdeleted file mode 100644 index 01e1a0c..0000000 --- a/mindus/assets/blocks/logic/world-processor.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/world-switch-on.png b/mindus/assets/blocks/logic/world-switch-on.png Binary files differdeleted file mode 100644 index 47d19d9..0000000 --- a/mindus/assets/blocks/logic/world-switch-on.png +++ /dev/null diff --git a/mindus/assets/blocks/logic/world-switch.png b/mindus/assets/blocks/logic/world-switch.png Binary files differdeleted file mode 100644 index 8afcf14..0000000 --- a/mindus/assets/blocks/logic/world-switch.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/constructor-top.png b/mindus/assets/blocks/payload/constructor-top.png Binary files differdeleted file mode 100644 index 7db4670..0000000 --- a/mindus/assets/blocks/payload/constructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/constructor.png b/mindus/assets/blocks/payload/constructor.png Binary files differdeleted file mode 100644 index 8740a1b..0000000 --- a/mindus/assets/blocks/payload/constructor.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/deconstructor-top.png b/mindus/assets/blocks/payload/deconstructor-top.png Binary files differdeleted file mode 100644 index 8cee26d..0000000 --- a/mindus/assets/blocks/payload/deconstructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/deconstructor.png b/mindus/assets/blocks/payload/deconstructor.png Binary files differdeleted file mode 100644 index 1dc96a1..0000000 --- a/mindus/assets/blocks/payload/deconstructor.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-in-3-dark.png b/mindus/assets/blocks/payload/factory-in-3-dark.png Binary files differdeleted file mode 100644 index 21f3c72..0000000 --- a/mindus/assets/blocks/payload/factory-in-3-dark.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-in-3.png b/mindus/assets/blocks/payload/factory-in-3.png Binary files differdeleted file mode 100644 index 47c8a1c..0000000 --- a/mindus/assets/blocks/payload/factory-in-3.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-in-5-dark.png b/mindus/assets/blocks/payload/factory-in-5-dark.png Binary files differdeleted file mode 100644 index 49b528b..0000000 --- a/mindus/assets/blocks/payload/factory-in-5-dark.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-in-5.png b/mindus/assets/blocks/payload/factory-in-5.png Binary files differdeleted file mode 100644 index 969d1b7..0000000 --- a/mindus/assets/blocks/payload/factory-in-5.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-out-3-dark.png b/mindus/assets/blocks/payload/factory-out-3-dark.png Binary files differdeleted file mode 100644 index c9e11fa..0000000 --- a/mindus/assets/blocks/payload/factory-out-3-dark.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-out-3.png b/mindus/assets/blocks/payload/factory-out-3.png Binary files differdeleted file mode 100644 index 4d84664..0000000 --- a/mindus/assets/blocks/payload/factory-out-3.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-out-5-dark.png b/mindus/assets/blocks/payload/factory-out-5-dark.png Binary files differdeleted file mode 100644 index 87f5a34..0000000 --- a/mindus/assets/blocks/payload/factory-out-5-dark.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-out-5.png b/mindus/assets/blocks/payload/factory-out-5.png Binary files differdeleted file mode 100644 index 713f5fe..0000000 --- a/mindus/assets/blocks/payload/factory-out-5.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-out-7.png b/mindus/assets/blocks/payload/factory-out-7.png Binary files differdeleted file mode 100644 index d2946b3..0000000 --- a/mindus/assets/blocks/payload/factory-out-7.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-out-9.png b/mindus/assets/blocks/payload/factory-out-9.png Binary files differdeleted file mode 100644 index 840ca36..0000000 --- a/mindus/assets/blocks/payload/factory-out-9.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/factory-top-3.png b/mindus/assets/blocks/payload/factory-top-3.png Binary files differdeleted file mode 100644 index ff972ca..0000000 --- a/mindus/assets/blocks/payload/factory-top-3.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/large-constructor-top.png b/mindus/assets/blocks/payload/large-constructor-top.png Binary files differdeleted file mode 100644 index b664c4c..0000000 --- a/mindus/assets/blocks/payload/large-constructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/large-constructor.png b/mindus/assets/blocks/payload/large-constructor.png Binary files differdeleted file mode 100644 index ec19fb3..0000000 --- a/mindus/assets/blocks/payload/large-constructor.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/large-payload-mass-driver.png b/mindus/assets/blocks/payload/large-payload-mass-driver.png Binary files differdeleted file mode 100644 index f5745e1..0000000 --- a/mindus/assets/blocks/payload/large-payload-mass-driver.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-conveyor.png b/mindus/assets/blocks/payload/payload-conveyor.png Binary files differdeleted file mode 100644 index 6909b63..0000000 --- a/mindus/assets/blocks/payload/payload-conveyor.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-loader-top.png b/mindus/assets/blocks/payload/payload-loader-top.png Binary files differdeleted file mode 100644 index 97296ba..0000000 --- a/mindus/assets/blocks/payload/payload-loader-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-loader.png b/mindus/assets/blocks/payload/payload-loader.png Binary files differdeleted file mode 100644 index b950f6d..0000000 --- a/mindus/assets/blocks/payload/payload-loader.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-mass-driver.png b/mindus/assets/blocks/payload/payload-mass-driver.png Binary files differdeleted file mode 100644 index 24875c1..0000000 --- a/mindus/assets/blocks/payload/payload-mass-driver.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-router.png b/mindus/assets/blocks/payload/payload-router.png Binary files differdeleted file mode 100644 index 8cb68e4..0000000 --- a/mindus/assets/blocks/payload/payload-router.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-source-top.png b/mindus/assets/blocks/payload/payload-source-top.png Binary files differdeleted file mode 100644 index 31136c7..0000000 --- a/mindus/assets/blocks/payload/payload-source-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-unloader-top.png b/mindus/assets/blocks/payload/payload-unloader-top.png Binary files differdeleted file mode 100644 index bd4c21e..0000000 --- a/mindus/assets/blocks/payload/payload-unloader-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-unloader.png b/mindus/assets/blocks/payload/payload-unloader.png Binary files differdeleted file mode 100644 index d62f642..0000000 --- a/mindus/assets/blocks/payload/payload-unloader.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-void-top.png b/mindus/assets/blocks/payload/payload-void-top.png Binary files differdeleted file mode 100644 index 48a8592..0000000 --- a/mindus/assets/blocks/payload/payload-void-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/payload-void.png b/mindus/assets/blocks/payload/payload-void.png Binary files differdeleted file mode 100644 index b1fac7d..0000000 --- a/mindus/assets/blocks/payload/payload-void.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/reinforced-payload-conveyor.png b/mindus/assets/blocks/payload/reinforced-payload-conveyor.png Binary files differdeleted file mode 100644 index deaa4ed..0000000 --- a/mindus/assets/blocks/payload/reinforced-payload-conveyor.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/reinforced-payload-router.png b/mindus/assets/blocks/payload/reinforced-payload-router.png Binary files differdeleted file mode 100644 index c4be5da..0000000 --- a/mindus/assets/blocks/payload/reinforced-payload-router.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/small-deconstructor-top.png b/mindus/assets/blocks/payload/small-deconstructor-top.png Binary files differdeleted file mode 100644 index 316b304..0000000 --- a/mindus/assets/blocks/payload/small-deconstructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/payload/small-deconstructor.png b/mindus/assets/blocks/payload/small-deconstructor.png Binary files differdeleted file mode 100644 index 2b3337e..0000000 --- a/mindus/assets/blocks/payload/small-deconstructor.png +++ /dev/null diff --git a/mindus/assets/blocks/power/battery-large.png b/mindus/assets/blocks/power/battery-large.png Binary files differdeleted file mode 100644 index 7513fe5..0000000 --- a/mindus/assets/blocks/power/battery-large.png +++ /dev/null diff --git a/mindus/assets/blocks/power/battery.png b/mindus/assets/blocks/power/battery.png Binary files differdeleted file mode 100644 index 4282103..0000000 --- a/mindus/assets/blocks/power/battery.png +++ /dev/null diff --git a/mindus/assets/blocks/power/beam-link.png b/mindus/assets/blocks/power/beam-link.png Binary files differdeleted file mode 100644 index a4ebbb9..0000000 --- a/mindus/assets/blocks/power/beam-link.png +++ /dev/null diff --git a/mindus/assets/blocks/power/beam-node.png b/mindus/assets/blocks/power/beam-node.png Binary files differdeleted file mode 100644 index ba86cc0..0000000 --- a/mindus/assets/blocks/power/beam-node.png +++ /dev/null diff --git a/mindus/assets/blocks/power/beam-tower.png b/mindus/assets/blocks/power/beam-tower.png Binary files differdeleted file mode 100644 index 17da542..0000000 --- a/mindus/assets/blocks/power/beam-tower.png +++ /dev/null diff --git a/mindus/assets/blocks/power/chemical-combustion-chamber.png b/mindus/assets/blocks/power/chemical-combustion-chamber.png Binary files differdeleted file mode 100644 index 26770b5..0000000 --- a/mindus/assets/blocks/power/chemical-combustion-chamber.png +++ /dev/null diff --git a/mindus/assets/blocks/power/combustion-generator.png b/mindus/assets/blocks/power/combustion-generator.png Binary files differdeleted file mode 100644 index ee7caae..0000000 --- a/mindus/assets/blocks/power/combustion-generator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/differential-generator-liquid.png b/mindus/assets/blocks/power/differential-generator-liquid.png Binary files differdeleted file mode 100644 index 081edf7..0000000 --- a/mindus/assets/blocks/power/differential-generator-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/power/differential-generator.png b/mindus/assets/blocks/power/differential-generator.png Binary files differdeleted file mode 100644 index 42f1fbf..0000000 --- a/mindus/assets/blocks/power/differential-generator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/diode-arrow.png b/mindus/assets/blocks/power/diode-arrow.png Binary files differdeleted file mode 100644 index a34dd68..0000000 --- a/mindus/assets/blocks/power/diode-arrow.png +++ /dev/null diff --git a/mindus/assets/blocks/power/diode.png b/mindus/assets/blocks/power/diode.png Binary files differdeleted file mode 100644 index 19f3990..0000000 --- a/mindus/assets/blocks/power/diode.png +++ /dev/null diff --git a/mindus/assets/blocks/power/flux-reactor-bottom.png b/mindus/assets/blocks/power/flux-reactor-bottom.png Binary files differdeleted file mode 100644 index 2c2d987..0000000 --- a/mindus/assets/blocks/power/flux-reactor-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/power/flux-reactor-mid.png b/mindus/assets/blocks/power/flux-reactor-mid.png Binary files differdeleted file mode 100644 index 5f3b0df..0000000 --- a/mindus/assets/blocks/power/flux-reactor-mid.png +++ /dev/null diff --git a/mindus/assets/blocks/power/flux-reactor.png b/mindus/assets/blocks/power/flux-reactor.png Binary files differdeleted file mode 100644 index 55d3d2b..0000000 --- a/mindus/assets/blocks/power/flux-reactor.png +++ /dev/null diff --git a/mindus/assets/blocks/power/illuminator.png b/mindus/assets/blocks/power/illuminator.png Binary files differdeleted file mode 100644 index 5ec0f18..0000000 --- a/mindus/assets/blocks/power/illuminator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/impact-reactor-bottom.png b/mindus/assets/blocks/power/impact-reactor-bottom.png Binary files differdeleted file mode 100644 index 0ac351d..0000000 --- a/mindus/assets/blocks/power/impact-reactor-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/power/impact-reactor.png b/mindus/assets/blocks/power/impact-reactor.png Binary files differdeleted file mode 100644 index 4ea795a..0000000 --- a/mindus/assets/blocks/power/impact-reactor.png +++ /dev/null diff --git a/mindus/assets/blocks/power/neoplasia-reactor-bottom.png b/mindus/assets/blocks/power/neoplasia-reactor-bottom.png Binary files differdeleted file mode 100644 index 8c106dc..0000000 --- a/mindus/assets/blocks/power/neoplasia-reactor-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/power/neoplasia-reactor-center.png b/mindus/assets/blocks/power/neoplasia-reactor-center.png Binary files differdeleted file mode 100644 index 30e3a57..0000000 --- a/mindus/assets/blocks/power/neoplasia-reactor-center.png +++ /dev/null diff --git a/mindus/assets/blocks/power/neoplasia-reactor.png b/mindus/assets/blocks/power/neoplasia-reactor.png Binary files differdeleted file mode 100644 index 445f340..0000000 --- a/mindus/assets/blocks/power/neoplasia-reactor.png +++ /dev/null diff --git a/mindus/assets/blocks/power/power-node-large.png b/mindus/assets/blocks/power/power-node-large.png Binary files differdeleted file mode 100644 index 495de11..0000000 --- a/mindus/assets/blocks/power/power-node-large.png +++ /dev/null diff --git a/mindus/assets/blocks/power/power-node.png b/mindus/assets/blocks/power/power-node.png Binary files differdeleted file mode 100644 index 22af588..0000000 --- a/mindus/assets/blocks/power/power-node.png +++ /dev/null diff --git a/mindus/assets/blocks/power/power-source.png b/mindus/assets/blocks/power/power-source.png Binary files differdeleted file mode 100644 index c7210da..0000000 --- a/mindus/assets/blocks/power/power-source.png +++ /dev/null diff --git a/mindus/assets/blocks/power/power-void.png b/mindus/assets/blocks/power/power-void.png Binary files differdeleted file mode 100644 index 92354a9..0000000 --- a/mindus/assets/blocks/power/power-void.png +++ /dev/null diff --git a/mindus/assets/blocks/power/pyrolysis-generator.png b/mindus/assets/blocks/power/pyrolysis-generator.png Binary files differdeleted file mode 100644 index 890ac4e..0000000 --- a/mindus/assets/blocks/power/pyrolysis-generator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/rtg-generator.png b/mindus/assets/blocks/power/rtg-generator.png Binary files differdeleted file mode 100644 index aefdc12..0000000 --- a/mindus/assets/blocks/power/rtg-generator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/solar-panel-large.png b/mindus/assets/blocks/power/solar-panel-large.png Binary files differdeleted file mode 100644 index e292111..0000000 --- a/mindus/assets/blocks/power/solar-panel-large.png +++ /dev/null diff --git a/mindus/assets/blocks/power/solar-panel.png b/mindus/assets/blocks/power/solar-panel.png Binary files differdeleted file mode 100644 index 61ef3f0..0000000 --- a/mindus/assets/blocks/power/solar-panel.png +++ /dev/null diff --git a/mindus/assets/blocks/power/steam-generator-liquid.png b/mindus/assets/blocks/power/steam-generator-liquid.png Binary files differdeleted file mode 100644 index 91db8f2..0000000 --- a/mindus/assets/blocks/power/steam-generator-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/power/steam-generator.png b/mindus/assets/blocks/power/steam-generator.png Binary files differdeleted file mode 100644 index 2bdb951..0000000 --- a/mindus/assets/blocks/power/steam-generator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/thermal-generator.png b/mindus/assets/blocks/power/thermal-generator.png Binary files differdeleted file mode 100644 index f5e9dba..0000000 --- a/mindus/assets/blocks/power/thermal-generator.png +++ /dev/null diff --git a/mindus/assets/blocks/power/thorium-reactor.png b/mindus/assets/blocks/power/thorium-reactor.png Binary files differdeleted file mode 100644 index f6a7994..0000000 --- a/mindus/assets/blocks/power/thorium-reactor.png +++ /dev/null diff --git a/mindus/assets/blocks/power/turbine-condenser.png b/mindus/assets/blocks/power/turbine-condenser.png Binary files differdeleted file mode 100644 index bc7f761..0000000 --- a/mindus/assets/blocks/power/turbine-condenser.png +++ /dev/null diff --git a/mindus/assets/blocks/production/atmospheric-concentrator-bottom.png b/mindus/assets/blocks/production/atmospheric-concentrator-bottom.png Binary files differdeleted file mode 100644 index 4082ee1..0000000 --- a/mindus/assets/blocks/production/atmospheric-concentrator-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/atmospheric-concentrator.png b/mindus/assets/blocks/production/atmospheric-concentrator.png Binary files differdeleted file mode 100644 index ad5690f..0000000 --- a/mindus/assets/blocks/production/atmospheric-concentrator.png +++ /dev/null diff --git a/mindus/assets/blocks/production/blast-mixer.png b/mindus/assets/blocks/production/blast-mixer.png Binary files differdeleted file mode 100644 index b2e0adb..0000000 --- a/mindus/assets/blocks/production/blast-mixer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/carbide-crucible-bottom.png b/mindus/assets/blocks/production/carbide-crucible-bottom.png Binary files differdeleted file mode 100644 index 22ae9dc..0000000 --- a/mindus/assets/blocks/production/carbide-crucible-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/carbide-crucible.png b/mindus/assets/blocks/production/carbide-crucible.png Binary files differdeleted file mode 100644 index bb1ebf4..0000000 --- a/mindus/assets/blocks/production/carbide-crucible.png +++ /dev/null diff --git a/mindus/assets/blocks/production/coal-centrifuge.png b/mindus/assets/blocks/production/coal-centrifuge.png Binary files differdeleted file mode 100644 index 44a9e66..0000000 --- a/mindus/assets/blocks/production/coal-centrifuge.png +++ /dev/null diff --git a/mindus/assets/blocks/production/cryofluid-mixer.png b/mindus/assets/blocks/production/cryofluid-mixer.png Binary files differdeleted file mode 100644 index 43ed388..0000000 --- a/mindus/assets/blocks/production/cryofluid-mixer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/cultivator.png b/mindus/assets/blocks/production/cultivator.png Binary files differdeleted file mode 100644 index 805253c..0000000 --- a/mindus/assets/blocks/production/cultivator.png +++ /dev/null diff --git a/mindus/assets/blocks/production/cyanogen-synthesizer-bottom.png b/mindus/assets/blocks/production/cyanogen-synthesizer-bottom.png Binary files differdeleted file mode 100644 index 91824e3..0000000 --- a/mindus/assets/blocks/production/cyanogen-synthesizer-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/cyanogen-synthesizer.png b/mindus/assets/blocks/production/cyanogen-synthesizer.png Binary files differdeleted file mode 100644 index 3cae436..0000000 --- a/mindus/assets/blocks/production/cyanogen-synthesizer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/disassembler-bottom.png b/mindus/assets/blocks/production/disassembler-bottom.png Binary files differdeleted file mode 100644 index e12a0c6..0000000 --- a/mindus/assets/blocks/production/disassembler-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/disassembler.png b/mindus/assets/blocks/production/disassembler.png Binary files differdeleted file mode 100644 index 5a432bf..0000000 --- a/mindus/assets/blocks/production/disassembler.png +++ /dev/null diff --git a/mindus/assets/blocks/production/electric-heater-top1.png b/mindus/assets/blocks/production/electric-heater-top1.png Binary files differdeleted file mode 100644 index 12cf9db..0000000 --- a/mindus/assets/blocks/production/electric-heater-top1.png +++ /dev/null diff --git a/mindus/assets/blocks/production/electric-heater-top2.png b/mindus/assets/blocks/production/electric-heater-top2.png Binary files differdeleted file mode 100644 index f4f84ab..0000000 --- a/mindus/assets/blocks/production/electric-heater-top2.png +++ /dev/null diff --git a/mindus/assets/blocks/production/electric-heater.png b/mindus/assets/blocks/production/electric-heater.png Binary files differdeleted file mode 100644 index 70637d7..0000000 --- a/mindus/assets/blocks/production/electric-heater.png +++ /dev/null diff --git a/mindus/assets/blocks/production/electrolyzer-bottom.png b/mindus/assets/blocks/production/electrolyzer-bottom.png Binary files differdeleted file mode 100644 index e133e4e..0000000 --- a/mindus/assets/blocks/production/electrolyzer-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/electrolyzer.png b/mindus/assets/blocks/production/electrolyzer.png Binary files differdeleted file mode 100644 index 272184f..0000000 --- a/mindus/assets/blocks/production/electrolyzer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-reactor-top1.png b/mindus/assets/blocks/production/heat-reactor-top1.png Binary files differdeleted file mode 100644 index b9648a8..0000000 --- a/mindus/assets/blocks/production/heat-reactor-top1.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-reactor-top2.png b/mindus/assets/blocks/production/heat-reactor-top2.png Binary files differdeleted file mode 100644 index f0415fd..0000000 --- a/mindus/assets/blocks/production/heat-reactor-top2.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-reactor.png b/mindus/assets/blocks/production/heat-reactor.png Binary files differdeleted file mode 100644 index 4f5c72d..0000000 --- a/mindus/assets/blocks/production/heat-reactor.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-redirector-top2.png b/mindus/assets/blocks/production/heat-redirector-top2.png Binary files differdeleted file mode 100644 index 8f554e8..0000000 --- a/mindus/assets/blocks/production/heat-redirector-top2.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-redirector.png b/mindus/assets/blocks/production/heat-redirector.png Binary files differdeleted file mode 100644 index 65ea982..0000000 --- a/mindus/assets/blocks/production/heat-redirector.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-router-top1.png b/mindus/assets/blocks/production/heat-router-top1.png Binary files differdeleted file mode 100644 index 27bf1ca..0000000 --- a/mindus/assets/blocks/production/heat-router-top1.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-router.png b/mindus/assets/blocks/production/heat-router.png Binary files differdeleted file mode 100644 index bd22dfe..0000000 --- a/mindus/assets/blocks/production/heat-router.png +++ /dev/null diff --git a/mindus/assets/blocks/production/heat-source.png b/mindus/assets/blocks/production/heat-source.png Binary files differdeleted file mode 100644 index facde20..0000000 --- a/mindus/assets/blocks/production/heat-source.png +++ /dev/null diff --git a/mindus/assets/blocks/production/incinerator.png b/mindus/assets/blocks/production/incinerator.png Binary files differdeleted file mode 100644 index 7251cc1..0000000 --- a/mindus/assets/blocks/production/incinerator.png +++ /dev/null diff --git a/mindus/assets/blocks/production/kiln.png b/mindus/assets/blocks/production/kiln.png Binary files differdeleted file mode 100644 index 7fb4dcb..0000000 --- a/mindus/assets/blocks/production/kiln.png +++ /dev/null diff --git a/mindus/assets/blocks/production/melter.png b/mindus/assets/blocks/production/melter.png Binary files differdeleted file mode 100644 index 3ff8633..0000000 --- a/mindus/assets/blocks/production/melter.png +++ /dev/null diff --git a/mindus/assets/blocks/production/multi-press.png b/mindus/assets/blocks/production/multi-press.png Binary files differdeleted file mode 100644 index 46d7ac8..0000000 --- a/mindus/assets/blocks/production/multi-press.png +++ /dev/null diff --git a/mindus/assets/blocks/production/oxidation-chamber-top1.png b/mindus/assets/blocks/production/oxidation-chamber-top1.png Binary files differdeleted file mode 100644 index c4fbf98..0000000 --- a/mindus/assets/blocks/production/oxidation-chamber-top1.png +++ /dev/null diff --git a/mindus/assets/blocks/production/oxidation-chamber-top2.png b/mindus/assets/blocks/production/oxidation-chamber-top2.png Binary files differdeleted file mode 100644 index 281930b..0000000 --- a/mindus/assets/blocks/production/oxidation-chamber-top2.png +++ /dev/null diff --git a/mindus/assets/blocks/production/oxidation-chamber.png b/mindus/assets/blocks/production/oxidation-chamber.png Binary files differdeleted file mode 100644 index 9c58748..0000000 --- a/mindus/assets/blocks/production/oxidation-chamber.png +++ /dev/null diff --git a/mindus/assets/blocks/production/phase-heater-top1.png b/mindus/assets/blocks/production/phase-heater-top1.png Binary files differdeleted file mode 100644 index c0f2131..0000000 --- a/mindus/assets/blocks/production/phase-heater-top1.png +++ /dev/null diff --git a/mindus/assets/blocks/production/phase-heater-top2.png b/mindus/assets/blocks/production/phase-heater-top2.png Binary files differdeleted file mode 100644 index f03df8d..0000000 --- a/mindus/assets/blocks/production/phase-heater-top2.png +++ /dev/null diff --git a/mindus/assets/blocks/production/phase-heater.png b/mindus/assets/blocks/production/phase-heater.png Binary files differdeleted file mode 100644 index 4b3a398..0000000 --- a/mindus/assets/blocks/production/phase-heater.png +++ /dev/null diff --git a/mindus/assets/blocks/production/phase-synthesizer.png b/mindus/assets/blocks/production/phase-synthesizer.png Binary files differdeleted file mode 100644 index c69129e..0000000 --- a/mindus/assets/blocks/production/phase-synthesizer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/phase-weaver.png b/mindus/assets/blocks/production/phase-weaver.png Binary files differdeleted file mode 100644 index 8d76b9a..0000000 --- a/mindus/assets/blocks/production/phase-weaver.png +++ /dev/null diff --git a/mindus/assets/blocks/production/plastanium-compressor.png b/mindus/assets/blocks/production/plastanium-compressor.png Binary files differdeleted file mode 100644 index eebc615..0000000 --- a/mindus/assets/blocks/production/plastanium-compressor.png +++ /dev/null diff --git a/mindus/assets/blocks/production/pulverizer.png b/mindus/assets/blocks/production/pulverizer.png Binary files differdeleted file mode 100644 index b2ef8b6..0000000 --- a/mindus/assets/blocks/production/pulverizer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/pyratite-mixer.png b/mindus/assets/blocks/production/pyratite-mixer.png Binary files differdeleted file mode 100644 index 0f74418..0000000 --- a/mindus/assets/blocks/production/pyratite-mixer.png +++ /dev/null diff --git a/mindus/assets/blocks/production/separator.png b/mindus/assets/blocks/production/separator.png Binary files differdeleted file mode 100644 index d7de549..0000000 --- a/mindus/assets/blocks/production/separator.png +++ /dev/null diff --git a/mindus/assets/blocks/production/silicon-arc-furnace.png b/mindus/assets/blocks/production/silicon-arc-furnace.png Binary files differdeleted file mode 100644 index e3debd7..0000000 --- a/mindus/assets/blocks/production/silicon-arc-furnace.png +++ /dev/null diff --git a/mindus/assets/blocks/production/silicon-crucible.png b/mindus/assets/blocks/production/silicon-crucible.png Binary files differdeleted file mode 100644 index 80f11bb..0000000 --- a/mindus/assets/blocks/production/silicon-crucible.png +++ /dev/null diff --git a/mindus/assets/blocks/production/silicon-smelter.png b/mindus/assets/blocks/production/silicon-smelter.png Binary files differdeleted file mode 100644 index 915d206..0000000 --- a/mindus/assets/blocks/production/silicon-smelter.png +++ /dev/null diff --git a/mindus/assets/blocks/production/slag-heater-bottom.png b/mindus/assets/blocks/production/slag-heater-bottom.png Binary files differdeleted file mode 100644 index 5966a6c..0000000 --- a/mindus/assets/blocks/production/slag-heater-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/slag-heater.png b/mindus/assets/blocks/production/slag-heater.png Binary files differdeleted file mode 100644 index 7f997f9..0000000 --- a/mindus/assets/blocks/production/slag-heater.png +++ /dev/null diff --git a/mindus/assets/blocks/production/slag-incinerator-liquid.png b/mindus/assets/blocks/production/slag-incinerator-liquid.png Binary files differdeleted file mode 100644 index 3f4b8d4..0000000 --- a/mindus/assets/blocks/production/slag-incinerator-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/production/slag-incinerator.png b/mindus/assets/blocks/production/slag-incinerator.png Binary files differdeleted file mode 100644 index ffa2be3..0000000 --- a/mindus/assets/blocks/production/slag-incinerator.png +++ /dev/null diff --git a/mindus/assets/blocks/production/small-heat-redirector-top1.png b/mindus/assets/blocks/production/small-heat-redirector-top1.png Binary files differdeleted file mode 100644 index 51da879..0000000 --- a/mindus/assets/blocks/production/small-heat-redirector-top1.png +++ /dev/null diff --git a/mindus/assets/blocks/production/small-heat-redirector-top2.png b/mindus/assets/blocks/production/small-heat-redirector-top2.png Binary files differdeleted file mode 100644 index 775fac4..0000000 --- a/mindus/assets/blocks/production/small-heat-redirector-top2.png +++ /dev/null diff --git a/mindus/assets/blocks/production/small-heat-redirector.png b/mindus/assets/blocks/production/small-heat-redirector.png Binary files differdeleted file mode 100644 index 9b98756..0000000 --- a/mindus/assets/blocks/production/small-heat-redirector.png +++ /dev/null diff --git a/mindus/assets/blocks/production/spore-press.png b/mindus/assets/blocks/production/spore-press.png Binary files differdeleted file mode 100644 index 2fdfa23..0000000 --- a/mindus/assets/blocks/production/spore-press.png +++ /dev/null diff --git a/mindus/assets/blocks/production/surge-crucible-bottom.png b/mindus/assets/blocks/production/surge-crucible-bottom.png Binary files differdeleted file mode 100644 index 4c1b11c..0000000 --- a/mindus/assets/blocks/production/surge-crucible-bottom.png +++ /dev/null diff --git a/mindus/assets/blocks/production/surge-crucible-liquid.png b/mindus/assets/blocks/production/surge-crucible-liquid.png Binary files differdeleted file mode 100644 index 7579101..0000000 --- a/mindus/assets/blocks/production/surge-crucible-liquid.png +++ /dev/null diff --git a/mindus/assets/blocks/production/surge-crucible.png b/mindus/assets/blocks/production/surge-crucible.png Binary files differdeleted file mode 100644 index 5479202..0000000 --- a/mindus/assets/blocks/production/surge-crucible.png +++ /dev/null diff --git a/mindus/assets/blocks/production/surge-smelter.png b/mindus/assets/blocks/production/surge-smelter.png Binary files differdeleted file mode 100644 index 9188278..0000000 --- a/mindus/assets/blocks/production/surge-smelter.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-acropolis-team.png b/mindus/assets/blocks/storage/core-acropolis-team.png Binary files differdeleted file mode 100644 index 63b3e38..0000000 --- a/mindus/assets/blocks/storage/core-acropolis-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-acropolis.png b/mindus/assets/blocks/storage/core-acropolis.png Binary files differdeleted file mode 100644 index 24cfcb1..0000000 --- a/mindus/assets/blocks/storage/core-acropolis.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-bastion-team.png b/mindus/assets/blocks/storage/core-bastion-team.png Binary files differdeleted file mode 100644 index 5ff4f59..0000000 --- a/mindus/assets/blocks/storage/core-bastion-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-bastion.png b/mindus/assets/blocks/storage/core-bastion.png Binary files differdeleted file mode 100644 index 91a45f6..0000000 --- a/mindus/assets/blocks/storage/core-bastion.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-citadel-team.png b/mindus/assets/blocks/storage/core-citadel-team.png Binary files differdeleted file mode 100644 index 0115133..0000000 --- a/mindus/assets/blocks/storage/core-citadel-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-citadel.png b/mindus/assets/blocks/storage/core-citadel.png Binary files differdeleted file mode 100644 index e525927..0000000 --- a/mindus/assets/blocks/storage/core-citadel.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-foundation-team.png b/mindus/assets/blocks/storage/core-foundation-team.png Binary files differdeleted file mode 100644 index f4b33c6..0000000 --- a/mindus/assets/blocks/storage/core-foundation-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-foundation.png b/mindus/assets/blocks/storage/core-foundation.png Binary files differdeleted file mode 100644 index 05fc9ed..0000000 --- a/mindus/assets/blocks/storage/core-foundation.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-nucleus-team.png b/mindus/assets/blocks/storage/core-nucleus-team.png Binary files differdeleted file mode 100644 index 89d975b..0000000 --- a/mindus/assets/blocks/storage/core-nucleus-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-shard-team.png b/mindus/assets/blocks/storage/core-shard-team.png Binary files differdeleted file mode 100644 index f2ffa19..0000000 --- a/mindus/assets/blocks/storage/core-shard-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/core-shard.png b/mindus/assets/blocks/storage/core-shard.png Binary files differdeleted file mode 100644 index 81ee21d..0000000 --- a/mindus/assets/blocks/storage/core-shard.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/reinforced-container-team.png b/mindus/assets/blocks/storage/reinforced-container-team.png Binary files differdeleted file mode 100644 index 032d615..0000000 --- a/mindus/assets/blocks/storage/reinforced-container-team.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/reinforced-container.png b/mindus/assets/blocks/storage/reinforced-container.png Binary files differdeleted file mode 100644 index c7933ef..0000000 --- a/mindus/assets/blocks/storage/reinforced-container.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/reinforced-vault.png b/mindus/assets/blocks/storage/reinforced-vault.png Binary files differdeleted file mode 100644 index 108cd16..0000000 --- a/mindus/assets/blocks/storage/reinforced-vault.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/unloader-center.png b/mindus/assets/blocks/storage/unloader-center.png Binary files differdeleted file mode 100644 index 3a8220b..0000000 --- a/mindus/assets/blocks/storage/unloader-center.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/unloader.png b/mindus/assets/blocks/storage/unloader.png Binary files differdeleted file mode 100644 index 6020a6f..0000000 --- a/mindus/assets/blocks/storage/unloader.png +++ /dev/null diff --git a/mindus/assets/blocks/storage/vault-team.png b/mindus/assets/blocks/storage/vault-team.png Binary files differdeleted file mode 100644 index e6a76aa..0000000 --- a/mindus/assets/blocks/storage/vault-team.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/afflict.png b/mindus/assets/blocks/turrets/afflict.png Binary files differdeleted file mode 100644 index 36a7b05..0000000 --- a/mindus/assets/blocks/turrets/afflict.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/arc.png b/mindus/assets/blocks/turrets/arc.png Binary files differdeleted file mode 100644 index ae233bb..0000000 --- a/mindus/assets/blocks/turrets/arc.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/breach.png b/mindus/assets/blocks/turrets/breach.png Binary files differdeleted file mode 100644 index 2db1e45..0000000 --- a/mindus/assets/blocks/turrets/breach.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/cyclone.png b/mindus/assets/blocks/turrets/cyclone.png Binary files differdeleted file mode 100644 index 1681eb2..0000000 --- a/mindus/assets/blocks/turrets/cyclone.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/diffuse.png b/mindus/assets/blocks/turrets/diffuse.png Binary files differdeleted file mode 100644 index 41d1eab..0000000 --- a/mindus/assets/blocks/turrets/diffuse.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/disperse.png b/mindus/assets/blocks/turrets/disperse.png Binary files differdeleted file mode 100644 index 45b7073..0000000 --- a/mindus/assets/blocks/turrets/disperse.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/duo.png b/mindus/assets/blocks/turrets/duo.png Binary files differdeleted file mode 100644 index 22dbab0..0000000 --- a/mindus/assets/blocks/turrets/duo.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/foreshadow.png b/mindus/assets/blocks/turrets/foreshadow.png Binary files differdeleted file mode 100644 index e7b4a7d..0000000 --- a/mindus/assets/blocks/turrets/foreshadow.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/fuse.png b/mindus/assets/blocks/turrets/fuse.png Binary files differdeleted file mode 100644 index 8091476..0000000 --- a/mindus/assets/blocks/turrets/fuse.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/hail.png b/mindus/assets/blocks/turrets/hail.png Binary files differdeleted file mode 100644 index 7e6cff8..0000000 --- a/mindus/assets/blocks/turrets/hail.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/lancer.png b/mindus/assets/blocks/turrets/lancer.png Binary files differdeleted file mode 100644 index 872e9b1..0000000 --- a/mindus/assets/blocks/turrets/lancer.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/lustre.png b/mindus/assets/blocks/turrets/lustre.png Binary files differdeleted file mode 100644 index 680f4bc..0000000 --- a/mindus/assets/blocks/turrets/lustre.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/malign.png b/mindus/assets/blocks/turrets/malign.png Binary files differdeleted file mode 100644 index 267729b..0000000 --- a/mindus/assets/blocks/turrets/malign.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/meltdown.png b/mindus/assets/blocks/turrets/meltdown.png Binary files differdeleted file mode 100644 index f60d55f..0000000 --- a/mindus/assets/blocks/turrets/meltdown.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/parallax.png b/mindus/assets/blocks/turrets/parallax.png Binary files differdeleted file mode 100644 index 5616f34..0000000 --- a/mindus/assets/blocks/turrets/parallax.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/ripple.png b/mindus/assets/blocks/turrets/ripple.png Binary files differdeleted file mode 100644 index cd86d4b..0000000 --- a/mindus/assets/blocks/turrets/ripple.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/salvo.png b/mindus/assets/blocks/turrets/salvo.png Binary files differdeleted file mode 100644 index f0d2f85..0000000 --- a/mindus/assets/blocks/turrets/salvo.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/scathe.png b/mindus/assets/blocks/turrets/scathe.png Binary files differdeleted file mode 100644 index aafddc4..0000000 --- a/mindus/assets/blocks/turrets/scathe.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/scatter.png b/mindus/assets/blocks/turrets/scatter.png Binary files differdeleted file mode 100644 index 95d411f..0000000 --- a/mindus/assets/blocks/turrets/scatter.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/scorch.png b/mindus/assets/blocks/turrets/scorch.png Binary files differdeleted file mode 100644 index 8629eb8..0000000 --- a/mindus/assets/blocks/turrets/scorch.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/segment.png b/mindus/assets/blocks/turrets/segment.png Binary files differdeleted file mode 100644 index 1d83425..0000000 --- a/mindus/assets/blocks/turrets/segment.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/smite.png b/mindus/assets/blocks/turrets/smite.png Binary files differdeleted file mode 100644 index 4f5164f..0000000 --- a/mindus/assets/blocks/turrets/smite.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/spectre.png b/mindus/assets/blocks/turrets/spectre.png Binary files differdeleted file mode 100644 index e8de5dc..0000000 --- a/mindus/assets/blocks/turrets/spectre.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/sublimate.png b/mindus/assets/blocks/turrets/sublimate.png Binary files differdeleted file mode 100644 index 8765018..0000000 --- a/mindus/assets/blocks/turrets/sublimate.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/swarmer.png b/mindus/assets/blocks/turrets/swarmer.png Binary files differdeleted file mode 100644 index 3408f0a..0000000 --- a/mindus/assets/blocks/turrets/swarmer.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/titan.png b/mindus/assets/blocks/turrets/titan.png Binary files differdeleted file mode 100644 index 5649f91..0000000 --- a/mindus/assets/blocks/turrets/titan.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/tsunami.png b/mindus/assets/blocks/turrets/tsunami.png Binary files differdeleted file mode 100644 index eea1b10..0000000 --- a/mindus/assets/blocks/turrets/tsunami.png +++ /dev/null diff --git a/mindus/assets/blocks/turrets/wave.png b/mindus/assets/blocks/turrets/wave.png Binary files differdeleted file mode 100644 index ac6aa6f..0000000 --- a/mindus/assets/blocks/turrets/wave.png +++ /dev/null diff --git a/mindus/assets/blocks/units/additive-reconstructor-top.png b/mindus/assets/blocks/units/additive-reconstructor-top.png Binary files differdeleted file mode 100644 index 4bebb1f..0000000 --- a/mindus/assets/blocks/units/additive-reconstructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/additive-reconstructor.png b/mindus/assets/blocks/units/additive-reconstructor.png Binary files differdeleted file mode 100644 index 7adf765..0000000 --- a/mindus/assets/blocks/units/additive-reconstructor.png +++ /dev/null diff --git a/mindus/assets/blocks/units/air-factory.png b/mindus/assets/blocks/units/air-factory.png Binary files differdeleted file mode 100644 index 457c7b7..0000000 --- a/mindus/assets/blocks/units/air-factory.png +++ /dev/null diff --git a/mindus/assets/blocks/units/basic-assembler-module-side1.png b/mindus/assets/blocks/units/basic-assembler-module-side1.png Binary files differdeleted file mode 100644 index ec16f60..0000000 --- a/mindus/assets/blocks/units/basic-assembler-module-side1.png +++ /dev/null diff --git a/mindus/assets/blocks/units/basic-assembler-module-side2.png b/mindus/assets/blocks/units/basic-assembler-module-side2.png Binary files differdeleted file mode 100644 index fec9314..0000000 --- a/mindus/assets/blocks/units/basic-assembler-module-side2.png +++ /dev/null diff --git a/mindus/assets/blocks/units/basic-assembler-module.png b/mindus/assets/blocks/units/basic-assembler-module.png Binary files differdeleted file mode 100644 index cf6d2a7..0000000 --- a/mindus/assets/blocks/units/basic-assembler-module.png +++ /dev/null diff --git a/mindus/assets/blocks/units/exponential-reconstructor-top.png b/mindus/assets/blocks/units/exponential-reconstructor-top.png Binary files differdeleted file mode 100644 index 4b8429d..0000000 --- a/mindus/assets/blocks/units/exponential-reconstructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/exponential-reconstructor.png b/mindus/assets/blocks/units/exponential-reconstructor.png Binary files differdeleted file mode 100644 index 45fc0ed..0000000 --- a/mindus/assets/blocks/units/exponential-reconstructor.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ground-factory.png b/mindus/assets/blocks/units/ground-factory.png Binary files differdeleted file mode 100644 index 17c34c1..0000000 --- a/mindus/assets/blocks/units/ground-factory.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-assembler-side1.png b/mindus/assets/blocks/units/mech-assembler-side1.png Binary files differdeleted file mode 100644 index 670ea14..0000000 --- a/mindus/assets/blocks/units/mech-assembler-side1.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-assembler-side2.png b/mindus/assets/blocks/units/mech-assembler-side2.png Binary files differdeleted file mode 100644 index 9aa22ee..0000000 --- a/mindus/assets/blocks/units/mech-assembler-side2.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-assembler-top.png b/mindus/assets/blocks/units/mech-assembler-top.png Binary files differdeleted file mode 100644 index a24db54..0000000 --- a/mindus/assets/blocks/units/mech-assembler-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-assembler.png b/mindus/assets/blocks/units/mech-assembler.png Binary files differdeleted file mode 100644 index 523a036..0000000 --- a/mindus/assets/blocks/units/mech-assembler.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-fabricator-top.png b/mindus/assets/blocks/units/mech-fabricator-top.png Binary files differdeleted file mode 100644 index 38608fd..0000000 --- a/mindus/assets/blocks/units/mech-fabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-fabricator.png b/mindus/assets/blocks/units/mech-fabricator.png Binary files differdeleted file mode 100644 index 5095ced..0000000 --- a/mindus/assets/blocks/units/mech-fabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-refabricator-top.png b/mindus/assets/blocks/units/mech-refabricator-top.png Binary files differdeleted file mode 100644 index 96ed2d6..0000000 --- a/mindus/assets/blocks/units/mech-refabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/mech-refabricator.png b/mindus/assets/blocks/units/mech-refabricator.png Binary files differdeleted file mode 100644 index 919d506..0000000 --- a/mindus/assets/blocks/units/mech-refabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/multiplicative-reconstructor-top.png b/mindus/assets/blocks/units/multiplicative-reconstructor-top.png Binary files differdeleted file mode 100644 index fafb3d1..0000000 --- a/mindus/assets/blocks/units/multiplicative-reconstructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/multiplicative-reconstructor.png b/mindus/assets/blocks/units/multiplicative-reconstructor.png Binary files differdeleted file mode 100644 index 01325bb..0000000 --- a/mindus/assets/blocks/units/multiplicative-reconstructor.png +++ /dev/null diff --git a/mindus/assets/blocks/units/naval-factory.png b/mindus/assets/blocks/units/naval-factory.png Binary files differdeleted file mode 100644 index 1d28a1c..0000000 --- a/mindus/assets/blocks/units/naval-factory.png +++ /dev/null diff --git a/mindus/assets/blocks/units/prime-refabricator-top.png b/mindus/assets/blocks/units/prime-refabricator-top.png Binary files differdeleted file mode 100644 index 96e98f5..0000000 --- a/mindus/assets/blocks/units/prime-refabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/prime-refabricator.png b/mindus/assets/blocks/units/prime-refabricator.png Binary files differdeleted file mode 100644 index 3211f45..0000000 --- a/mindus/assets/blocks/units/prime-refabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/repair-point.png b/mindus/assets/blocks/units/repair-point.png Binary files differdeleted file mode 100644 index 30f82c6..0000000 --- a/mindus/assets/blocks/units/repair-point.png +++ /dev/null diff --git a/mindus/assets/blocks/units/repair-turret.png b/mindus/assets/blocks/units/repair-turret.png Binary files differdeleted file mode 100644 index 2ff7843..0000000 --- a/mindus/assets/blocks/units/repair-turret.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-assembler-side1.png b/mindus/assets/blocks/units/ship-assembler-side1.png Binary files differdeleted file mode 100644 index 7ae1060..0000000 --- a/mindus/assets/blocks/units/ship-assembler-side1.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-assembler-side2.png b/mindus/assets/blocks/units/ship-assembler-side2.png Binary files differdeleted file mode 100644 index 5391be4..0000000 --- a/mindus/assets/blocks/units/ship-assembler-side2.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-assembler-top.png b/mindus/assets/blocks/units/ship-assembler-top.png Binary files differdeleted file mode 100644 index 7949283..0000000 --- a/mindus/assets/blocks/units/ship-assembler-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-assembler.png b/mindus/assets/blocks/units/ship-assembler.png Binary files differdeleted file mode 100644 index 5fef2a0..0000000 --- a/mindus/assets/blocks/units/ship-assembler.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-fabricator-top.png b/mindus/assets/blocks/units/ship-fabricator-top.png Binary files differdeleted file mode 100644 index 20ae525..0000000 --- a/mindus/assets/blocks/units/ship-fabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-fabricator.png b/mindus/assets/blocks/units/ship-fabricator.png Binary files differdeleted file mode 100644 index 3d88ae1..0000000 --- a/mindus/assets/blocks/units/ship-fabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-refabricator-top.png b/mindus/assets/blocks/units/ship-refabricator-top.png Binary files differdeleted file mode 100644 index 08bfb7d..0000000 --- a/mindus/assets/blocks/units/ship-refabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/ship-refabricator.png b/mindus/assets/blocks/units/ship-refabricator.png Binary files differdeleted file mode 100644 index bc8e7b1..0000000 --- a/mindus/assets/blocks/units/ship-refabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-assembler-side1.png b/mindus/assets/blocks/units/tank-assembler-side1.png Binary files differdeleted file mode 100644 index ac67f7b..0000000 --- a/mindus/assets/blocks/units/tank-assembler-side1.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-assembler-side2.png b/mindus/assets/blocks/units/tank-assembler-side2.png Binary files differdeleted file mode 100644 index 56df93f..0000000 --- a/mindus/assets/blocks/units/tank-assembler-side2.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-assembler-top.png b/mindus/assets/blocks/units/tank-assembler-top.png Binary files differdeleted file mode 100644 index 8301360..0000000 --- a/mindus/assets/blocks/units/tank-assembler-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-assembler.png b/mindus/assets/blocks/units/tank-assembler.png Binary files differdeleted file mode 100644 index 0fdcd4f..0000000 --- a/mindus/assets/blocks/units/tank-assembler.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-fabricator-top.png b/mindus/assets/blocks/units/tank-fabricator-top.png Binary files differdeleted file mode 100644 index 73984a1..0000000 --- a/mindus/assets/blocks/units/tank-fabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-fabricator.png b/mindus/assets/blocks/units/tank-fabricator.png Binary files differdeleted file mode 100644 index ee0ce46..0000000 --- a/mindus/assets/blocks/units/tank-fabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-refabricator-top.png b/mindus/assets/blocks/units/tank-refabricator-top.png Binary files differdeleted file mode 100644 index 2206ae2..0000000 --- a/mindus/assets/blocks/units/tank-refabricator-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tank-refabricator.png b/mindus/assets/blocks/units/tank-refabricator.png Binary files differdeleted file mode 100644 index ef43609..0000000 --- a/mindus/assets/blocks/units/tank-refabricator.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tetrative-reconstructor-top.png b/mindus/assets/blocks/units/tetrative-reconstructor-top.png Binary files differdeleted file mode 100644 index 5675ecc..0000000 --- a/mindus/assets/blocks/units/tetrative-reconstructor-top.png +++ /dev/null diff --git a/mindus/assets/blocks/units/tetrative-reconstructor.png b/mindus/assets/blocks/units/tetrative-reconstructor.png Binary files differdeleted file mode 100644 index 40e1f56..0000000 --- a/mindus/assets/blocks/units/tetrative-reconstructor.png +++ /dev/null diff --git a/mindus/assets/blocks/units/unit-cargo-loader.png b/mindus/assets/blocks/units/unit-cargo-loader.png Binary files differdeleted file mode 100644 index 883973e..0000000 --- a/mindus/assets/blocks/units/unit-cargo-loader.png +++ /dev/null diff --git a/mindus/assets/blocks/units/unit-repair-tower.png b/mindus/assets/blocks/units/unit-repair-tower.png Binary files differdeleted file mode 100644 index 87abdaa..0000000 --- a/mindus/assets/blocks/units/unit-repair-tower.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/beryllium-wall-large.png b/mindus/assets/blocks/walls/beryllium-wall-large.png Binary files differdeleted file mode 100644 index c067d99..0000000 --- a/mindus/assets/blocks/walls/beryllium-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/beryllium-wall.png b/mindus/assets/blocks/walls/beryllium-wall.png Binary files differdeleted file mode 100644 index 3fbe9ea..0000000 --- a/mindus/assets/blocks/walls/beryllium-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/blast-door-open.png b/mindus/assets/blocks/walls/blast-door-open.png Binary files differdeleted file mode 100644 index 4b7f59b..0000000 --- a/mindus/assets/blocks/walls/blast-door-open.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/blast-door.png b/mindus/assets/blocks/walls/blast-door.png Binary files differdeleted file mode 100644 index 5f6ac3f..0000000 --- a/mindus/assets/blocks/walls/blast-door.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/carbide-wall-large.png b/mindus/assets/blocks/walls/carbide-wall-large.png Binary files differdeleted file mode 100644 index a6e21ce..0000000 --- a/mindus/assets/blocks/walls/carbide-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/carbide-wall.png b/mindus/assets/blocks/walls/carbide-wall.png Binary files differdeleted file mode 100644 index ee23407..0000000 --- a/mindus/assets/blocks/walls/carbide-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/copper-wall.png b/mindus/assets/blocks/walls/copper-wall.png Binary files differdeleted file mode 100644 index a9ed4f6..0000000 --- a/mindus/assets/blocks/walls/copper-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/door-large-open.png b/mindus/assets/blocks/walls/door-large-open.png Binary files differdeleted file mode 100644 index cfd8cf3..0000000 --- a/mindus/assets/blocks/walls/door-large-open.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/door-large.png b/mindus/assets/blocks/walls/door-large.png Binary files differdeleted file mode 100644 index aaaf2c7..0000000 --- a/mindus/assets/blocks/walls/door-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/door-open.png b/mindus/assets/blocks/walls/door-open.png Binary files differdeleted file mode 100644 index f07b341..0000000 --- a/mindus/assets/blocks/walls/door-open.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/door.png b/mindus/assets/blocks/walls/door.png Binary files differdeleted file mode 100644 index e80493c..0000000 --- a/mindus/assets/blocks/walls/door.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/phase-wall-large.png b/mindus/assets/blocks/walls/phase-wall-large.png Binary files differdeleted file mode 100644 index ced55cf..0000000 --- a/mindus/assets/blocks/walls/phase-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/phase-wall.png b/mindus/assets/blocks/walls/phase-wall.png Binary files differdeleted file mode 100644 index 2cc4580..0000000 --- a/mindus/assets/blocks/walls/phase-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/plastanium-wall-large.png b/mindus/assets/blocks/walls/plastanium-wall-large.png Binary files differdeleted file mode 100644 index bcd7e44..0000000 --- a/mindus/assets/blocks/walls/plastanium-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/plastanium-wall.png b/mindus/assets/blocks/walls/plastanium-wall.png Binary files differdeleted file mode 100644 index 11038ff..0000000 --- a/mindus/assets/blocks/walls/plastanium-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/reinforced-surge-wall-large.png b/mindus/assets/blocks/walls/reinforced-surge-wall-large.png Binary files differdeleted file mode 100644 index 9a8c943..0000000 --- a/mindus/assets/blocks/walls/reinforced-surge-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/reinforced-surge-wall.png b/mindus/assets/blocks/walls/reinforced-surge-wall.png Binary files differdeleted file mode 100644 index 1777cbb..0000000 --- a/mindus/assets/blocks/walls/reinforced-surge-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/scrap-wall-huge.png b/mindus/assets/blocks/walls/scrap-wall-huge.png Binary files differdeleted file mode 100644 index a22f775..0000000 --- a/mindus/assets/blocks/walls/scrap-wall-huge.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/scrap-wall-large.png b/mindus/assets/blocks/walls/scrap-wall-large.png Binary files differdeleted file mode 100644 index f755c40..0000000 --- a/mindus/assets/blocks/walls/scrap-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/scrap-wall.png b/mindus/assets/blocks/walls/scrap-wall.png Binary files differdeleted file mode 100644 index 84ad269..0000000 --- a/mindus/assets/blocks/walls/scrap-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/surge-wall-large.png b/mindus/assets/blocks/walls/surge-wall-large.png Binary files differdeleted file mode 100644 index b83ffce..0000000 --- a/mindus/assets/blocks/walls/surge-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/surge-wall.png b/mindus/assets/blocks/walls/surge-wall.png Binary files differdeleted file mode 100644 index c9f7b1e..0000000 --- a/mindus/assets/blocks/walls/surge-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/thorium-wall.png b/mindus/assets/blocks/walls/thorium-wall.png Binary files differdeleted file mode 100644 index 0167e34..0000000 --- a/mindus/assets/blocks/walls/thorium-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/thruster-top.png b/mindus/assets/blocks/walls/thruster-top.png Binary files differdeleted file mode 100644 index 8cbce9b..0000000 --- a/mindus/assets/blocks/walls/thruster-top.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/titanium-wall.png b/mindus/assets/blocks/walls/titanium-wall.png Binary files differdeleted file mode 100644 index e26c955..0000000 --- a/mindus/assets/blocks/walls/titanium-wall.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/tungsten-wall-large.png b/mindus/assets/blocks/walls/tungsten-wall-large.png Binary files differdeleted file mode 100644 index 97cc952..0000000 --- a/mindus/assets/blocks/walls/tungsten-wall-large.png +++ /dev/null diff --git a/mindus/assets/blocks/walls/tungsten-wall.png b/mindus/assets/blocks/walls/tungsten-wall.png Binary files differdeleted file mode 100644 index 774f819..0000000 --- a/mindus/assets/blocks/walls/tungsten-wall.png +++ /dev/null diff --git a/mindus/assets/units/aegires.png b/mindus/assets/units/aegires.png Binary files differdeleted file mode 100644 index 0b7baf9..0000000 --- a/mindus/assets/units/aegires.png +++ /dev/null diff --git a/mindus/assets/units/alpha.png b/mindus/assets/units/alpha.png Binary files differdeleted file mode 100644 index 868df0d..0000000 --- a/mindus/assets/units/alpha.png +++ /dev/null diff --git a/mindus/assets/units/anthicus-missile.png b/mindus/assets/units/anthicus-missile.png Binary files differdeleted file mode 100644 index 406dc4b..0000000 --- a/mindus/assets/units/anthicus-missile.png +++ /dev/null diff --git a/mindus/assets/units/anthicus.png b/mindus/assets/units/anthicus.png Binary files differdeleted file mode 100644 index 96e6674..0000000 --- a/mindus/assets/units/anthicus.png +++ /dev/null diff --git a/mindus/assets/units/antumbra.png b/mindus/assets/units/antumbra.png Binary files differdeleted file mode 100644 index ae10200..0000000 --- a/mindus/assets/units/antumbra.png +++ /dev/null diff --git a/mindus/assets/units/arkyid.png b/mindus/assets/units/arkyid.png Binary files differdeleted file mode 100644 index 39ec11e..0000000 --- a/mindus/assets/units/arkyid.png +++ /dev/null diff --git a/mindus/assets/units/assembly-drone.png b/mindus/assets/units/assembly-drone.png Binary files differdeleted file mode 100644 index bb9104b..0000000 --- a/mindus/assets/units/assembly-drone.png +++ /dev/null diff --git a/mindus/assets/units/atrax.png b/mindus/assets/units/atrax.png Binary files differdeleted file mode 100644 index 5de4da8..0000000 --- a/mindus/assets/units/atrax.png +++ /dev/null diff --git a/mindus/assets/units/avert.png b/mindus/assets/units/avert.png Binary files differdeleted file mode 100644 index 451e5ee..0000000 --- a/mindus/assets/units/avert.png +++ /dev/null diff --git a/mindus/assets/units/beta.png b/mindus/assets/units/beta.png Binary files differdeleted file mode 100644 index 4739bb8..0000000 --- a/mindus/assets/units/beta.png +++ /dev/null diff --git a/mindus/assets/units/bryde.png b/mindus/assets/units/bryde.png Binary files differdeleted file mode 100644 index 2b95dc1..0000000 --- a/mindus/assets/units/bryde.png +++ /dev/null diff --git a/mindus/assets/units/cleroi.png b/mindus/assets/units/cleroi.png Binary files differdeleted file mode 100644 index 8d90617..0000000 --- a/mindus/assets/units/cleroi.png +++ /dev/null diff --git a/mindus/assets/units/collaris.png b/mindus/assets/units/collaris.png Binary files differdeleted file mode 100644 index 5858a88..0000000 --- a/mindus/assets/units/collaris.png +++ /dev/null diff --git a/mindus/assets/units/conquer.png b/mindus/assets/units/conquer.png Binary files differdeleted file mode 100644 index d1d73b6..0000000 --- a/mindus/assets/units/conquer.png +++ /dev/null diff --git a/mindus/assets/units/corvus.png b/mindus/assets/units/corvus.png Binary files differdeleted file mode 100644 index 84a4c18..0000000 --- a/mindus/assets/units/corvus.png +++ /dev/null diff --git a/mindus/assets/units/crawler.png b/mindus/assets/units/crawler.png Binary files differdeleted file mode 100644 index df0b6b0..0000000 --- a/mindus/assets/units/crawler.png +++ /dev/null diff --git a/mindus/assets/units/cyerce.png b/mindus/assets/units/cyerce.png Binary files differdeleted file mode 100644 index 903fbe3..0000000 --- a/mindus/assets/units/cyerce.png +++ /dev/null diff --git a/mindus/assets/units/dagger.png b/mindus/assets/units/dagger.png Binary files differdeleted file mode 100644 index 609f158..0000000 --- a/mindus/assets/units/dagger.png +++ /dev/null diff --git a/mindus/assets/units/disrupt-missile.png b/mindus/assets/units/disrupt-missile.png Binary files differdeleted file mode 100644 index 6d0ad76..0000000 --- a/mindus/assets/units/disrupt-missile.png +++ /dev/null diff --git a/mindus/assets/units/disrupt.png b/mindus/assets/units/disrupt.png Binary files differdeleted file mode 100644 index f25c032..0000000 --- a/mindus/assets/units/disrupt.png +++ /dev/null diff --git a/mindus/assets/units/eclipse.png b/mindus/assets/units/eclipse.png Binary files differdeleted file mode 100644 index ca644ca..0000000 --- a/mindus/assets/units/eclipse.png +++ /dev/null diff --git a/mindus/assets/units/elude.png b/mindus/assets/units/elude.png Binary files differdeleted file mode 100644 index 09e0de0..0000000 --- a/mindus/assets/units/elude.png +++ /dev/null diff --git a/mindus/assets/units/emanate.png b/mindus/assets/units/emanate.png Binary files differdeleted file mode 100644 index e4109fc..0000000 --- a/mindus/assets/units/emanate.png +++ /dev/null diff --git a/mindus/assets/units/evoke.png b/mindus/assets/units/evoke.png Binary files differdeleted file mode 100644 index 891ff30..0000000 --- a/mindus/assets/units/evoke.png +++ /dev/null diff --git a/mindus/assets/units/flare.png b/mindus/assets/units/flare.png Binary files differdeleted file mode 100644 index 6000f66..0000000 --- a/mindus/assets/units/flare.png +++ /dev/null diff --git a/mindus/assets/units/fortress.png b/mindus/assets/units/fortress.png Binary files differdeleted file mode 100644 index bbdf6e1..0000000 --- a/mindus/assets/units/fortress.png +++ /dev/null diff --git a/mindus/assets/units/gamma.png b/mindus/assets/units/gamma.png Binary files differdeleted file mode 100644 index bcb08df..0000000 --- a/mindus/assets/units/gamma.png +++ /dev/null diff --git a/mindus/assets/units/horizon.png b/mindus/assets/units/horizon.png Binary files differdeleted file mode 100644 index 11d2739..0000000 --- a/mindus/assets/units/horizon.png +++ /dev/null diff --git a/mindus/assets/units/incite.png b/mindus/assets/units/incite.png Binary files differdeleted file mode 100644 index 34131f3..0000000 --- a/mindus/assets/units/incite.png +++ /dev/null diff --git a/mindus/assets/units/latum.png b/mindus/assets/units/latum.png Binary files differdeleted file mode 100644 index ecba602..0000000 --- a/mindus/assets/units/latum.png +++ /dev/null diff --git a/mindus/assets/units/locus.png b/mindus/assets/units/locus.png Binary files differdeleted file mode 100644 index 1cb66bf..0000000 --- a/mindus/assets/units/locus.png +++ /dev/null diff --git a/mindus/assets/units/mace.png b/mindus/assets/units/mace.png Binary files differdeleted file mode 100644 index 0b4a6a2..0000000 --- a/mindus/assets/units/mace.png +++ /dev/null diff --git a/mindus/assets/units/manifold.png b/mindus/assets/units/manifold.png Binary files differdeleted file mode 100644 index d42d391..0000000 --- a/mindus/assets/units/manifold.png +++ /dev/null diff --git a/mindus/assets/units/mega.png b/mindus/assets/units/mega.png Binary files differdeleted file mode 100644 index 7f58fab..0000000 --- a/mindus/assets/units/mega.png +++ /dev/null diff --git a/mindus/assets/units/merui.png b/mindus/assets/units/merui.png Binary files differdeleted file mode 100644 index a28422c..0000000 --- a/mindus/assets/units/merui.png +++ /dev/null diff --git a/mindus/assets/units/minke.png b/mindus/assets/units/minke.png Binary files differdeleted file mode 100644 index 0cc85e7..0000000 --- a/mindus/assets/units/minke.png +++ /dev/null diff --git a/mindus/assets/units/mono.png b/mindus/assets/units/mono.png Binary files differdeleted file mode 100644 index 533a3ed..0000000 --- a/mindus/assets/units/mono.png +++ /dev/null diff --git a/mindus/assets/units/navanax.png b/mindus/assets/units/navanax.png Binary files differdeleted file mode 100644 index da64343..0000000 --- a/mindus/assets/units/navanax.png +++ /dev/null diff --git a/mindus/assets/units/nova.png b/mindus/assets/units/nova.png Binary files differdeleted file mode 100644 index 7ab100d..0000000 --- a/mindus/assets/units/nova.png +++ /dev/null diff --git a/mindus/assets/units/obviate.png b/mindus/assets/units/obviate.png Binary files differdeleted file mode 100644 index a836265..0000000 --- a/mindus/assets/units/obviate.png +++ /dev/null diff --git a/mindus/assets/units/oct.png b/mindus/assets/units/oct.png Binary files differdeleted file mode 100644 index 8c18198..0000000 --- a/mindus/assets/units/oct.png +++ /dev/null diff --git a/mindus/assets/units/omura.png b/mindus/assets/units/omura.png Binary files differdeleted file mode 100644 index be703c6..0000000 --- a/mindus/assets/units/omura.png +++ /dev/null diff --git a/mindus/assets/units/oxynoe.png b/mindus/assets/units/oxynoe.png Binary files differdeleted file mode 100644 index 87fc11a..0000000 --- a/mindus/assets/units/oxynoe.png +++ /dev/null diff --git a/mindus/assets/units/poly.png b/mindus/assets/units/poly.png Binary files differdeleted file mode 100644 index e792d5e..0000000 --- a/mindus/assets/units/poly.png +++ /dev/null diff --git a/mindus/assets/units/precept.png b/mindus/assets/units/precept.png Binary files differdeleted file mode 100644 index 32fe877..0000000 --- a/mindus/assets/units/precept.png +++ /dev/null diff --git a/mindus/assets/units/pulsar.png b/mindus/assets/units/pulsar.png Binary files differdeleted file mode 100644 index 152c365..0000000 --- a/mindus/assets/units/pulsar.png +++ /dev/null diff --git a/mindus/assets/units/quad.png b/mindus/assets/units/quad.png Binary files differdeleted file mode 100644 index 09986db..0000000 --- a/mindus/assets/units/quad.png +++ /dev/null diff --git a/mindus/assets/units/quasar.png b/mindus/assets/units/quasar.png Binary files differdeleted file mode 100644 index cc9ac31..0000000 --- a/mindus/assets/units/quasar.png +++ /dev/null diff --git a/mindus/assets/units/quell-missile.png b/mindus/assets/units/quell-missile.png Binary files differdeleted file mode 100644 index dd05d06..0000000 --- a/mindus/assets/units/quell-missile.png +++ /dev/null diff --git a/mindus/assets/units/quell.png b/mindus/assets/units/quell.png Binary files differdeleted file mode 100644 index f724c4e..0000000 --- a/mindus/assets/units/quell.png +++ /dev/null diff --git a/mindus/assets/units/reign.png b/mindus/assets/units/reign.png Binary files differdeleted file mode 100644 index 55701e6..0000000 --- a/mindus/assets/units/reign.png +++ /dev/null diff --git a/mindus/assets/units/renale.png b/mindus/assets/units/renale.png Binary files differdeleted file mode 100644 index d4283d4..0000000 --- a/mindus/assets/units/renale.png +++ /dev/null diff --git a/mindus/assets/units/retusa.png b/mindus/assets/units/retusa.png Binary files differdeleted file mode 100644 index 3e7ebbd..0000000 --- a/mindus/assets/units/retusa.png +++ /dev/null diff --git a/mindus/assets/units/risso.png b/mindus/assets/units/risso.png Binary files differdeleted file mode 100644 index 97d9d2f..0000000 --- a/mindus/assets/units/risso.png +++ /dev/null diff --git a/mindus/assets/units/scathe-missile.png b/mindus/assets/units/scathe-missile.png Binary files differdeleted file mode 100644 index 1138357..0000000 --- a/mindus/assets/units/scathe-missile.png +++ /dev/null diff --git a/mindus/assets/units/scepter.png b/mindus/assets/units/scepter.png Binary files differdeleted file mode 100644 index 61b87a6..0000000 --- a/mindus/assets/units/scepter.png +++ /dev/null diff --git a/mindus/assets/units/sei.png b/mindus/assets/units/sei.png Binary files differdeleted file mode 100644 index 695824e..0000000 --- a/mindus/assets/units/sei.png +++ /dev/null diff --git a/mindus/assets/units/spiroct.png b/mindus/assets/units/spiroct.png Binary files differdeleted file mode 100644 index 2670acc..0000000 --- a/mindus/assets/units/spiroct.png +++ /dev/null diff --git a/mindus/assets/units/stell.png b/mindus/assets/units/stell.png Binary files differdeleted file mode 100644 index 0d06858..0000000 --- a/mindus/assets/units/stell.png +++ /dev/null diff --git a/mindus/assets/units/tecta.png b/mindus/assets/units/tecta.png Binary files differdeleted file mode 100644 index 66f473c..0000000 --- a/mindus/assets/units/tecta.png +++ /dev/null diff --git a/mindus/assets/units/toxopid.png b/mindus/assets/units/toxopid.png Binary files differdeleted file mode 100644 index 04349f5..0000000 --- a/mindus/assets/units/toxopid.png +++ /dev/null diff --git a/mindus/assets/units/vanquish.png b/mindus/assets/units/vanquish.png Binary files differdeleted file mode 100644 index 09b8c51..0000000 --- a/mindus/assets/units/vanquish.png +++ /dev/null diff --git a/mindus/assets/units/vela.png b/mindus/assets/units/vela.png Binary files differdeleted file mode 100644 index a76ec93..0000000 --- a/mindus/assets/units/vela.png +++ /dev/null diff --git a/mindus/assets/units/zenith.png b/mindus/assets/units/zenith.png Binary files differdeleted file mode 100644 index a015009..0000000 --- a/mindus/assets/units/zenith.png +++ /dev/null diff --git a/mindus/build.rs b/mindus/build.rs deleted file mode 100644 index b25780c..0000000 --- a/mindus/build.rs +++ /dev/null @@ -1,187 +0,0 @@ -use fimg::DynImage; -use rand::Rng; -use std::fs::File; -use std::io::Write as _; -use std::iter::Iterator; -use std::path::Path; -use walkdir::WalkDir; - -macro_rules! wr { - ($dst:expr => $($arg:tt)*) => { writeln!($dst, $($arg)*).unwrap() }; -} - -fn kebab2bigsnek(kebab: &str) -> String { - let mut n = String::new(); - n.reserve(kebab.len()); - for c in kebab.chars() { - if c == '-' { - n.push('_'); - } else { - n.push(c.to_ascii_uppercase()); - } - } - n -} - -fn main() { - let _ = std::fs::remove_dir_all("target/out"); - let walkdir = WalkDir::new("assets"); - println!("cargo:rerun-if-changed=assets/"); - println!("cargo:rerun-if-changed=build.rs"); - let o = std::env::var("OUT_DIR").unwrap(); - let o = Path::new(&o); - let mut full = File::create(o.join("full.rs")).unwrap(); - // let mut half = File::create(o.join("half.rs")).unwrap(); - let mut quar = File::create(o.join("quar.rs")).unwrap(); - let mut eigh = File::create(o.join("eigh.rs")).unwrap(); - - let mut n = 22usize; - - wr!(full => "pub mod full {{"); - wr!(full => "pub static EMPTY4: Image<&[u8], 4> = Image::make::<32, 32>();"); - wr!(full => "pub static EMPTY: Image<&[u8], 3> = Image::make::<32, 32>();"); - - wr!(quar => "pub mod quar {{"); - // forced to do this because try_into isnt const - wr!(quar => "pub static EMPTY4: Image<&[u8], 4> = Image::make::<8, 8>();"); - wr!(quar => "pub static EMPTY: Image<&[u8], 3> = Image::make::<8, 8>();"); - - wr!(eigh => "pub mod eigh {{"); - wr!(eigh => "pub static EMPTY4: Image<&[u8], 4> = Image::make::<4, 4>();"); - wr!(eigh => "pub static EMPTY: Image<&[u8], 3> = Image::make::<4, 4>();"); - - for mut file in [&full, &quar, &eigh] { - wr!(file => "use crate::utils::Image;"); - wr!(file => "pub static CLIFF: Image<&[u8], 4> = EMPTY4.copy();"); - for i in 1..=16 { - wr!(file => "pub static BUILD{}: Image<&[u8], 4> = EMPTY4.copy();", i); - } - } - for e in walkdir.into_iter().filter_map(Result::ok) { - let path = e.path(); - if path.is_file() - && let Some(e) = path.extension() - && e == "png" - { - let mut p = DynImage::open(path); - let rgb = p.clone().to_rgba().chunked().all(|x| x[3] == 255); - if path - .file_name() - .unwrap() - .to_str() - .unwrap() - .contains("-liquid.png") - { - continue; - } - let f = path.file_name().unwrap().to_str().unwrap(); - if f.contains("bottom") - || f.contains("-team") - || f.contains("-end") - || f.contains("stack") - { - continue; - } - // let rgb = path.components().any(|c| c.as_os_str() == "floors"); - let env = path.components().any(|c| c.as_os_str() == "environment"); - let path = kebab2bigsnek( - path.with_extension("") - .file_name() - .unwrap() - .to_str() - .unwrap(), - ); - if matches!( - path.as_str(), - "CLIFF_CRUSHER_ROTATOR" - | "NEOPLASIA_REACTOR_CENTER" - | "FLUX_REACTOR_MID" - | "EDGE" - // | "PHASE_CONVEYOR_BRIDGE" - | "BRIDGE_ARROW" - // | "DUCT_BRIDGE_BRIDGE" - // | "DUCT_BRIDGE_ARROW" - | "LAUNCHPOD" - // | "BRIDGE_CONVEYOR_BRIDGE" - // | "BRIDGE_CONVEYOR_ARROW" - // | "PHASE_CONVEYOR_ARROW" - // | "REINFORCED_BRIDGE_CONDUIT_ARROW" - // | "REINFORCED_BRIDGE_CONDUIT_BRIDGE" - // | "PHASE_CONDUIT_BRIDGE" - // | "BRIDGE_CONDUIT_ARROW" - // | "PHASE_CONDUIT_ARROW" - // | "BRIDGE_CONDUIT_BRIDGE" - | "PLATED_CONDUIT_CAP" - ) { - continue; - } - println!("do {path}"); - - macro_rules! writ { - ($ext:ident / $scale:literal) => { - let mut buf = File::create(o.join(n.to_string() + "-" + stringify!($ext))).unwrap(); - let out_path = format!("{}/{n}-{}", o.display(), stringify!($ext)); - // boulders - let (mx, my) = if env && p.width() + p.height() == 48+48 { - (32, 32) - // vents (dont match VENT_CONDENSER, do match (RHYOLITE_VENT) - } else if path.contains("_VENT") - // talls - || matches!(path.as_str(), "YELLOWCORAL" | "WHITE_TREE" | "WHITE_TREE_DEAD" | "REDWEED" | "SPORE_CLUSTER" | "CRYSTAL_BLOCKS" | "CRYSTAL_CLUSTER" | "VIBRANT_CRYSTAL_CLUSTER" | "CRYSTAL_ORBS") { - (32, 32) - } else { - (p.height(), p.height()) - }; - let new = if $scale == 1 { - p.clone() - } else { - p.scale::<fimg::scale::Nearest>(mx / $scale, my / $scale) - }; - let rgb = env && rgb; - let x = new.width(); - let y = new.height(); - if rgb { - buf.write_all(&new.to_rgb().bytes()).unwrap(); - wr!($ext => r#"pub(crate) static {path}: Image<&[u8], 3> = unsafe {{ Image::new(std::num::NonZeroU32::new({x}).unwrap(), std::num::NonZeroU32::new({y}).unwrap(), include_bytes!(r"{out_path}")) }};"#); - } else { - buf.write_all(&new.to_rgba().bytes()).unwrap(); - wr!($ext => r#"pub(crate) static {path}: Image<&[u8], 4> = unsafe {{ Image::new(std::num::NonZeroU32::new({x}).unwrap(), std::num::NonZeroU32::new({y}).unwrap(), include_bytes!(r"{out_path}")) }};"#); - } - }; - } - writ!(full / 1); - // writ!(half + 0.5); - writ!(quar / 4); - writ!(eigh / 8); - n += 1; - } - } - for f in std::fs::read_dir("assets/blocks/environment") - .unwrap() - .filter_map(Result::ok) - .filter_map(|x| x.file_name().to_str().map(String::from)) - .filter(|x| x.contains("1")) - .filter(|x| !x.contains("dark-panel")) - { - dbg!(&f); - let f = &f[..f.len() - 5]; - let count = WalkDir::new("assets/blocks/environment") - .into_iter() - .filter_map(Result::ok) - .filter_map(|x| x.file_name().to_str().map(String::from)) - .filter(|x| &x[..x.len() - 5] == f) - .count(); - let f = kebab2bigsnek(f); - for n in count + 1..=8 { - let r = rand::rng().random_range(1..=count); - wr!(full => r#"pub(crate) static {f}{n}: Image<&[u8], {{{f}1.channels()}}> = {f}{r}.copy();"#); - wr!(quar => r#"pub(crate) static {f}{n}: Image<&[u8], {{{f}1.channels()}}> = {f}{r}.copy();"#); - wr!(eigh => r#"pub(crate) static {f}{n}: Image<&[u8], {{{f}1.channels()}}> = {f}{r}.copy();"#); - } - println!("{count} {f}"); - } - // panic!(); - for mut f in [full, eigh, quar] { - f.write_all(b"}").unwrap(); - } -} diff --git a/mindus/src/block/content.rs b/mindus/src/block/content.rs deleted file mode 100644 index 25f5176..0000000 --- a/mindus/src/block/content.rs +++ /dev/null @@ -1,453 +0,0 @@ -//! everything -use crate::content::content_enum; - -content_enum! { - pub enum Type / Block for u16 | TryFromU16Error - { - "air", - "spawn", - "remove-wall", - "remove-ore", - "cliff", - "build1", - "build2", - "build3", - "build4", - "build5", - "build6", - "build7", - "build8", - "build9", - "build10", - "build11", - "build12", - "build13", - "build14", - "build15", - "build16", - "deep-water", - "shallow-water", - "tainted-water", - "deep-tainted-water", - "darksand-tainted-water", - "sand-water", - "darksand-water", - "tar", - "pooled-cryofluid", - "molten-slag", - "space", - "empty", - "stone", - "crater-stone", - "char", - "basalt", - "hotrock", - "magmarock", - "sand-floor", - "darksand", - "dirt", - "mud", - "dacite", - "rhyolite", - "rhyolite-crater", - "rough-rhyolite", - "regolith", - "yellow-stone", - "carbon-stone", - "ferric-stone", - "ferric-craters", - "beryllic-stone", - "crystalline-stone", - "crystal-floor", - "yellow-stone-plates", - "red-stone", - "dense-red-stone", - "red-ice", - "arkycite-floor", - "arkyic-stone", - "rhyolite-vent", - "carbon-vent", - "arkyic-vent", - "yellow-stone-vent", - "red-stone-vent", - "crystalline-vent", - "stone-vent", - "basalt-vent", - "redmat", - "bluemat", - "grass", - "salt", - "snow", - "ice", - "ice-snow", - "shale", - "moss", - "core-zone", - "spore-moss", - "stone-wall", - "spore-wall", - "dirt-wall", - "dacite-wall", - "ice-wall", - "snow-wall", - "dune-wall", - "regolith-wall", - "yellow-stone-wall", - "rhyolite-wall", - "carbon-wall", - "ferric-stone-wall", - "beryllic-stone-wall", - "arkyic-wall", - "crystalline-stone-wall", - "red-ice-wall", - "red-stone-wall", - "red-diamond-wall", - "sand-wall", - "salt-wall", - "shrubs", - "shale-wall", - "spore-pine", - "snow-pine", - "pine", - "white-tree-dead", - "white-tree", - "spore-cluster", - "redweed", - "pur-bush", - "yellowcoral", - "boulder", - "snow-boulder", - "shale-boulder", - "sand-boulder", - "dacite-boulder", - "basalt-boulder", - "carbon-boulder", - "ferric-boulder", - "beryllic-boulder", - "yellow-stone-boulder", - "arkyic-boulder", - "crystal-cluster", - "vibrant-crystal-cluster", - "crystal-blocks", - "crystal-orbs", - "crystalline-boulder", - "red-ice-boulder", - "rhyolite-boulder", - "red-stone-boulder", - "metal-floor", - "metal-floor-damaged", - "metal-floor-2", - "metal-floor-3", - "metal-floor-4", - "metal-floor-5", - "dark-panel-1", - "dark-panel-2", - "dark-panel-3", - "dark-panel-4", - "dark-panel-5", - "dark-panel-6", - "dark-metal", - "metal-tiles-1", - "metal-tiles-2", - "metal-tiles-3", - "metal-tiles-4", - "metal-tiles-5", - "metal-tiles-6", - "metal-tiles-7", - "metal-tiles-8", - "metal-tiles-9", - "metal-tiles-10", - "metal-tiles-11", - "metal-tiles-12", - "metal-tiles-13", - "metal-wall-1", - "metal-wall-2", - "metal-wall-3", - "rune-overlay-crux", - "rune-overlay", - "colored-floor", - "colored-wall", - "character-overlay", - "character-overlay-white", - "pebbles", - "tendrils", - "ore-copper", - "ore-lead", - "ore-scrap", - "ore-coal", - "ore-titanium", - "ore-thorium", - "ore-beryllium", - "ore-tungsten", - "ore-crystal-thorium", - "ore-wall-thorium", - "ore-wall-beryllium", - "ore-wall-graphite", - "graphitic-wall", - "ore-wall-tungsten", - "graphite-press", - "multi-press", - "silicon-smelter", - "silicon-crucible", - "kiln", - "plastanium-compressor", - "phase-weaver", - "surge-smelter", - "cryofluid-mixer", - "pyratite-mixer", - "blast-mixer", - "melter", - "separator", - "disassembler", - "spore-press", - "pulverizer", - "coal-centrifuge", - "incinerator", - "silicon-arc-furnace", - "electrolyzer", - "atmospheric-concentrator", - "oxidation-chamber", - "electric-heater", - "slag-heater", - "phase-heater", - "heat-redirector", - "small-heat-redirector", - "heat-router", - "slag-incinerator", - "carbide-crucible", - "slag-centrifuge", - "surge-crucible", - "cyanogen-synthesizer", - "phase-synthesizer", - "heat-reactor", - "copper-wall", - "copper-wall-large", - "titanium-wall", - "titanium-wall-large", - "plastanium-wall", - "plastanium-wall-large", - "thorium-wall", - "thorium-wall-large", - "phase-wall", - "phase-wall-large", - "surge-wall", - "surge-wall-large", - "door", - "door-large", - "scrap-wall", - "scrap-wall-large", - "scrap-wall-huge", - "scrap-wall-gigantic", - "thruster", - "beryllium-wall", - "beryllium-wall-large", - "tungsten-wall", - "tungsten-wall-large", - "blast-door", - "reinforced-surge-wall", - "reinforced-surge-wall-large", - "carbide-wall", - "carbide-wall-large", - "shielded-wall", - "mender", - "mend-projector", - "overdrive-projector", - "overdrive-dome", - "force-projector", - "shock-mine", - "radar", - "build-tower", - "regen-projector", - "shockwave-tower", - "shield-projector", - "large-shield-projector", - "conveyor", - "titanium-conveyor", - "plastanium-conveyor", - "armored-conveyor", - "junction", - "bridge-conveyor", - "phase-conveyor", - "sorter", - "inverted-sorter", - "router", - "distributor", - "overflow-gate", - "underflow-gate", - "mass-driver", - "duct", - "armored-duct", - "duct-router", - "overflow-duct", - "underflow-duct", - "duct-bridge", - "duct-unloader", - "surge-conveyor", - "surge-router", - "unit-cargo-loader", - "unit-cargo-unload-point", - "mechanical-pump", - "rotary-pump", - "impulse-pump", - "conduit", - "pulse-conduit", - "plated-conduit", - "liquid-router", - "liquid-container", - "liquid-tank", - "liquid-junction", - "bridge-conduit", - "phase-conduit", - "reinforced-pump", - "reinforced-conduit", - "reinforced-liquid-junction", - "reinforced-bridge-conduit", - "reinforced-liquid-router", - "reinforced-liquid-container", - "reinforced-liquid-tank", - "power-node", - "power-node-large", - "surge-tower", - "diode", - "battery", - "battery-large", - "combustion-generator", - "thermal-generator", - "steam-generator", - "differential-generator", - "rtg-generator", - "solar-panel", - "solar-panel-large", - "thorium-reactor", - "impact-reactor", - "beam-node", - "beam-tower", - "beam-link", - "turbine-condenser", - "chemical-combustion-chamber", - "pyrolysis-generator", - "flux-reactor", - "neoplasia-reactor", - "mechanical-drill", - "pneumatic-drill", - "laser-drill", - "blast-drill", - "water-extractor", - "cultivator", - "oil-extractor", - "vent-condenser", - "cliff-crusher", - "large-cliff-crusher", - "plasma-bore", - "large-plasma-bore", - "impact-drill", - "eruption-drill", - "core-shard", - "core-foundation", - "core-nucleus", - "core-bastion", - "core-citadel", - "core-acropolis", - "container", - "vault", - "unloader", - "reinforced-container", - "reinforced-vault", - "duo", - "scatter", - "scorch", - "hail", - "wave", - "lancer", - "arc", - "parallax", - "swarmer", - "salvo", - "segment", - "tsunami", - "fuse", - "ripple", - "cyclone", - "foreshadow", - "spectre", - "meltdown", - "breach", - "diffuse", - "sublimate", - "titan", - "disperse", - "afflict", - "lustre", - "scathe", - "smite", - "malign", - "ground-factory", - "air-factory", - "naval-factory", - "additive-reconstructor", - "multiplicative-reconstructor", - "exponential-reconstructor", - "tetrative-reconstructor", - "repair-point", - "repair-turret", - "tank-fabricator", - "ship-fabricator", - "mech-fabricator", - "tank-refabricator", - "ship-refabricator", - "mech-refabricator", - "prime-refabricator", - "tank-assembler", - "ship-assembler", - "mech-assembler", - "basic-assembler-module", - "unit-repair-tower", - "payload-conveyor", - "payload-router", - "reinforced-payload-conveyor", - "reinforced-payload-router", - "payload-mass-driver", - "large-payload-mass-driver", - "small-deconstructor", - "deconstructor", - "constructor", - "large-constructor", - "payload-loader", - "payload-unloader", - "power-source", - "power-void", - "item-source", - "item-void", - "liquid-source", - "liquid-void", - "payload-source", - "payload-void", - "heat-source", - "illuminator", - "legacy-mech-pad", - "legacy-unit-factory", - "legacy-unit-factory-air", - "legacy-unit-factory-ground", - "command-center", - "launch-pad", - "advanced-launch-pad", - "landing-pad", - "interplanetary-accelerator", - "message", - "switch", - "micro-processor", - "logic-processor", - "hyper-processor", - "memory-cell", - "memory-bank", - "logic-display", - "large-logic-display", - "tile-logic-display", - "canvas", - "reinforced-message", - "world-processor", - "world-cell", - "world-message", - "world-switch", - } -} diff --git a/mindus/src/block/defense.rs b/mindus/src/block/defense.rs deleted file mode 100644 index 3a1a4d4..0000000 --- a/mindus/src/block/defense.rs +++ /dev/null @@ -1,20 +0,0 @@ -//! defense -use crate::block::simple::*; -use crate::block::*; -make_simple!(HeatedBlock => |_, buff: &mut DataRead| read_heated(buff)); -make_simple!(RadarBlock => |_, buff: &mut DataRead| buff.skip(4)); -make_simple!(ShieldBlock => |_, buff: &mut DataRead| read_shield(buff)); - -/// format: -/// - heat: [`f32`] -/// - phase heat: [`f32`] -fn read_heated(buff: &mut DataRead) -> Result<(), DataReadError> { - buff.skip(8) -} - -/// format: -/// - smoothing: [`f32`] -/// - broken: [`bool`] -fn read_shield(buff: &mut DataRead) -> Result<(), DataReadError> { - buff.skip(5) -} diff --git a/mindus/src/block/drills.rs b/mindus/src/block/drills.rs deleted file mode 100644 index 50a3d6a..0000000 --- a/mindus/src/block/drills.rs +++ /dev/null @@ -1,31 +0,0 @@ -//! extraction of raw resources (mine part) -use crate::block::simple::make_simple; -use crate::block::*; - -make_simple!( - DrillBlock, - |_, name, _, _, rot: Rotation, s| { - let mut base = - load!(from name which is ["large-plasma-bore" | "plasma-bore" | "cliff-crusher"], s); - let mut top = load!(concat "top" => name which is ["large-plasma-bore" | "plasma-bore" | "cliff-crusher"], s); - unsafe { top.rotate(rot.rotated(false).count()) }; - unsafe { base.overlay(&top) }; - base - }, - |_, buff: &mut DataRead| read_drill(buff) -); -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 -}); - -/// format: -/// - progress: [`f32`] -/// - warmup: [`f32`] -fn read_drill(buff: &mut DataRead) -> Result<(), DataReadError> { - buff.skip(8) -} diff --git a/mindus/src/block/liquid.rs b/mindus/src/block/liquid.rs deleted file mode 100644 index 384dc98..0000000 --- a/mindus/src/block/liquid.rs +++ /dev/null @@ -1,128 +0,0 @@ -//! liquid related things -use thiserror::Error; - -use crate::block::simple::*; -use crate::block::*; -use crate::content; -use crate::data::dynamic::DynType; -use crate::data::renderer::load; -use crate::fluid; -use crate::utils::ImageUtils; - -make_simple!(ConduitBlock, |_, - name, - _, - ctx: Option<&RenderingContext>, - rot, - s| { - let ctx = ctx.unwrap(); - - let mask = mask(ctx, rot, name); - // TODO caps. stopped trying bcz too complex - mask2tile(mask, rot, name, s) -}); - -pub struct FluidBlock { - size: u8, - symmetric: bool, - build_cost: BuildCost, -} - -impl FluidBlock { - #[must_use] - pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { - assert!(size != 0, "invalid size"); - Self { - size, - symmetric, - build_cost, - } - } - - state_impl!(pub Option<fluid::Type>); -} - -impl BlockLogic for FluidBlock { - impl_block!(); - - fn data_from_i32(&self, config: i32, _: GridPos) -> Result<DynData, DataConvertError> { - if config < 0 || config > i32::from(u16::MAX) { - return Err(DataConvertError::Custom(Box::new(FluidConvertError( - config, - )))); - } - Ok(DynData::Content(content::Type::Fluid, config as u16)) - } - - 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( - FluidDeserializeError::forward(fluid::Type::try_from(id))?, - )))), - DynData::Content(have, ..) => Err(DeserializeError::Custom(Box::new( - FluidDeserializeError::ContentType(have), - ))), - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::Content, - }), - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - Ok(Self::get_state(state) - .as_ref() - .map_or(DynData::Empty, |&fluid| { - DynData::Content(content::Type::Fluid, fluid.into()) - })) - } - - fn draw( - &self, - _: &str, - state: Option<&State>, - _: Option<&RenderingContext>, - _: Rotation, - s: Scale, - ) -> ImageHolder<4> { - let mut p = load!("liquid-source", s); - if let Some(state) = state - && let Some(liq) = Self::get_state(state) - { - let mut top = load!("center", s); - unsafe { p.overlay(top.tint(liq.color())) }; - return p; - } - p - } - - /// format: - /// - fluid: [`u16`] as [`Fluid`](fluid::Type) - fn read(&self, b: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - let f = buff.read_u16()?; - b.state = Some(Self::create_state(fluid::Type::try_from(f).ok())); - Ok(()) - } -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] -#[error("invalid config ({0}) for fluid")] -pub struct FluidConvertError(pub i32); - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] -pub enum FluidDeserializeError { - #[error("expected Fluid but got {0:?}")] - ContentType(content::Type), - #[error("fluid not found")] - NotFound(#[from] fluid::TryFromU16Error), -} - -impl FluidDeserializeError { - pub fn forward<T, E: Into<Self>>(result: Result<T, E>) -> Result<T, DeserializeError> { - match result { - Ok(v) => Ok(v), - Err(e) => Err(DeserializeError::Custom(Box::new(e.into()))), - } - } -} diff --git a/mindus/src/block/mod.rs b/mindus/src/block/mod.rs deleted file mode 100644 index a1b6df2..0000000 --- a/mindus/src/block/mod.rs +++ /dev/null @@ -1,1067 +0,0 @@ -//! deal with blocks. -//! -//! different block types are organized into modules -use bobbin_bits::U4::{self, B0000, B0001, B0010, B0100, B1000}; -use fimg::DynImage; -use std::error::Error; -use std::fmt; - -use crate::block::all::Type; -use crate::content::Content; -use crate::data::dynamic::{DynData, DynType}; -use crate::data::map::{Build, mcg}; -use crate::data::{self, CompressError, renderer::*}; -use crate::data::{DataRead, GridPos, ReadError as DataReadError}; -use crate::item::storage::ItemStorage; -use crate::utils::Cow; - -macro_rules! mods { - ($($mod:ident)*) => { - $(pub mod $mod;)* - - mod all { - $(#[allow(unused_imports)] pub use crate::block::$mod::*;)* - pub use super::simple::BasicBlock; - } - } -} - -mods! { - content defense distribution drills liquid logic payload power production turrets walls units -} - -pub mod ratios; -mod simple; -use simple::*; - -macro_rules! disp { - ($($k:ident,)+) => { - use all::{$($k,)+}; - #[enum_dispatch::enum_dispatch] - pub(crate) enum BlockLogicEnum { - $($k,)+ - } - - impl ratios::Ratios for BlockLogicEnum { - fn io(&self, state: Option<&State>, name: &str) -> ratios::Io { - match self { - $(Self::$k(x) => x.io(state, name),)+ - } - } - } - pub const trait ConstFrom<T>: Sized { - fn fro(value: T) -> Self; - } - $( - impl const ConstFrom<$k> for BlockLogicEnum { - fn fro(v: $k) -> Self { - BlockLogicEnum::$k(v) - } - } - )+ - - /*impl std::fmt::Debug for BlockLogicEnum { - fn fmt(&self, w: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { - match self { - $(BlockLogicEnum::$k { .. } => write!(w, stringify!($k)),)+ - } - } - }*/ - } -} - -disp! { - BasicBlock, - WallBlock, - DuctBlock, - BridgeBlock, - ItemBlock, - ProductionBlock, - SeparatorBlock, - StackConveyor, - HeatCrafter, - ConnectorBlock, - ItemTurret, - ConveyorBlock, - PayloadRouter, - WallDrillBlock, - DrillBlock, - NuclearGeneratorBlock, - GeneratorBlock, - ConduitBlock, - HeatedBlock, - RadarBlock, - ShieldBlock, - PointDefenseTurret, - JunctionBlock, - Turret, - MemoryBlock, - MessageLogic, - ConstructorBlock, - AssemblerBlock, - UnitFactory, - SimpleDuctBlock, - SurgeRouter, - SimplePayloadBlock, - PayloadConveyor, - ImpactReactorBlock, - Neoplasia, - DiodeBlock, - HeatConduit, - ContinousTurret, - TractorBeamTurret, - TileableDisplay, - AssemblerModule, - RepairTurret, - FluidBlock, - CanvasBlock, - SwitchLogic, - ProcessorLogic, - PayloadBlock, - LampBlock, - UnitCargoLoader, - DoorBlock, -} - -pub trait Cast { - fn downcast_ref(state: &State) -> Option<&Self>; - fn downcast_mut(state: &mut State) -> Option<&mut Self>; -} - -macro_rules! stater { - ($($k: ident($v: ty),)+) => { - #[derive(Debug, Clone, Hash)] - pub enum State { - $($k($v),)+ - } - - $( - impl From<$v> for State { - fn from(v: $v) -> State { State::$k(v) } - } - - impl Cast for $v { - fn downcast_ref(state: &State) -> Option<&Self> { - match state { - State::$k(v) => Some(v), - _ => None, - } - } - fn downcast_mut(state: &mut State) -> Option<&mut Self> { - match state { - State::$k(v) => Some(v), - _ => None, - } - } - } - )+ - } -} - -stater! { - // TODO deoptionize - String(String), - Item(Option<crate::item::Type>), - Fluid(Option<crate::fluid::Type>), - Image(Image<Box<[u8]>, 1>), - Point(Option<(i32, i32)>), - Bool(bool), - Processor(logic::ProcessorState), - Payload(payload::Payload), - Power(Vec<(i16, i16)>), - Color(power::Rgba), - Command(Option<crate::data::command::UnitCommand>), - Unit(Option<crate::unit::Type>), -} - -impl State { - pub fn downcast_ref<T: Cast>(&self) -> Option<&T> { - T::downcast_ref(self) - } - - pub fn downcast_mut<T: Cast>(&mut self) -> Option<&mut T> { - T::downcast_mut(self) - } - - pub fn new<T: Into<Self>>(from: T) -> Self { - from.into() - } -} - -#[enum_dispatch::enum_dispatch(BlockLogicEnum)] -pub trait BlockLogic: ratios::Ratios { - /// mindustry blocks are the same width and height - fn get_size(&self) -> u8; - - fn is_symmetric(&self) -> bool; - - fn create_build_cost(&self) -> Option<ItemStorage>; - - fn data_from_i32(&self, config: i32, pos: GridPos) -> Result<DynData, DataConvertError>; - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError>; - - #[allow(unused_variables)] - fn mirror_state(&self, state: &mut State, horizontally: bool, vertically: bool) {} - - #[allow(unused_variables)] - fn rotate_state(&self, state: &mut State, clockwise: bool) {} - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError>; - - #[allow(unused_variables)] - fn draw( - &self, - name: &str, - state: Option<&State>, - context: Option<&RenderingContext>, - rot: Rotation, - scale: Scale, - ) -> ImageHolder<4> { - unimplemented!("{name}") - } - - #[allow(unused_variables)] - fn read(&self, build: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - Ok(()) - } -} - -// i wish i could derive -macro_rules! impl_block { - () => { - fn get_size(&self) -> u8 { - self.size - } - - fn is_symmetric(&self) -> bool { - self.symmetric - } - - fn create_build_cost(&self) -> Option<$crate::item::storage::ItemStorage> { - if self.build_cost.is_empty() { - None - } else { - let mut storage = crate::item::storage::Storage::new(); - for (ty, cnt) in self.build_cost { - storage.add(*ty, *cnt, u32::MAX); - } - Some(storage) - } - } - }; -} -pub(crate) use impl_block; - -#[derive(Debug, thiserror::Error)] -pub enum DataConvertError { - #[error(transparent)] - Custom(#[from] Box<dyn Error + Sync + Send>), -} - -impl DataConvertError { - pub fn forward<T, E: Error + Sync + Send + 'static>(result: Result<T, E>) -> Result<T, Self> { - match result { - Ok(v) => Ok(v), - Err(e) => Err(Self::Custom(Box::new(e))), - } - } -} - -#[derive(Debug, thiserror::Error)] -pub enum DeserializeError { - #[error(transparent)] - DecompressError(#[from] data::DecompressError), - #[error("expected type {expect:?} but got {have:?}")] - InvalidType { have: DynType, expect: DynType }, - #[error(transparent)] - Custom(#[from] Box<dyn Error + Sync + Send>), -} - -impl DeserializeError { - pub fn forward<T, E: Error + Sync + Send + 'static>(result: Result<T, E>) -> Result<T, Self> { - match result { - Ok(v) => Ok(v), - Err(e) => Err(Self::Custom(Box::new(e))), - } - } -} - -#[derive(Debug, thiserror::Error)] -pub enum SerializeError { - #[error(transparent)] - Custom(#[from] Box<dyn Error + Sync + Send>), - #[error(transparent)] - Compress(#[from] CompressError), -} - -impl SerializeError { - pub fn forward<T, E: Error + Sync + Send + 'static>(result: Result<T, E>) -> Result<T, Self> { - match result { - Ok(v) => Ok(v), - Err(e) => Err(Self::Custom(Box::new(e))), - } - } -} - -/// a block. put it in stuff! -pub struct Block { - image_random: Option<&'static [[DynImage<&'static [u8]>; 3]; 8]>, - image: Option<&'static [DynImage<&'static [u8]>; 3]>, - pub(crate) name: Type, - logic: BlockLogicEnum, -} - -impl core::hash::Hash for Block { - fn hash<H: std::hash::Hasher>(&self, state: &mut H) { - self.name.hash(state); - } -} - -impl PartialEq for Block { - fn eq(&self, rhs: &Block) -> bool { - self.name == rhs.name - } -} - -impl Block { - /// this blocks name - /// ``` - /// assert!(mindus::block::DISTRIBUTOR.name() == "distributor") - /// ``` - #[must_use] - #[inline] - pub const fn name(&self) -> &'static str { - self.name.get_name() - } - - pub fn io(&self, state: Option<&State>) -> ratios::Io { - <BlockLogicEnum as ratios::Ratios>::io(&self.logic, state, self.name.get_name()) - } - - /// should you send context to [`image`]? - #[must_use] - #[inline] - pub const fn wants_context(&self) -> bool { - use BlockLogicEnum::*; - matches!( - self.logic, - ConveyorBlock(..) - | DuctBlock(..) - | StackConveyor(..) - | ConduitBlock(..) - | TileableDisplay(..) - ) - } - - /// draw this block, with this state - #[must_use] - #[inline] - pub fn image( - &self, - state: Option<&State>, - context: Option<&RenderingContext>, - rot: Rotation, - scale: Scale, - ) -> DynImage<Cow> { - if let Some(imgs) = &self.image_random { - return unsafe { imgs[mcg() as usize][scale as usize].mapped(Cow::Ref) }; - } - if let Some(imgs) = &self.image { - return unsafe { imgs[scale as usize].mapped(Cow::Ref) }; - } - DynImage::Rgba( - self.logic - .draw(self.name.get_name(), state, context, rot, scale), - ) - } - - /// size. - #[must_use] - #[inline] - pub fn get_size(&self) -> u8 { - self.logic.get_size() - } - - /// does it matter if its rotated - #[must_use] - #[inline] - pub fn is_symmetric(&self) -> bool { - self.logic.is_symmetric() - } - - /// cost - #[must_use] - #[inline] - pub fn get_build_cost(&self) -> Option<ItemStorage> { - self.logic.create_build_cost() - } - - pub(crate) fn data_from_i32( - &self, - config: i32, - pos: GridPos, - ) -> Result<DynData, DataConvertError> { - self.logic.data_from_i32(config, pos) - } - - pub(crate) fn deserialize_state( - &self, - data: DynData, - ) -> Result<Option<State>, DeserializeError> { - self.logic.deserialize_state(data) - } - - pub(crate) fn mirror_state(&self, state: &mut State, horizontally: bool, vertically: bool) { - self.logic.mirror_state(state, horizontally, vertically); - } - - pub(crate) fn rotate_state(&self, state: &mut State, clockwise: bool) { - self.logic.rotate_state(state, clockwise); - } - - pub(crate) fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - self.logic.serialize_state(state) - } - - #[inline] - pub(crate) fn read(&self, build: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - self.logic.read(build, buff) - } -} - -impl fmt::Debug for Block { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Block<{:?}>", self.name) - } -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)] -/// the possible rotation states of a object -#[repr(u8)] -pub enum Rotation { - Up, - Right, - Down, - Left, -} - -impl Rotation { - #[must_use] - /// count rotations - pub const fn count(self) -> u8 { - self as u8 - } - - #[must_use] - /// mask - pub const fn mask(self) -> U4 { - match self { - Rotation::Up => B1000, - Rotation::Right => B0100, - Rotation::Down => B0010, - Rotation::Left => B0001, - } - } - - #[must_use] - /// character of this rot (Right => >, Up => ^, Left => <, Down => v) - pub const fn ch(self) -> char { - match self { - Rotation::Right => '>', - Rotation::Up => '^', - Rotation::Left => '<', - Rotation::Down => 'v', - } - } - - #[must_use] - /// mirror the directions. - pub const fn mirrored(self, horizontally: bool, vertically: bool) -> Self { - match self { - Self::Right => { - if horizontally { - Self::Left - } else { - Self::Right - } - } - Self::Up => { - if vertically { - Self::Down - } else { - Self::Up - } - } - Self::Left => { - if horizontally { - Self::Right - } else { - Self::Left - } - } - Self::Down => { - if vertically { - Self::Up - } else { - Self::Down - } - } - } - } - - /// mirror in place - pub fn mirror(&mut self, horizontally: bool, vertically: bool) { - *self = self.mirrored(horizontally, vertically); - } - - #[must_use] - /// rotate the rotation - pub const fn rotated(self, clockwise: bool) -> Self { - match self { - Self::Right => { - if clockwise { - Self::Down - } else { - Self::Up - } - } - Self::Up => { - if clockwise { - Self::Right - } else { - Self::Left - } - } - Self::Left => { - if clockwise { - Self::Up - } else { - Self::Down - } - } - Self::Down => { - if clockwise { - Self::Left - } else { - Self::Right - } - } - } - } - - /// rotate the rotation in place - pub fn rotate(&mut self, clockwise: bool) { - *self = self.rotated(clockwise); - } - - #[must_use] - /// rotate 180 - pub const fn rotated_180(self) -> Self { - match self { - Self::Right => Self::Left, - Self::Up => Self::Down, - Self::Left => Self::Right, - Self::Down => Self::Up, - } - } - - /// rotate 180 in place - pub fn rotate_180(&mut self) { - *self = self.rotated_180(); - } -} - -impl From<u8> for Rotation { - fn from(val: u8) -> Self { - match val & 3 { - 0 => Self::Right, - 1 => Self::Up, - 2 => Self::Left, - _ => Self::Down, - } - } -} - -impl From<Rotation> for u8 { - fn from(rot: Rotation) -> Self { - match rot { - Rotation::Right => 0, - Rotation::Up => 1, - Rotation::Left => 2, - Rotation::Down => 3, - } - } -} - -macro_rules! make_register { - ($($field:literal $op:tt $logic:expr;)+) => { paste::paste! { - $( - make_register!(impl $field $op $logic); - )+ - pub static BLOCK_REGISTRY: phf::Map<&str, &Block> = phf::phf_map! {$( - $field => &[<$field:snake:upper>], - )+}; - - impl content::Type { - pub fn to_block(self) -> Option<&'static Block> { - // static L: &[&Block] = &[$(&[<$field:snake:upper>],)+]; - // L.get(self as usize).copied() - match self { - $(content::Type::[<$field:camel>] => Some(&[<$field:snake:upper>]),)+ - _ => None, - } - } - } - }}; - (impl $field: literal => $logic: expr) => { - paste::paste! { pub static [<$field:snake:upper>]: Block = Block { - name: crate::block::content::Type::[<$field:camel>], logic: <crate::block::BlockLogicEnum as crate::block::ConstFrom<_>>::fro($logic), image: None, image_random: None, - }; } - }; - (impl $field: literal -> $logic: expr) => { - paste::paste! { pub static [<$field:snake:upper>]: Block = Block { - name: crate::block::content::Type::[<$field:camel>], logic: <crate::block::BlockLogicEnum as crate::block::ConstFrom<_>>::fro($logic), image: Some(&car::map!(crate::data::renderer::load!($field), DynImage::from)), image_random: None, - }; } - }; - (impl $field: literal : $size: literal) => { - paste::paste! { pub static [<$field:snake:upper>]: Block = Block { - name: crate::block::content::Type::[<$field:camel>], logic: BlockLogicEnum::BasicBlock(BasicBlock::new($size, true, &[])), image: Some(&car::map!(crate::data::renderer::load!($field), DynImage::from)), image_random: None, - }; } - }; - (impl $field: literal @ $size: literal) => { - paste::paste! { pub static [<$field:snake:upper>]: Block = Block { - name: crate::block::content::Type::[<$field:camel>], logic: BlockLogicEnum::BasicBlock(BasicBlock::new($size, true, &[])), image_random: Some(&crate::data::renderer::load!(8x $field)), image: None, - }; } - }; - // floors - (impl $field: literal > $size: literal) => { - paste::paste! { pub static [<$field:snake:upper>]: Block = Block { - name: crate::block::content::Type::[<$field:camel>], logic: BlockLogicEnum::BasicBlock(BasicBlock::new($size, true, &[])), image: Some(&car::map!(crate::data::renderer::load!("empty4"), DynImage::from)), image_random: None, - }; } - }; -} -// pub(self) use make_register; -make_register! { - "metal-wall-1": 1; - "metal-wall-2": 1; - "metal-wall-3": 1; - "colored-floor" > 1; - "colored-wall": 1; - "darksand" > 1; - "sand-floor" > 1; - "yellow-stone" > 1; - "arkyic-stone" > 1; - "carbon-stone" > 1; - "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; - "arkyic-vent" > 1; - "beryllic-stone" > 1; - "bluemat" > 1; - "carbon-vent" > 1; - "core-zone" > 1; - "crater-stone" > 1; - "crystal-floor" > 1; - "crystalline-stone" > 1; - "crystalline-vent" > 1; - "metal-floor-damaged" > 1; - "dense-red-stone" > 1; - "ferric-craters" > 1; // ferris section - "ferric-stone" > 1; - "pooled-cryofluid" > 1; - "red-ice" > 1; - "red-stone-vent" > 1; - "red-stone" > 1; - "redmat" > 1; - "regolith" > 1; - "rhyolite-crater" > 1; - "rhyolite" > 1; - "rough-rhyolite" > 1; - "tainted-water" > 1; - "tar" > 1; - "yellow-stone-plates" > 1; - "yellow-stone-vent" > 1; - "spore-moss" > 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; - "ore-wall-graphite" @ 1; - "graphitic-wall" @ 1; - "boulder" @ 1; - "arkyic-wall" @ 1; - "beryllic-stone-wall" @ 1; - "carbon-wall" @ 1; - "cliff": 1; - "crystalline-stone-wall" @ 1; - "dacite-wall" @ 1; - "dark-metal" @ 1; - "dirt-wall" @ 1; - "dune-wall" @ 1; - "ferric-stone-wall" @ 1; - "ice-wall" @ 1; - "pebbles" @ 1; - "pine": 1; - "red-diamond-wall" @ 1; - "red-ice-wall" @ 1; - "red-stone-wall" @ 1; - "regolith-wall" @ 1; - "rhyolite-vent" @ 1; - "rhyolite-wall" @ 1; - "salt-wall" @ 1; - "sand-wall" @ 1; - "shale-wall" @ 1; - "shrubs" @ 1; - "snow-pine": 1; - "snow-wall" @ 1; - "spawn": 1; - "spore-pine": 1; - "spore-wall" @ 1; - "stone-wall" @ 1; - "yellow-stone-wall" @ 1; - // props - "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; - "pur-bush": 1; - "tendrils" @ 1; - // these are tall but uh (TODO layering) - "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 - "build1": 1; - "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; - "conveyor" => ConveyorBlock::new(1, false, cost!(Copper: 1)); - "titanium-conveyor" => ConveyorBlock::new(1, false, cost!(Copper: 1, Lead: 1, Titanium: 1)); - "plastanium-conveyor" => StackConveyor::new(1, false, cost!(Graphite: 1, Silicon: 1, Plastanium: 1)); - "armored-conveyor" => ConveyorBlock::new(1, false, cost!(Metaglass: 1, Thorium: 1, Plastanium: 1)); - "junction" -> JunctionBlock::new(1, true, cost!(Copper: 2)); - "bridge-conveyor" -> BridgeBlock::new(1, false, cost!(Copper: 6, Lead: 6), 4, true); - "phase-conveyor" -> BridgeBlock::new(1, false, cost!(Lead: 10, Graphite: 10, Silicon: 7, PhaseFabric: 5), 12, true); - "sorter" => ItemBlock::new(1, true, cost!(Copper: 2, Lead: 2)); - "inverted-sorter" => ItemBlock::new(1, true, cost!(Copper: 2, Lead: 2)); - "unloader" => ItemBlock::new(1, true, cost!(Titanium: 25, Silicon: 30)); - "router" -> BasicBlock::new(1, true, cost!(Copper: 3)); - "distributor" -> BasicBlock::new(2, true, cost!(Copper: 4, Lead: 4)); - "overflow-gate" -> BasicBlock::new(1, true, cost!(Copper: 4, Lead: 2)); - "underflow-gate" -> BasicBlock::new(1, true, cost!(Copper: 4, Lead: 2)); - "mass-driver" => BridgeBlock::new(3, true, cost!(Lead: 125, Titanium: 125, Thorium: 50, Silicon: 75), 55, false); - "duct" => DuctBlock::new(1, false, cost!(Beryllium: 1)); - "armored-duct" => DuctBlock::new(1, false, cost!(Beryllium: 2, Tungsten: 1)); - "duct-router" => ItemBlock::new(1, true, cost!(Beryllium: 10)); - "overflow-duct" => SimpleDuctBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8)); - "underflow-duct" => SimpleDuctBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8)); - "duct-bridge" => BridgeBlock::new(1, true, cost!(Beryllium: 20), 3, true); - "duct-unloader" => ItemBlock::new(1, true, cost!(Graphite: 20, Silicon: 20, Tungsten: 10)); - "surge-conveyor" => StackConveyor::new(1, false, cost!(SurgeAlloy: 1, Tungsten: 1)); - "surge-router" => SurgeRouter::new(1, false, cost!(SurgeAlloy: 5, Tungsten: 1)); // not symmetric - "unit-cargo-loader" -> UnitCargoLoader::new(3, true, cost!(Silicon: 80, SurgeAlloy: 50, Oxide: 20)); - "unit-cargo-unload-point" => ItemBlock::new(2, true, cost!(Silicon: 60, Tungsten: 60)); - "cultivator" -> ProductionBlock::new(2, true, cost!(Copper: 25, Lead: 25, Silicon: 10)); - "graphite-press" -> ProductionBlock::new(2, true, cost!(Copper: 75, Lead: 30)); - "multi-press" -> ProductionBlock::new(3, true, cost!(Lead: 100, Graphite: 50, Titanium: 100, Silicon: 25)); - "silicon-smelter" -> ProductionBlock::new(2, true, cost!(Copper: 30, Lead: 25)); - "silicon-crucible" -> ProductionBlock::new(3, true, cost!(Metaglass: 80, Titanium: 120, Silicon: 60, Plastanium: 35)); - "kiln" -> ProductionBlock::new(2, true, cost!(Copper: 60, Lead: 30, Graphite: 30)); - "plastanium-compressor" -> ProductionBlock::new(2, true, cost!(Lead: 115, Graphite: 60, Titanium: 80, Silicon: 80)); - "phase-weaver" -> ProductionBlock::new(2, true, cost!(Lead: 120, Thorium: 75, Silicon: 130)); - "surge-smelter" -> ProductionBlock::new(3, true, cost!(Lead: 80, Thorium: 70, Silicon: 80)); - "cryofluid-mixer" -> ProductionBlock::new(2, true, cost!(Lead: 65, Titanium: 60, Silicon: 40)); - "pyratite-mixer" -> ProductionBlock::new(2, true, cost!(Copper: 50, Lead: 25)); - "blast-mixer" -> ProductionBlock::new(2, true, cost!(Lead: 30, Titanium: 20)); - "melter" -> ProductionBlock::new(1, true, cost!(Copper: 30, Lead: 35, Graphite: 45)); - "separator" -> SeparatorBlock::new(2, true, cost!(Copper: 30, Titanium: 25)); - "disassembler" -> SeparatorBlock::new(3, true, cost!(Titanium: 100, Thorium: 80, Silicon: 150, Plastanium: 40)); - "spore-press" -> ProductionBlock::new(2, true, cost!(Lead: 35, Silicon: 30)); - "pulverizer" -> ProductionBlock::new(1, true, cost!(Copper: 30, Lead: 25)); - "coal-centrifuge" -> ProductionBlock::new(2, true, cost!(Lead: 30, Graphite: 40, Titanium: 20)); - "incinerator" -> BasicBlock::new(1, true, cost!(Lead: 15, Graphite: 5)); - "silicon-arc-furnace" -> ProductionBlock::new(3, true, cost!(Beryllium: 70, Graphite: 80)); - "electrolyzer" => ProductionBlock::new(3, true, cost!(Silicon: 50, Graphite: 40, Beryllium: 130, Tungsten: 80)); - "atmospheric-concentrator" -> ProductionBlock::new(3, true, cost!(Oxide: 60, Beryllium: 180, Silicon: 150)); - "oxidation-chamber" => HeatCrafter::new(3, true, cost!(Tungsten: 120, Graphite: 80, Silicon: 100, Beryllium: 120)); - "electric-heater" => HeatCrafter::new(2, false, cost!(Tungsten: 30, Oxide: 30)); - "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)); - // slag centrifuge - "surge-crucible" -> ProductionBlock::new(3, true, cost!(Silicon: 100, Graphite: 80, Tungsten: 80, Oxide: 80)); - "cyanogen-synthesizer" -> ProductionBlock::new(3, true, cost!(Carbide: 50, Silicon: 80, Beryllium: 90)); - "phase-synthesizer" -> ProductionBlock::new(3, true, cost!(Carbide: 90, Silicon: 100, Thorium: 100, Tungsten: 200)); - "heat-reactor" => HeatCrafter::new(3, false, cost!(Oxide: 70, Graphite: 20, Carbide: 10, Thorium: 80)); - "payload-conveyor" => PayloadConveyor::new(3, false, cost!(Copper: 10, Graphite: 10)); - "payload-router" => PayloadRouter::new(3, false, cost!(Copper: 10, Graphite: 15)); - "reinforced-payload-conveyor" => PayloadConveyor::new(3, false, cost!(Tungsten: 10)); - "reinforced-payload-router" => PayloadRouter::new(3, false, cost!(Tungsten: 15)); - "payload-mass-driver" -> BridgeBlock::new(3, true, cost!(Tungsten: 120, Silicon: 120, Graphite: 50), 700, false); - "large-payload-mass-driver" -> BridgeBlock::new(5, true, cost!(Thorium: 200, Tungsten: 200, Silicon: 200, Graphite: 100, Oxide: 30), 1100, false); - "small-deconstructor" => SimplePayloadBlock::new(3, true, cost!(Beryllium: 100, Silicon: 100, Oxide: 40, Graphite: 80)); - "deconstructor" => SimplePayloadBlock::new(5, true, cost!(Beryllium: 250, Oxide: 100, Silicon: 250, Carbide: 250)); - "constructor" => PayloadBlock::new(3, true, cost!(Silicon: 100, Beryllium: 150, Tungsten: 80)); - "large-constructor" => PayloadBlock::new(5, true, cost!(Silicon: 150, Oxide: 150, Tungsten: 200, PhaseFabric: 40)); - "payload-loader" => SimplePayloadBlock::new(3, false, cost!(Graphite: 50, Silicon: 50, Tungsten: 80)); - "payload-unloader" => SimplePayloadBlock::new(3, false, cost!(Graphite: 50, Silicon: 50, Tungsten: 30)); - "copper-wall" -> WallBlock::new(1, true, cost!(Copper: 6)); - "copper-wall-large" -> WallBlock::new(2, true, cost!(Copper: 6 * 4)); - "titanium-wall" -> WallBlock::new(1, true, cost!(Titanium: 6)); - "titanium-wall-large" -> WallBlock::new(2, true, cost!(Titanium: 6 * 4)); - "plastanium-wall" -> WallBlock::new(1, true, cost!(Metaglass: 2, Plastanium: 5)); - "plastanium-wall-large" -> WallBlock::new(2, true, cost!(Metaglass: 2 * 4, Plastanium: 5 * 4)); - "thorium-wall" -> WallBlock::new(1, true, cost!(Thorium: 6)); - "thorium-wall-large" -> WallBlock::new(2, true, cost!(Thorium: 6 * 4)); - "phase-wall" -> WallBlock::new(1, true, cost!(PhaseFabric: 6)); - "phase-wall-large" -> WallBlock::new(2, true, cost!(PhaseFabric: 6 * 4)); - "surge-wall" -> WallBlock::new(1, true, cost!(SurgeAlloy: 6)); - "surge-wall-large" -> WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4)); - "door" => DoorBlock::new(1, true, cost!(Titanium: 6, Silicon: 4)); - "door-large" => DoorBlock::new(2, true, cost!(Titanium: 6 * 4, Silicon: 4 * 4)); - "tungsten-wall" -> WallBlock::new(1, true, cost!(Tungsten: 6)); - "tungsten-wall-large" -> WallBlock::new(2, true, cost!(Tungsten: 6 * 4)); - "blast-door" -> DoorBlock::new(2, true, cost!(Tungsten: 24, Silicon: 24)); - "reinforced-surge-wall" -> WallBlock::new(1, true, cost!(SurgeAlloy: 6, Tungsten: 2)); - "reinforced-surge-wall-large" -> WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4, Tungsten: 2 * 4)); - "carbide-wall" -> WallBlock::new(1, true, cost!(Thorium: 6, Carbide: 6)); - "carbide-wall-large" -> WallBlock::new(2, true, cost!(Thorium: 6 * 4, Carbide: 6 * 4)); - "shielded-wall" -> WallBlock::new(2, true, cost!(PhaseFabric: 20, SurgeAlloy: 12, Beryllium: 12)); - "beryllium-wall" -> WallBlock::new(1, true, cost!(Beryllium: 6)); - "beryllium-wall-large" -> WallBlock::new(2, true, cost!(Beryllium: 6 * 4)); - "scrap-wall" -> WallBlock::new(1, true, cost!(Scrap: 6)); - "scrap-wall-large" -> WallBlock::new(2, true, cost!(Scrap: 24)); - "scrap-wall-huge" -> WallBlock::new(3, true, cost!(Scrap: 54)); - "scrap-wall-gigantic" -> WallBlock::new(4, true, cost!(Scrap: 96)); - "thruster" => WallBlock::new(4, false, cost!(Scrap: 96)); - "mender" -> HeatedBlock::new(1, true, cost!(Copper: 25, Lead: 30)); - "mend-projector" -> HeatedBlock::new(2, true, cost!(Copper: 50, Lead: 100, Titanium: 25, Silicon: 40)); - "overdrive-projector" -> HeatedBlock::new(2, true, cost!(Lead: 100, Titanium: 75, Silicon: 75, Plastanium: 30)); - "overdrive-dome" -> HeatedBlock::new(3, true, cost!(Lead: 200, Titanium: 130, Silicon: 130, Plastanium: 80, SurgeAlloy: 120)); - "force-projector" -> BasicBlock::new(3, true, cost!(Lead: 100, Titanium: 75, Silicon: 125)); - "regen-projector" -> BasicBlock::new(3, true, cost!(Silicon: 80, Tungsten: 60, Oxide: 40, Beryllium: 80)); - "shock-mine" -> BasicBlock::new(1, true, cost!(Lead: 25, Silicon: 12)); - "radar" -> RadarBlock::new(1, true, cost!(Silicon: 60, Graphite: 50, Beryllium: 10)); - "build-tower" -> BasicBlock::new(3, true, cost!(Silicon: 150, Oxide: 40, Thorium: 60)); - "shockwave-tower" -> BasicBlock::new(3, true, cost!(SurgeAlloy: 50, Silicon: 150, Oxide: 30, Tungsten: 100)); - "reinforced-pump" -> BasicBlock::new(2, true, cost!(Beryllium: 40, Tungsten: 30, Silicon: 20)); - "mechanical-pump" -> BasicBlock::new(1, true, cost!(Copper: 15, Metaglass: 10)); - "rotary-pump" -> BasicBlock::new(2, true, cost!(Copper: 70, Metaglass: 50, Titanium: 35, Silicon: 20)); - "impulse-pump" -> BasicBlock::new(3, true, cost!(Copper: 80, Metaglass: 90, Titanium: 40, Thorium: 35, Silicon: 30)); - "conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1)); - "pulse-conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1, Titanium: 2)); - "plated-conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1, Thorium: 2, Plastanium: 1)); - "liquid-router" -> BasicBlock::new(1, true, cost!(Metaglass: 2, Graphite: 4)); - "liquid-container" -> BasicBlock::new(2, true, cost!(Metaglass: 15, Titanium: 10)); - "liquid-tank" -> BasicBlock::new(3, true, cost!(Metaglass: 40, Titanium: 30)); - "liquid-junction" -> BasicBlock::new(1, true, cost!(Metaglass: 8, Graphite: 4)); - "bridge-conduit" -> BridgeBlock::new(1, true, cost!(Metaglass: 8, Graphite: 4), 4, true); - "phase-conduit" -> BridgeBlock::new(1, true, cost!(Metaglass: 20, Titanium: 10, Silicon: 7, PhaseFabric: 5), 12, true); - "reinforced-conduit" => ConduitBlock::new(1, false, cost!(Beryllium: 2)); - "reinforced-liquid-junction" -> BasicBlock::new(1, true, cost!(Graphite: 4, Beryllium: 8)); - "reinforced-bridge-conduit" => BridgeBlock::new(1, true, cost!(Graphite: 8, Beryllium: 20), 4, true); - "reinforced-liquid-router" -> BasicBlock::new(1, true, cost!(Graphite: 8, Beryllium: 4)); - "reinforced-liquid-container" -> BasicBlock::new(2, true, cost!(Tungsten: 10, Beryllium: 16)); - "reinforced-liquid-tank" -> BasicBlock::new(3, true, cost!(Tungsten: 40, Beryllium: 50)); - "ground-factory" => UnitFactory::new(3, false, cost!(Copper: 50, Lead: 120, Silicon: 80), units::GROUND_UNITS); - "air-factory" => UnitFactory::new(3, false, cost!(Copper: 60, Lead: 70), units::AIR_UNITS); - "naval-factory" => UnitFactory::new(3, false, cost!(Copper: 150, Lead: 130, Metaglass: 120), units::NAVAL_UNITS); - "additive-reconstructor" => ConstructorBlock::new(3, false, cost!(Copper: 200, Lead: 120, Silicon: 90)); - "multiplicative-reconstructor" => ConstructorBlock::new(5, false, cost!(Lead: 650, Titanium: 350, Thorium: 650, Silicon: 450)); - "exponential-reconstructor" => ConstructorBlock::new(7, false, cost!(Lead: 2000, Titanium: 2000, Thorium: 750, Silicon: 1000, Plastanium: 450, PhaseFabric: 600)); - "tetrative-reconstructor" => ConstructorBlock::new(9, false, cost!(Lead: 4000, Thorium: 1000, Silicon: 3000, Plastanium: 600, PhaseFabric: 600, SurgeAlloy: 800)); - "repair-point" -> RepairTurret::new(1, true, cost!(Copper: 30, Lead: 30, Silicon: 20)); - "repair-turret" -> RepairTurret::new(2, true, cost!(Thorium: 80, Silicon: 90, Plastanium: 60)); - "tank-fabricator" => UnitFactory::new(3, true, cost!(Silicon: 200, Beryllium: 150), &[crate::unit::Type::Stell]); - "ship-fabricator" => UnitFactory::new(3, true, cost!(Silicon: 250, Beryllium: 200), &[crate::unit::Type::Elude]); - "mech-fabricator" => UnitFactory::new(3, true, cost!(Silicon: 200, Graphite: 300, Tungsten: 60), &[crate::unit::Type::Merui]); - "tank-refabricator" => ConstructorBlock::new(3, true, cost!(Beryllium: 200, Tungsten: 80, Silicon: 100)); - "mech-refabricator" => ConstructorBlock::new(3, true, cost!(Beryllium: 250, Tungsten: 120, Silicon: 150)); - "ship-refabricator" => ConstructorBlock::new(3, true, cost!(Beryllium: 200, Tungsten: 100, Silicon: 150, Oxide: 40)); - "prime-refabricator" => ConstructorBlock::new(5, true, cost!(Thorium: 250, Oxide: 200, Tungsten: 200, Silicon: 400)); - "tank-assembler" => AssemblerBlock::new(5, true, cost!(Thorium: 500, Oxide: 150, Carbide: 80, Silicon: 500)); - "ship-assembler" => AssemblerBlock::new(5, true, cost!(Carbide: 100, Oxide: 200, Tungsten: 500, Silicon: 800, Thorium: 400)); - "mech-assembler" => AssemblerBlock::new(5, true, cost!(Carbide: 200, Thorium: 600, Oxide: 200, Tungsten: 500, Silicon: 900)); // smh collaris - "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(4, 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)); - "laser-drill" -> DrillBlock::new(3, true, cost!(Copper: 35, Graphite: 30, Titanium: 20, Silicon: 30)); - "blast-drill" -> DrillBlock::new(4, true, cost!(Copper: 65, Titanium: 50, Thorium: 75, Silicon: 60)); - "water-extractor" -> BasicBlock::new(2, true, cost!(Copper: 30, Lead: 30, Metaglass: 30, Graphite: 30)); - "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)); - "eruption-drill" -> DrillBlock::new(5, true, cost!(Silicon: 200, Oxide: 20, Tungsten: 200, Thorium: 120)); - "reinforced-message" -> MessageLogic::new(1, true, cost!(Graphite: 10, Beryllium: 5)); - "message" -> MessageLogic::new(1, true, cost!(Copper: 5, Graphite: 5)); - "switch" => SwitchLogic::new(1, true, cost!(Copper: 5, Graphite: 5)); - "micro-processor" -> ProcessorLogic::new(1, true, cost!(Copper: 90, Lead: 50, Silicon: 50)); - "logic-processor" -> ProcessorLogic::new(2, true, cost!(Lead: 320, Graphite: 60, Thorium: 50, Silicon: 80)); - "hyper-processor" -> ProcessorLogic::new(3, true, cost!(Lead: 450, Thorium: 75, Silicon: 150, SurgeAlloy: 50)); - "memory-cell" -> MemoryBlock::new(1, true, cost!(Copper: 30, Graphite: 30, Silicon: 30)); - "memory-bank" -> MemoryBlock::new(2, true, cost!(Copper: 30, Graphite: 80, Silicon: 80, PhaseFabric: 30)); - "logic-display" -> BasicBlock::new(3, true, cost!(Lead: 100, Metaglass: 50, Silicon: 50)); - "large-logic-display" -> BasicBlock::new(6, true, cost!(Lead: 200, Metaglass: 100, Silicon: 150, PhaseFabric: 75)); - "tile-logic-display" => TileableDisplay::new(1, false, cost!(Lead: 8, Silicon: 8, Metaglass: 8, PhaseFabric: 3)); - "canvas" => CanvasBlock::new(2, true, cost!(Silicon: 30, Beryllium: 10), 12); - "illuminator" -> LampBlock::new(1, true, cost!(Lead: 8, Graphite: 12, Silicon: 8)); - "power-node" -> ConnectorBlock::new(1, true, cost!(Copper: 1, Lead: 3), 10); - "power-node-large" -> ConnectorBlock::new(2, true, cost!(Lead: 10, Titanium: 5, Silicon: 3), 15); - "surge-tower" -> ConnectorBlock::new(2, true, cost!(Lead: 10, Titanium: 7, Silicon: 15, SurgeAlloy: 15), 2); - "diode" => DiodeBlock::new(1, false, cost!(Metaglass: 10, Silicon: 10, Plastanium: 5)); - "battery" -> BasicBlock::new(1, true, cost!(Copper: 5, Lead: 20)); - "battery-large" -> BasicBlock::new(3, true, cost!(Lead: 50, Titanium: 20, Silicon: 30)); - "combustion-generator" -> GeneratorBlock::new(1, true, cost!(Copper: 25, Lead: 15)); - "thermal-generator" -> GeneratorBlock::new(2, true, cost!(Copper: 40, Lead: 50, Metaglass: 40, Graphite: 35, Silicon: 35)); - "steam-generator" -> GeneratorBlock::new(2, true, cost!(Copper: 35, Lead: 40, Graphite: 25, Silicon: 30)); - "differential-generator" -> GeneratorBlock::new(3, true, cost!(Copper: 70, Lead: 100, Metaglass: 50, Titanium: 50, Silicon: 65)); - "rtg-generator" -> GeneratorBlock::new(2, true, cost!(Lead: 100, Thorium: 50, Silicon: 75, Plastanium: 75, PhaseFabric: 25)); - "solar-panel" -> GeneratorBlock::new(1, true, cost!(Lead: 10, Silicon: 15)); - "solar-panel-large" -> GeneratorBlock::new(3, true, cost!(Lead: 80, Silicon: 110, PhaseFabric: 15)); - "thorium-reactor" -> NuclearGeneratorBlock::new(3, true, cost!(Lead: 300, Metaglass: 50, Graphite: 150, Thorium: 150, Silicon: 200)); - "impact-reactor" -> ImpactReactorBlock::new(4, true, cost!(Lead: 500, Metaglass: 250, Graphite: 400, Thorium: 100, Silicon: 300, SurgeAlloy: 250)); - "beam-node" -> ConnectorBlock::new(1, true, cost!(Beryllium: 8), 4); - "beam-tower" -> ConnectorBlock::new(3, true, cost!(Beryllium: 30, Oxide: 10, Silicon: 10), 12); - "turbine-condenser" -> GeneratorBlock::new(3, true, cost!(Beryllium: 60)); - "chemical-combustion-chamber" -> GeneratorBlock::new(3, true, cost!(Graphite: 40, Tungsten: 40, Oxide: 40, Silicon: 30)); - "pyrolysis-generator" -> GeneratorBlock::new(3, true, cost!(Graphite: 50, Carbide: 50, Oxide: 60, Silicon: 50)); - "flux-reactor" -> GeneratorBlock::new(5, true, cost!(Graphite: 300, Carbide: 200, Oxide: 100, Silicon: 600, SurgeAlloy: 300)); - "neoplasia-reactor" => Neoplasia::new(5, true, cost!(Tungsten: 1000, Carbide: 300, Oxide: 150, Silicon: 500, PhaseFabric: 300, SurgeAlloy: 200)); - "core-shard" -> BasicBlock::new(3, true, cost!(Copper: 1000, Lead: 800)); - "core-foundation" -> BasicBlock::new(4, true, cost!(Copper: 3000, Lead: 3000, Silicon: 2000)); - "core-nucleus" -> BasicBlock::new(5, true, cost!(Copper: 8000, Lead: 8000, Thorium: 4000, Silicon: 5000)); - "core-bastion" -> BasicBlock::new(4, true, cost!(Graphite: 1000, Silicon: 1000, Beryllium: 800)); - "core-citadel" -> BasicBlock::new(5, true, cost!(Silicon: 4000, Beryllium: 4000, Tungsten: 3000, Oxide: 1000)); - "core-acropolis" -> BasicBlock::new(6, true, cost!(Beryllium: 6000, Silicon: 5000, Tungsten: 5000, Carbide: 3000, Oxide: 3000)); - "container" -> BasicBlock::new(2, true, cost!(Titanium: 100)); - "vault" -> BasicBlock::new(3, true, cost!(Titanium: 250, Thorium: 125)); - "reinforced-container" -> BasicBlock::new(2, true, cost!(Tungsten: 30, Graphite: 40)); - "reinforced-vault" -> BasicBlock::new(3, true, cost!(Tungsten: 125, Thorium: 70, Beryllium: 100)); - "duo" -> ItemTurret::new(1, true, cost!(Copper: 35)); - "scatter" -> ItemTurret::new(2, true, cost!(Copper: 85, Lead: 45)); - "scorch" -> ItemTurret::new(1, true, cost!(Copper: 25, Graphite: 22)); - "hail" -> ItemTurret::new(1, true, cost!(Copper: 40, Graphite: 17)); - "wave" -> Turret::new(2, true, cost!(Copper: 25, Lead: 75, Metaglass: 45)); - "tsunami" -> Turret::new(3, true, cost!(Lead: 400, Metaglass: 100, Titanium: 250, Thorium: 100)); - "lancer" -> Turret::new(2, true, cost!(Copper: 60, Lead: 70, Titanium: 30, Silicon: 60)); - "arc" -> Turret::new(1, true, cost!(Copper: 50, Lead: 50)); - "parallax" -> TractorBeamTurret::new(2, true, cost!(Graphite: 30, Titanium: 90, Silicon: 120)); - "swarmer" -> ItemTurret::new(2, true, cost!(Graphite: 35, Titanium: 35, Silicon: 30, Plastanium: 45)); - "salvo" -> ItemTurret::new(2, true, cost!(Copper: 100, Graphite: 80, Titanium: 50)); - "segment" -> PointDefenseTurret::new(2, true, cost!(Titanium: 40, Thorium: 80, Silicon: 130, PhaseFabric: 40)); - "fuse" -> ItemTurret::new(3, true, cost!(Copper: 225, Graphite: 225, Thorium: 100)); - "ripple" -> ItemTurret::new(3, true, cost!(Copper: 150, Graphite: 135, Titanium: 60)); - "cyclone" -> ItemTurret::new(3, true, cost!(Copper: 200, Titanium: 125, Plastanium: 80)); - "foreshadow" -> ItemTurret::new(4, true, cost!(Copper: 1000, Metaglass: 600, Silicon: 600, Plastanium: 200, SurgeAlloy: 300)); - "spectre" -> ItemTurret::new(4, true, cost!(Copper: 900, Graphite: 300, Thorium: 250, Plastanium: 175, SurgeAlloy: 250)); - "meltdown" -> Turret::new(4, true, cost!(Copper: 1200, Lead: 350, Graphite: 300, Silicon: 325, SurgeAlloy: 325)); - "breach" -> ItemTurret::new(3, true, cost!(Beryllium: 150, Silicon: 150, Graphite: 250)); - "diffuse" -> ItemTurret::new(3, true, cost!(Beryllium: 150, Silicon: 200, Graphite: 200, Tungsten: 50)); - "sublimate" -> ContinousTurret::new(3, true, cost!(Tungsten: 150, Silicon: 200, Oxide: 40, Beryllium: 400)); - "titan" -> ItemTurret::new(4, true, cost!(Tungsten: 250, Silicon: 300, Thorium: 400)); - "disperse" -> ItemTurret::new(4, true, cost!(Thorium: 50, Oxide: 150, Silicon: 200, Beryllium: 350)); - "afflict" -> Turret::new(4, true, cost!(SurgeAlloy: 100, Silicon: 200, Graphite: 250, Oxide: 40)); - "lustre" -> ContinousTurret::new(4, true, cost!(Silicon: 250, Graphite: 200, Oxide: 50, Carbide: 90)); - "scathe" -> ItemTurret::new(4, true, cost!(Oxide: 200, SurgeAlloy: 400, Silicon: 800, Carbide: 500, PhaseFabric: 300)); - "malign" -> Turret::new(5, true, cost!(Carbide: 400, Beryllium: 2000, Silicon: 800, Graphite: 800, PhaseFabric: 300)); - "smite" -> ItemTurret::new(5, true, cost!(Oxide: 200, SurgeAlloy: 400, Silicon: 800, Carbide: 500, PhaseFabric: 300)); - // sandbox only - "beam-link" -> ConnectorBlock::new(3, true, &[], 12); - "power-source" -> ConnectorBlock::new(1, true, &[], 100); - "power-void" -> BasicBlock::new(1, true, &[]); - "world-processor" -> ProcessorLogic::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, &[]); - "large-shield-projector" -> ShieldBlock::new(4, true, &[]); - "payload-source" => PayloadBlock::new(5, false, &[]); - "payload-void" => SimplePayloadBlock::new(5, true, &[]); - "item-source" => ItemBlock::new(1, true, &[]); - "item-void" -> BasicBlock::new(1, true, &[]); - "heat-source" => HeatCrafter::new(1, false, &[]); -} diff --git a/mindus/src/block/payload.rs b/mindus/src/block/payload.rs deleted file mode 100644 index 80a8a6f..0000000 --- a/mindus/src/block/payload.rs +++ /dev/null @@ -1,272 +0,0 @@ -//! payload related bits and bobs -use thiserror::Error; - -use crate::block::content::Type as BlockEnum; -use crate::block::simple::*; -use crate::block::{self, *}; -use crate::content; -use crate::data::ReadError; -use crate::data::dynamic::DynType; -use crate::data::entity_mapping; -use crate::unit; - -make_simple!(SimplePayloadBlock, |_, n, _, _, r: Rotation, scl| { - match n { - "deconstructor" | "small-deconstructor" | "payload-void" => { - let mut base = load!(from n which is ["deconstructor" | "small-deconstructor" | "payload-void"], scl); - let mut r#in = load!(scl -> match n { - "small-deconstructor" => "factory-in-3", - _ => "factory-in-5", - }); - unsafe { r#in.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&r#in) }; - let top = load!(scl -> match n { - "small-deconstructor" => "small-deconstructor-top", - "deconstructor" => "deconstructor-top", - _ => "payload-void-top", - }); - unsafe { base.overlay(&top) }; - base - } - // "payload-loader" | "payload-unloader" - _ => { - let mut base = load!(from n which is ["payload-loader" | "payload-unloader"], scl); - let mut input = load!("factory-in-3-dark", scl); - unsafe { input.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&input) }; - - let mut output = load!("factory-out-3-dark", scl); - unsafe { output.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&output) }; - - let top = - load!(concat "top" => n which is ["payload-loader" | "payload-unloader"], scl); - unsafe { base.overlay(&top) }; - base - } - } -}); -make_simple!( - PayloadConveyor, - |_, n, _, _, r: Rotation, s| { - let mut base = - load!(from n which is ["payload-conveyor" | "reinforced-payload-conveyor"], s); - unsafe { base.rotate(r.rotated(false).count()) }; - base - }, - read_payload_conveyor -); - -make_simple!( - PayloadRouter, - |_, n, _, _, r: Rotation, s| { - let mut base = load!(from n which is ["payload-router" | "reinforced-payload-router"], s); - unsafe { base.rotate(r.rotated(false).count()) }; - let over = - load!(concat "over" => n which is ["payload-router" | "reinforced-payload-router"], s); - unsafe { base.overlay(&over) }; - base - }, - read_payload_router -); - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)] -/// payload item cfg -pub enum Payload { - Empty, - Block(block::content::Type), - Unit(unit::Type), -} - -/// a payload related block with [item cfg](Payload) -pub struct PayloadBlock { - size: u8, - symmetric: bool, - build_cost: BuildCost, -} - -impl PayloadBlock { - #[must_use] - pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { - assert!(size != 0, "invalid size"); - Self { - size, - symmetric, - build_cost, - } - } - - state_impl!(pub Payload); -} - -impl BlockLogic for PayloadBlock { - impl_block!(); - - fn draw( - &self, - name: &str, - _: Option<&State>, - _: Option<&RenderingContext>, - r: Rotation, - s: Scale, - ) -> ImageHolder<4> { - let mut base = - load!(from name which is ["constructor" | "large-constructor" | "payload-source"], s); - let mut out = load!(s -> match name { - "constructor" => "factory-out-3", - "large-constructor" => "factory-out-5-dark", - _ => "factory-out-5", - }); - unsafe { out.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&out) }; - let top = load!(concat "top" => name which is ["constructor" | "large-constructor" | "payload-source"], s); - unsafe { base.overlay(&top) }; - base - } - - fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { - Ok(DynData::Empty) - } - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { - match data { - DynData::Empty => Ok(Some(Self::create_state(Payload::Empty))), - DynData::Content(content::Type::Block, id) => { - let block = PayloadDeserializeError::forward(block::content::Type::try_from(id))?; - Ok(Some(Self::create_state(Payload::Block(block)))) - } - DynData::Content(content::Type::Unit, id) => { - let unit = PayloadDeserializeError::forward(unit::Type::try_from(id))?; - Ok(Some(Self::create_state(Payload::Unit(unit)))) - } - DynData::Content(have, ..) => Err(DeserializeError::Custom(Box::new( - PayloadDeserializeError::ContentType(have), - ))), - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::Content, - }), - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - match Self::get_state(state) { - Payload::Empty => Ok(DynData::Empty), - Payload::Block(block) => Ok(DynData::Content(content::Type::Block, (*block).into())), - Payload::Unit(unit) => Ok(DynData::Content(content::Type::Unit, (*unit).into())), - } - } -} - -/// format: -/// - call [`read_payload_conveyor`] -/// - t: [`u8`] -/// - sort: [`u16`] -/// - recdir: [`u8`] -fn read_payload_router(b: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - read_payload_conveyor(b, buff)?; - buff.skip(4) -} - -/// format: -/// - [`skip(4)`](`DataRead::skip`) -/// - rot: [`f32`] -/// - become [`read_payload`] -fn read_payload_conveyor(_: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - buff.skip(8)?; - read_payload(buff) -} - -/// format: -/// - iterate [`i16`]..0 -/// - [`u8`], [`i16`], [`i32`] -pub(crate) fn read_payload_seq(buff: &mut DataRead) -> Result<(), DataReadError> { - let amount = (-buff.read_i16()?) as usize; - buff.skip(amount * 7) -} - -/// format: -/// - vector: ([`f32`], [`f32`]) -/// - rotation: [`f32`] -/// - become [`read_payload`] -pub(crate) fn read_payload_block(buff: &mut DataRead) -> Result<(), DataReadError> { - buff.skip(12)?; - read_payload(buff) -} - -/// format: -/// - exists: [`bool`] -/// - if !exists: ok -/// - type: [`u8`] -/// - if type == `1` (payload block): -/// - block: [`u16`] -/// - version: [`u8`] -/// - [`BlockLogic::read`] (recursion :ferrisHmm:), -/// - if type == 2 (paylood unit): -/// - id: [`u8`] -/// - call [`UnitClass::read`](crate::data::entity_mapping::UnitClass::read) -pub fn read_payload(buff: &mut DataRead) -> Result<(), DataReadError> { - if !buff.read_bool()? { - return Ok(()); - } - let t = buff.read_u8()?; - const BLOCK: u8 = 1; - const UNIT: u8 = 0; - match t { - BLOCK => { - let b = buff.read_u16()?; - buff.skip(1)?; - let block = BlockEnum::try_from(b) - .unwrap_or(BlockEnum::Router) - .to_block() - .expect("payload should not be a environment block"); - let mut b = Build::new(block); - let _ = b.read(buff); - } - UNIT => { - let u = buff.read_u8()? as usize; - let Some(&Some(u)) = entity_mapping::ID.get(u) else { - return Err(ReadError::Expected("map entry")); - }; - let _ = u.read(buff)?; - } - _ => return Err(ReadError::Expected("0 | 1")), - } - Ok(()) -} - -#[cfg(test)] -mod tests { - - use super::*; - #[test] - fn payload_conv() { - let mut r = DataRead::new(&[0, 0, 0, 0, 0, 0, 0, 0, 0]); - read_payload_conveyor(&mut Build::new(&PAYLOAD_CONVEYOR), &mut r).unwrap(); - assert!(r.read_bool().is_err()); - let mut r = DataRead::new(&[ - 65, 198, 232, 0, 67, 51, 255, 249, 1, 1, 0, 157, 0, 67, 197, 128, 0, 128, 1, 3, - ]); - read_payload_conveyor(&mut Build::new(&PAYLOAD_CONVEYOR), &mut r).unwrap(); - assert!(r.read_bool().is_err()); - } -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] -pub enum PayloadDeserializeError { - #[error("expected Unit or Block but got {0:?}")] - ContentType(content::Type), - #[error("payload block not found")] - BlockNotFound(#[from] block::content::TryFromU16Error), - #[error("payload unit not found")] - UnitNotFound(#[from] unit::TryFromU16Error), -} - -impl PayloadDeserializeError { - pub fn forward<T, E: Into<Self>>(result: Result<T, E>) -> Result<T, DeserializeError> { - match result { - Ok(v) => Ok(v), - Err(e) => Err(DeserializeError::Custom(Box::new(e.into()))), - } - } -} diff --git a/mindus/src/block/power.rs b/mindus/src/block/power.rs deleted file mode 100644 index 3fde947..0000000 --- a/mindus/src/block/power.rs +++ /dev/null @@ -1,213 +0,0 @@ -//! power connection and generation -use thiserror::Error; - -use crate::block::simple::*; -use crate::block::*; -use crate::data::dynamic::DynType; - -make_simple!(GeneratorBlock => |_, buff: &mut DataRead| read_generator(buff)); -make_simple!(NuclearGeneratorBlock => |_, buff: &mut DataRead| read_nuclear(buff)); -make_simple!(ImpactReactorBlock => |_, buff: &mut DataRead| read_impact(buff)); -make_simple!( - Neoplasia, - |_, _, _, _, rot: Rotation, scl| { - let mut base = load!("neoplasia-reactor", scl); - let mut top = load!(scl -> match rot { - Rotation::Up | Rotation::Right => "neoplasia-reactor-top1", - Rotation::Down | Rotation::Left => "neoplasia-reactor-top2", - }); - unsafe { top.rotate(rot.rotated(false).count()) }; - unsafe { base.overlay(&top) }; - base - }, - |_, buff: &mut DataRead| read_heater(buff) -); -make_simple!(DiodeBlock, |_, _, _, _, rot: Rotation, s| { - let mut base = load!("diode", s); - if rot == Rotation::Right { - return base; - } - let mut top = load!("diode-arrow", s); - unsafe { top.rotate(rot.rotated(false).count()) }; - unsafe { base.overlay(&top) }; - base -}); - -pub struct ConnectorBlock { - size: u8, - symmetric: bool, - build_cost: BuildCost, - pub max: u8, -} - -impl ConnectorBlock { - #[must_use] - pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost, max: u8) -> Self { - assert!(size != 0, "invalid size"); - assert!( - !(max == 0 || max > i8::MAX as u8), - "invalid maximum link count" - ); - Self { - size, - symmetric, - build_cost, - max, - } - } - state_impl!(pub Vec<(i16, i16)>); -} - -impl BlockLogic for ConnectorBlock { - impl_block!(); - - fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { - Ok(DynData::Empty) - } - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { - match data { - DynData::Empty => Ok(Some(Self::create_state(Vec::new()))), - DynData::Point2Array(s) => Ok(Some(Self::create_state(s))), - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::Boolean, - }), - } - } - - fn mirror_state(&self, state: &mut State, horizontally: bool, vertically: bool) { - for (dx, dy) in &mut *Self::get_state_mut(state) { - if horizontally { - *dx = -*dx; - } - if vertically { - *dy = -*dy; - } - } - } - - fn rotate_state(&self, state: &mut State, clockwise: bool) { - for (dx, dy) in &mut *Self::get_state_mut(state) { - let (cdx, cdy) = (*dx, *dy); - *dx = if clockwise { cdy } else { -cdy }; - *dy = if clockwise { -cdx } else { cdx }; - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - Ok(DynData::Point2Array(Self::get_state(state).clone())) - } -} - -#[derive(Debug, Error)] -pub enum ConnectorDeserializeError { - #[error("too many links ({have} but only {max} allowed)")] - LinkCount { have: usize, max: u8 }, -} - -impl ConnectorDeserializeError { - pub fn forward<T, E: Into<Self>>(result: Result<T, E>) -> Result<T, DeserializeError> { - match result { - Ok(v) => Ok(v), - Err(e) => Err(DeserializeError::Custom(Box::new(e.into()))), - } - } -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)] -pub struct Rgba(u8, u8, u8, u8); - -impl From<u32> for Rgba { - fn from(value: u32) -> Self { - Self( - (value >> 24) as u8, - (value >> 16) as u8, - (value >> 8) as u8, - value as u8, - ) - } -} - -impl From<Rgba> for u32 { - fn from(value: Rgba) -> Self { - (u32::from(value.0) << 24) - | (u32::from(value.1) << 16) - | (u32::from(value.2) << 8) - | u32::from(value.3) - } -} - -pub struct LampBlock { - size: u8, - symmetric: bool, - build_cost: BuildCost, -} - -impl LampBlock { - #[must_use] - pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { - assert!(size != 0, "invalid size"); - Self { - size, - symmetric, - build_cost, - } - } - - state_impl!(pub Rgba); -} - -impl BlockLogic for LampBlock { - impl_block!(); - - fn data_from_i32(&self, config: i32, _: GridPos) -> Result<DynData, DataConvertError> { - Ok(DynData::Int(config)) - } - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { - match data { - DynData::Int(rgba) => Ok(Some(Self::create_state(Rgba::from(rgba as u32)))), - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::Int, - }), - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - let state = Self::get_state(state); - Ok(DynData::Int(u32::from(*state) as i32)) - } -} - -/// format: -/// - production efficiency: [`f32`] -/// - generate time: [`f32`] -fn read_generator(buff: &mut DataRead) -> Result<(), DataReadError> { - buff.skip(8) -} - -/// format: -/// - call [`read_generator`] -/// - heat: [`f32`] -fn read_nuclear(buff: &mut DataRead) -> Result<(), DataReadError> { - read_generator(buff)?; - buff.skip(4) -} - -/// format: -/// - call [`read_generator`] -/// - warmup: [`f32`] -fn read_impact(buff: &mut DataRead) -> Result<(), DataReadError> { - read_generator(buff)?; - buff.skip(4) -} - -/// format: -/// - call [`read_generator`] -/// - heat: [`f32`] -fn read_heater(buff: &mut DataRead) -> Result<(), DataReadError> { - read_generator(buff)?; - buff.skip(4) -} diff --git a/mindus/src/block/production.rs b/mindus/src/block/production.rs deleted file mode 100644 index 589e73c..0000000 --- a/mindus/src/block/production.rs +++ /dev/null @@ -1,98 +0,0 @@ -//! the industry part of mindustry -use crate::block::simple::*; -use crate::block::*; -use crate::data::DataRead; - -// format: call [`read_production_block`], seed: [`i32`] -make_simple!(SeparatorBlock => |_, buff: &mut DataRead| buff.skip(12)); - -make_simple!( - ProductionBlock, - |_, _, _, _, r: Rotation, s| { - // electrolyzer exclusive - // ozone <- e(^) -> hydrogen - let mut base = load!("electrolyzer", s); - let mut hydro = load!(s -> match r { - Rotation::Up | Rotation::Left => "electrolyzer-hydrogen-output1" - Rotation::Down | Rotation::Right => "electrolyzer-hydrogen-output2" - }); - unsafe { hydro.rotate(r.count()) }; - unsafe { base.overlay(&hydro) }; - - let mut ozone = load!(s -> match r { - Rotation::Down | Rotation::Right => "electrolyzer-ozone-output1" - Rotation::Up | Rotation::Left => "electrolyzer-ozone-output2" - }); - unsafe { ozone.rotate(r.mirrored(true, true).count()) }; - unsafe { base.overlay(&ozone) }; - base - }, - |b: &mut Build, buff: &mut DataRead| { - // format: - // - progress: `f32` - // - warmup: `f32` - // (cultivator) - // `f32` - buff.skip(8 + if b.name() == "cultivator" { 4 } else { 0 }) - } -); - -make_simple!( - HeatCrafter, - |_, n, _, _, r: Rotation, s| { - let mut base = load!(from n which is ["phase-heater" | "electric-heater" | "oxidation-chamber" | "slag-heater" | "heat-source" | "heat-reactor"], s); - let mut top = match r { - Rotation::Up | Rotation::Right => { - load!(concat "top1" => n which is ["phase-heater" | "electric-heater" | "oxidation-chamber" | "slag-heater" | "heat-source" | "heat-reactor"], s) - } - Rotation::Down | Rotation::Left => { - load!(concat "top2" => n which is ["phase-heater" | "electric-heater" | "oxidation-chamber" | "slag-heater" | "heat-source" | "heat-reactor"], s) - } - }; - unsafe { top.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&top) }; - base - }, - |_, buff: &mut DataRead| { - // format: - // - progress: `f32` - // - warmup: `f32` - // - heat: f32 - buff.skip(12)?; - Ok(()) - } -); -make_simple!(HeatConduit, |_, n, _, _, r: Rotation, s| { - let mut base = - load!(from n which is ["heat-router" | "heat-redirector" | "small-heat-redirector"], s); - if n == "heat-router" { - let t1 = load!("heat-router-top1", s); - let t2 = load!("heat-router-top2", s); - let x = |n| unsafe { - match n { - Rotation::Up => t1.clone().rotated(3), - Rotation::Right => t1.clone(), - Rotation::Down => t2.clone().rotated(1), - Rotation::Left => t2.clone().rotated(2), - } - }; - unsafe { - base.overlay(&x(r.rotated(false))); - base.overlay(&x(r)); - base.overlay(&x(r.rotated(true))); - } - base - } else { - let mut top = match r { - Rotation::Up | Rotation::Right => { - 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" | "small-heat-redirector"], s) - } - }; - unsafe { top.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&top) }; - base - } -}); diff --git a/mindus/src/block/ratios.rs b/mindus/src/block/ratios.rs deleted file mode 100644 index ad38377..0000000 --- a/mindus/src/block/ratios.rs +++ /dev/null @@ -1,265 +0,0 @@ -use std::borrow::Cow; -use std::collections::HashMap; - -use super::State; -use crate::unit::Type::*; -#[macro_export] -macro_rules! ratios { - ([$($input:ident: $icnt:literal),*] => [$($output:ident: $ocnt:literal),*]) => {{ - #[allow(unused_imports)] - use $crate::{fluid::Type::*, item::Type::*, block::ConstFrom}; - const I: &[($crate::block::ratios::Resource, ::std::primitive::f32)] = &[$(($crate::block::ratios::Resource::fro($input), $icnt as ::std::primitive::f32),)*]; - const O: &[($crate::block::ratios::Resource, ::std::primitive::f32)] = &[$(($crate::block::ratios::Resource::fro($output), $ocnt as ::std::primitive::f32),)*]; - $crate::block::ratios::Io::new(I, O) - }}; - [$($input:ident: $cnt:literal),*] => {{ - #[allow(unused_imports)] - use $crate::{fluid::Type::*, item::Type::*, block::ConstFrom}; - const I: &[($crate::block::ratios::Resource, ::std::primitive::f32)] = &[$(($crate::block::ratios::Resource::fro($input), $cnt as ::std::primitive::f32),)*]; - $crate::block::ratios::Io::new(I, &[][..]) - }} -} -pub use ratios; -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] -pub enum Resource { - Item(crate::item::Type), - Fluid(crate::fluid::Type), -} - -impl const super::ConstFrom<crate::item::Type> for Resource { - fn fro(value: crate::item::Type) -> Self { - Self::Item(value) - } -} - -impl const super::ConstFrom<crate::fluid::Type> for Resource { - fn fro(value: crate::fluid::Type) -> Self { - Self::Fluid(value) - } -} - -#[derive(Debug, Clone)] -pub struct Io { - pub input: Cow<'static, [(Resource, f32)]>, - pub output: Cow<'static, [(Resource, f32)]>, -} - -impl PartialEq for Io { - fn eq(&self, other: &Self) -> bool { - let sort = |mut x: Vec<_>| { - x.sort_by_key(|(x, _)| *x); - x - }; - sort(self.input.to_vec()) == sort(other.input.to_vec()) - && sort(self.output.to_vec()) == sort(other.output.to_vec()) - } -} - -impl Io { - fn none() -> Self { - Self { - input: Cow::from(&[][..]), - output: Cow::from(&[][..]), - } - } - - pub fn new(input: &'static [(Resource, f32)], output: &'static [(Resource, f32)]) -> Self { - Self { - input: Cow::from(input), - output: Cow::from(output), - } - } -} - -#[derive(Default)] -pub(crate) struct IoBuilder { - pub net: HashMap<Resource, f32>, -} - -impl std::ops::AddAssign<Io> for IoBuilder { - fn add_assign(&mut self, rhs: Io) { - for &(res, n) in &*rhs.output { - *self.net.entry(res).or_default() += n; - } - for &(res, n) in &*rhs.input { - *self.net.entry(res).or_default() -= n; - } - } -} - -impl From<IoBuilder> for Io { - fn from(value: IoBuilder) -> Self { - let (mut input, output): (Vec<_>, Vec<_>) = value - .net - .into_iter() - .filter(|(_, n)| n.abs() > 0.001) - .map(|(r, n)| (r, (n * 100.0 + 0.5).floor() / 100.0)) - .partition(|&(_, n)| n < 0.0); - input.iter_mut().for_each(|(_, v)| *v = v.abs()); - Self { - input: Cow::Owned(input), - output: Cow::Owned(output), - } - } -} - -pub trait Ratios { - #[inline] - #[must_use] - #[allow(unused_variables)] - fn io(&self, state: Option<&State>, name: &str) -> Io { - Io::none() - } -} - -macro_rules! just { - ($for:ident, [$($input:ident: $icnt:literal),*] => [$($output:ident: $ocnt:literal),*]) => { - impl Ratios for super::$for { - fn io(&self, _: Option<&State>, _: &str) -> Io { - ratios!([$($input : $icnt),*] => [$($output : $ocnt),*]) - } - } - } -} - -macro_rules! rats { - ($for:ident { $($name:literal: [$($input:ident: $icnt:literal),*] => [$($output:ident: $ocnt:literal),*])+ }) => { - impl Ratios for super::$for { - fn io(&self, _: Option<&State>, name: &str) -> Io { - $(_ = crate::data::renderer::load!($name);)+ // string validation - match name { - $($name => ratios!([$($input : $icnt),*] => [$($output : $ocnt),*]),)+ - _ => Io::none() - } - } - } - }; - ($for:ident { none }) => { - impl Ratios for super::$for {} - } -} - -rats!(ConveyorBlock { none }); -rats!(JunctionBlock { none }); -rats!(StackConveyor { none }); -rats!(BridgeBlock { none }); -rats!(ItemBlock { none }); -rats!(DuctBlock { none }); -rats!(SimpleDuctBlock { none }); -rats!(FluidBlock { none }); -rats!(SurgeRouter { none }); -rats!(ProductionBlock { - "cultivator": [Water: 18] => [SporePod: 0.6] - "graphite-press": [Coal: 1.33] => [Graphite: 0.66] - "multi-press": [Coal: 6, Water: 6] => [Graphite: 4] - "silicon-smelter": [Coal: 1.5, Sand: 3] => [Silicon: 1.5] - "silicon-crucible": [Coal: 2.66, Sand: 4, Pyratite: 0.66] => [Silicon: 5.33] - "kiln": [Lead: 2, Sand: 2] => [Metaglass: 2] - "plastanium-compressor": [Oil: 15, Titanium: 2] => [Plastanium: 1] - "phase-weaver": [Thorium: 2, Sand: 5] => [PhaseFabric: 0.5] - "surge-smelter": [Copper: 2.4, Lead: 3.2, Titanium: 1.6, Silicon: 2.4] => [SurgeAlloy: 0.8] - "cryofluid-mixer": [Titanium: 0.5, Water: 12] => [Cryofluid: 12] - "pyratite-mixer": [Coal: 0.75, Lead: 1.5, Sand: 1.5] => [Pyratite: 0.75] - "blast-mixer": [Pyratite: 0.75, SporePod: 0.75] => [BlastCompound: 0.75] - "melter": [Scrap: 6] => [Slag: 12] - "spore-press": [SporePod: 3] => [Oil: 18] - "pulverizer": [Scrap: 1.5] => [Sand: 1.5] - "coal-centrifuge": [Oil: 6] => [Coal: 2] - "silicon-arc-furnace": [Graphite: 1.2, Sand: 4.8] => [Silicon: 4.8] - "electrolyzer": [Water: 10] => [Ozone: 4, Hydrogen: 6] - "atmospheric-concentrator": [] => [Nitrogen: 4] - "carbide-crucible": [Tungsten: 0.88, Graphite: 1.33] => [Carbide: 0.44] - "cyanogen-synthesizer": [Arkycite: 40, Graphite: 0.75] => [Cyanogen: 3] - "phase-synthesizer": [Thorium: 1, Sand: 3, Ozone: 2] => [PhaseFabric: 0.5] - "vent-condenser": [] => [Water: 30] -}); -rats!(SeparatorBlock { - "separator": [Slag: 4] => [Copper: 0.71, Lead: 0.43, Graphite: 0.28, Titanium: 0.28] - "disassembler": [Slag: 7.2, Scrap: 4] => [Sand: 1.6, Graphite: 0.8, Titanium: 0.8, Thorium: 0.8] -}); -rats!(HeatConduit { none }); -rats!(HeatCrafter { - "oxidation-chamber": [Ozone: 2, Beryllium: 0.5] => [Oxide: 0.5] - "phase-heater": [PhaseFabric: 0.12] => [] -}); -rats!(WallBlock { none }); -rats!(DoorBlock { none }); -rats!(HeatedBlock { none }); // these arent erekir, btw -rats!(ConduitBlock { none }); -impl Ratios for super::UnitFactory { - fn io(&self, state: Option<&State>, name: &str) -> Io { - state.map_or(Io::none(), |s| { - Self::get_state(s).map_or(Io::none(), |t| match (name, t) { - ("ground-factory", Dagger) => ratios![Silicon: 0.66, Lead: 0.66], - ("ground-factory", Crawler) => ratios![Silicon: 0.8, Coal: 1], - ("ground-factory", Nova) => ratios![Silicon: 0.75, Lead: 0.5, Titanium: 0.5], - ("air-factory", Flare) => ratios![Silicon: 1], - ("air-factory", Mono) => ratios![Silicon: 0.85, Lead: 0.42], - ("naval-factory", Risso) => ratios![Silicon: 0.44, Metaglass: 0.77], - ("naval-factory", Retusa) => ratios![Silicon: 0.3, Metaglass: 0.5, Titanium: 0.4], - ("tank-fabricator", _) => ratios![Beryllium: 1.14, Silicon: 1.42], - ("ship-fabricator", _) => ratios![Graphite: 1.25, Silicon: 1.75], - ("mech-fabricator", _) => ratios![Beryllium: 1.25, Silicon: 1.75], - (f, t) => unreachable!("{f}, {t:?}"), - }) - }) - } -} -rats!(ConstructorBlock { - "additive-reconstructor": [Silicon: 4, Graphite: 4] => [] - "multiplicative-reconstructor": [Silicon: 4.33, Titanium: 2.66, Metaglass: 1.33] => [] - "exponential-reconstructor": [Silicon: 9.44, Titanium: 8.33, Plastanium: 7.22, Cryofluid: 60] => [] - "tetrative-reconstructor": [Silicon: 4.16, Plastanium: 2.5, SurgeAlloy: 2.08, PhaseFabric: 1.45, Cryofluid: 180] => [] - "tank-refabricator": [Hydrogen: 3, Silicon: 1.33, Titanium: 1] => [] - "mech-refabricator": [Hydrogen: 3, Silicon: 1.11, Tungsten: 0.88] => [] - "ship-refabricator": [Hydrogen: 3, Silicon: 1.2, Tungsten: 0.8] => [] - "prime-refabricator": [Nitrogen: 10, Thorium: 1.33, Silicon: 1.66] => [] -}); -rats!(BasicBlock { - "water-extractor": [] => [Water: 6.6] - "unit-repair-tower": [Ozone: 3] => [] - "oil-extractor": [Water: 9, Sand: 1] => [] // *cough* -}); -rats!(WallDrillBlock { none }); // more cough -rats!(DrillBlock { - "laser-drill": [Water: 4.8] => [] - "blast-drill": [Water: 6] => [] - "large-plasma-bore": [Nitrogen: 3] => [] - "impact-drill": [Water: 12] => [] - "eruption-drill": [Hydrogen: 4] => [] -}); -rats!(MessageLogic { none }); -rats!(SwitchLogic { none }); -rats!(ProcessorLogic { "hyper-processor": [Cryofluid: 4.8] => [] }); -rats!(MemoryBlock { none }); -rats!(CanvasBlock { none }); -rats!(LampBlock { none }); -rats!(ConnectorBlock { none }); -rats!(DiodeBlock { none }); -just!(NuclearGeneratorBlock, [Thorium: 0.16, Cryofluid: 2.4] => []); // thoreactor -just!(ImpactReactorBlock, [BlastCompound: 0.42, Cryofluid: 15] => []); -just!(Neoplasia, [Arkycite: 80, Water: 10, PhaseFabric: 0.33] => [Neoplasm: 20]); -rats!(GeneratorBlock { - "differential-generator": [Pyratite: 0.27, Cryofluid: 6] => [] - "turbine-condenser": [] => [Water: 5] - "chemical-combustion-chamber": [Ozone: 2, Arkycite: 40] => [] - "pyrolysis-generator": [Slag: 20, Arkycite: 40] => [Water: 20] - "flux-reactor": [Cyanogen: 9] => [] - "rtg-generator": [Thorium: 0.07] => [] -}); -rats!(ItemTurret { none }); // eh -rats!(TractorBeamTurret { none }); -rats!(PointDefenseTurret { none }); -rats!(ContinousTurret { none }); -rats!(Turret { none }); -rats!(ShieldBlock { none }); -rats!(PayloadBlock { none }); -rats!(PayloadConveyor { none }); -rats!(SimplePayloadBlock { none }); -rats!(PayloadRouter { none }); -rats!(RadarBlock { none }); -rats!(UnitCargoLoader { "unit-cargo-loader": [Nitrogen: 10] => [] }); -rats!(AssemblerBlock { none }); -rats!(RepairTurret { none }); -rats!(AssemblerModule { none }); -rats!(TileableDisplay { none }); diff --git a/mindus/src/block/turrets.rs b/mindus/src/block/turrets.rs deleted file mode 100644 index d9c83d1..0000000 --- a/mindus/src/block/turrets.rs +++ /dev/null @@ -1,49 +0,0 @@ -//! idk why its not in the [`crate::block::defense`] module -use super::simple::make_simple; -use crate::data::{DataRead, ReadError}; - -make_simple!(Turret => |_, buff: &mut DataRead| read_turret(buff)); -make_simple!(PointDefenseTurret => |_, buff: &mut DataRead| read_point_defense_turret(buff)); -make_simple!(ContinousTurret => |_, buff: &mut DataRead| read_continous_turret(buff)); -make_simple!(TractorBeamTurret => |_, buff: &mut DataRead| read_tractor_beam_turret(buff)); -make_simple!(ItemTurret => |_, buff: &mut DataRead| read_item_turret(buff)); - -/// format: -/// - call [`read_turret`] -/// - iterate [`u8`] -/// - item: [`u16`] as [`Item`](crate::item::Type) -/// - amount: [`u16`] -fn read_item_turret(buff: &mut DataRead) -> Result<(), ReadError> { - read_turret(buff)?; - for _ in 0..buff.read_u8()? { - buff.skip(4)?; - } - Ok(()) -} - -/// format: -/// - reload: f32 -/// - rotation: f32 -fn read_turret(buff: &mut DataRead) -> Result<(), ReadError> { - buff.skip(8) -} - -/// format: -/// - rotation: [`f32`] -fn read_point_defense_turret(buff: &mut DataRead) -> Result<(), ReadError> { - buff.skip(4) -} - -/// format: -/// - call [`read_turret`] -/// - last length: [`f32`] -fn read_continous_turret(buff: &mut DataRead) -> Result<(), ReadError> { - read_turret(buff)?; - buff.skip(4) -} - -/// format: -/// - rotation: [`f32`] -fn read_tractor_beam_turret(buff: &mut DataRead) -> Result<(), ReadError> { - buff.skip(4) -} diff --git a/mindus/src/block/units.rs b/mindus/src/block/units.rs deleted file mode 100644 index 6e1bb0f..0000000 --- a/mindus/src/block/units.rs +++ /dev/null @@ -1,341 +0,0 @@ -//! unit creation related blocks -use thiserror::Error; - -use super::payload::{read_payload_block, read_payload_seq}; -use crate::block::simple::*; -use crate::block::*; -use crate::data::command::UnitCommand; -use crate::data::dynamic::DynType; -use crate::unit; - -// fn is_pay(b: &str) -> bool { -// matches!( -// b, -// "ground-factory" -// | "air-factory" -// | "naval-factory" -// | "additive-reconstructor" -// | "multiplicative-reconstructor" -// | "exponential-reconstructor" -// | "tank-fabricator" -// | "ship-fabricator" -// | "mech-fabricator" -// | "tank-refabricator" -// | "ship-refabricator" -// | "payload-conveyor" -// | "payload-router" -// | "reinforced-payload-conveyor" -// | "reinforced-payload-router" -// | "payload-mass-driver" -// | "large-payload-mass-driver" -// | "constructor" -// | "large-constructor" -// | "payload-source" -// ) -// } - -make_simple!( - AssemblerBlock, - |_, name, _, _, rot: Rotation, s| { - let mut base = - load!(from name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s); - let mut side = match rot { - Rotation::Up | Rotation::Right => { - load!(concat "side1" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s) - } - Rotation::Down | Rotation::Left => { - load!(concat "side2" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s) - } - }; - unsafe { side.rotate(rot.rotated(false).count()) }; - unsafe { base.overlay(&side) }; - let top = load!(concat "top" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s); - unsafe { base.overlay(&top) }; - base - }, - |_, buff| read_assembler(buff) -); - -/// format: -/// - call [`read_payload_block`] -/// - progress: [`f32`] -/// - iterate [`u8`] -/// - read: [`i32`] -/// - call [`read_payload_seq`] -/// - point: ([`f32`], [`f32`]) (maybe [`NaN`](f32::NAN)) -fn read_assembler(buff: &mut DataRead) -> Result<(), DataReadError> { - read_payload_block(buff)?; - buff.skip(4)?; - let n = buff.read_u8()? as usize; - buff.skip(n * 4)?; - read_payload_seq(buff)?; - buff.skip(8) -} - -make_simple!( - AssemblerModule, - |_, _, _, _, rot: Rotation, scl| { - let mut base = load!("basic-assembler-module", scl); - let mut side = load!(scl -> match rot { - Rotation::Up | Rotation::Right => "basic-assembler-module-side1", - _ => "basic-assembler-module-side2", - }); - unsafe { side.rotate(rot.rotated(false).count()) }; - unsafe { base.overlay(&side) }; - base - }, - |_, buff| read_payload_block(buff) -); - -make_simple!( - RepairTurret => |_, buff: &mut DataRead| { - buff.skip(4) // rotation: [`f32`] - } -); - -pub const GROUND_UNITS: &[unit::Type] = - &[unit::Type::Dagger, unit::Type::Crawler, unit::Type::Nova]; -pub const AIR_UNITS: &[unit::Type] = &[unit::Type::Flare, unit::Type::Mono]; -pub const NAVAL_UNITS: &[unit::Type] = &[unit::Type::Risso, unit::Type::Retusa]; - -pub struct ConstructorBlock { - size: u8, - symmetric: bool, - build_cost: BuildCost, -} - -impl ConstructorBlock { - #[must_use] - pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { - assert!(size != 0, "invalid size"); - Self { - size, - symmetric, - build_cost, - } - } - - state_impl!(pub Option<UnitCommand>); -} - -impl BlockLogic for ConstructorBlock { - impl_block!(); - - fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { - Ok(DynData::Empty) - } - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { - match data { - DynData::Empty => Ok(Some(Self::create_state(None))), - DynData::Content(crate::content::Type::UnitCommand, n) => { - Ok(Some(Self::create_state(Some( - UnitCommand::try_from(n as u8) - .map_err(|x| DeserializeError::Custom(Box::new(x)))?, - )))) - } - DynData::UnitCommand(u) => Ok(Some(Self::create_state(Some(u)))), - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::UnitCommand, - }), - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - Ok(Self::get_state(state).map_or(DynData::Empty, DynData::UnitCommand)) - } - - fn draw( - &self, - name: &str, - _: Option<&State>, - _: Option<&RenderingContext>, - rot: Rotation, - s: Scale, - ) -> ImageHolder<4> { - let mut base = load!(from name which is ["additive-reconstructor" | "multiplicative-reconstructor" | "exponential-reconstructor" | "tetrative-reconstructor" | "tank-refabricator" | "mech-refabricator" | "ship-refabricator" | "prime-refabricator"], s); - let times = rot.rotated(false).count(); - let mut out = load!(s -> match name { - "additive-reconstructor" => "factory-out-3", - "multiplicative-reconstructor" => "factory-out-5", - "tank-refabricator" | "mech-refabricator" | "ship-refabricator" => - "factory-out-3-dark", - "exponential-reconstructor" => "factory-out-7", - "prime-refabricator" => "factory-out-5-dark", - "tetrative-reconstructor" => "factory-out-9", - }); - unsafe { out.rotate(times) }; - unsafe { base.overlay(&out) }; - - let mut r#in = load!(s -> match name { - "additive-reconstructor" => "factory-in-3", - "multiplicative-reconstructor" => "factory-in-5", - "tank-refabricator" | "mech-refabricator" | "ship-refabricator" => - "factory-in-3-dark", - "exponential-reconstructor" => "factory-in-7", - "prime-refabricator" => "factory-in-5-dark", - "tetrative-reconstructor" => "factory-in-9", - }); - unsafe { r#in.rotate(times) }; - unsafe { base.overlay(&r#in) }; - - // TODO: the context cross is too small - // for i in 0..4u8 { - // if let Some((b, rot)) = dbg!(ctx.cross[i as usize]) { - // if rot.mirrored(true, true) != ctx.rotation && match rot { - // Rotation::Up => i == 3, - // Rotation::Right => i == 4, - // Rotation::Down => i == 0, - // Rotation::Left => i == 2, - // } && is_pay(b.name()) - // { - // let r = unsafe { std::mem::transmute::<u8, Rotation>(i) } - // .mirrored(true, true) - // .rotated(false); - // let mut input = input.clone(); - // input.rotate(r.count()); - // base.overlay(&input); - // } - // } - // } - let top = load!(concat "top" => name which is ["additive-reconstructor" | "multiplicative-reconstructor" | "exponential-reconstructor" | "tetrative-reconstructor" | "tank-refabricator" | "mech-refabricator" | "ship-refabricator" | "prime-refabricator"], s); - unsafe { base.overlay(&top) }; - base - } - - /// format: - /// - call [`read_payload_block`] - /// - progress: [`f32`] - /// - point: ([`f32`], [`f32`]) (maybe [`NaN`](f32::NAN)) - /// - command: [`DynData::UnitCommand`] - fn read(&self, _: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - read_payload_block(buff)?; - buff.skip(12)?; - // self.deserialize_state(DynData::deserialize(buff).unwrap()) - // .unwrap(); - Ok(()) - } -} - -pub struct UnitFactory { - size: u8, - symmetric: bool, - build_cost: BuildCost, - valid: &'static [unit::Type], -} - -impl UnitFactory { - #[must_use] - pub const fn new( - size: u8, - symmetric: bool, - build_cost: BuildCost, - valid: &'static [unit::Type], - ) -> Self { - assert!(size != 0, "invalid size"); - assert!(!valid.is_empty(), "no valid units"); - assert!(valid.len() <= i32::MAX as usize, "too many valid units"); - Self { - size, - symmetric, - build_cost, - valid, - } - } - - state_impl!(pub Option<unit::Type>); -} - -impl BlockLogic for UnitFactory { - impl_block!(); - - fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { - Ok(DynData::Int(-1)) - } - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { - match data { - DynData::Empty => Ok(Some(Self::create_state(None))), - DynData::Int(idx) => { - if idx == -1 { - Ok(Some(Self::create_state(None))) - } else if idx >= 0 && idx < self.valid.len() as i32 { - Ok(Some(Self::create_state(Some(self.valid[idx as usize])))) - } else { - Err(DeserializeError::Custom(Box::new( - AssemblerDeserializeError { - idx, - count: self.valid.len() as i32, - }, - ))) - } - } - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::Int, - }), - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - if let Some(state) = Self::get_state(state) { - for (i, curr) in self.valid.iter().enumerate() { - if curr == state { - return Ok(DynData::Int(i as i32)); - } - } - Err(SerializeError::Custom(Box::new(AssemblerSerializeError( - *state, - )))) - } else { - Ok(DynData::Int(-1)) - } - } - - fn draw( - &self, - name: &str, - _: Option<&State>, - _: Option<&RenderingContext>, - rot: Rotation, - s: Scale, - ) -> ImageHolder<4> { - let mut base = load!(from name which is ["ground-factory" | "air-factory" | "naval-factory" | "tank-fabricator" | "ship-fabricator" | "mech-fabricator"], s); - let mut out = load!(s -> match name { - "ground-factory" | "air-factory" | "naval-factory" => "factory-out-3", - _ => "factory-out-3-dark", - }); - unsafe { out.rotate(rot.rotated(false).count()) }; - unsafe { base.overlay(&out) }; - let top = load!(s -> match name { - "ground-factory" | "air-factory" | "naval-factory" => "factory-top-3", - "tank-fabricator" => "tank-fabricator-top", - "ship-fabricator" => "ship-fabricator-top", - "mech-fabricator" => "mech-fabricator-top", - }); - unsafe { base.overlay(&top) }; - base - } - - /// format: - /// - call [`read_payload_block`] - /// - progress: [`f32`] - /// - plan: [`u16`] - /// - point: ([`f32`], [`f32`]) (maybe [`NaN`](f32::NAN)) - fn read(&self, _: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - read_payload_block(buff)?; - buff.skip(14) - } -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] -#[error("invalid unit index ({idx}, valid: {count})")] -pub struct AssemblerDeserializeError { - pub idx: i32, - pub count: i32, -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] -#[error("invalid unit {0:?}")] -pub struct AssemblerSerializeError(unit::Type); diff --git a/mindus/src/block/walls.rs b/mindus/src/block/walls.rs deleted file mode 100644 index 018d7d8..0000000 --- a/mindus/src/block/walls.rs +++ /dev/null @@ -1,79 +0,0 @@ -//! walls -use crate::block::simple::*; -use crate::block::*; -use crate::data::dynamic::DynType; -use crate::data::renderer::load; - -make_simple!(WallBlock, |_, _, _, _, _, s| { - let mut base = load!("thruster", s); - unsafe { base.overlay(&load!("thruster-top", s)) }; - base -}); - -pub struct DoorBlock { - size: u8, - symmetric: bool, - build_cost: BuildCost, -} - -impl DoorBlock { - #[must_use] - pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { - assert!(size != 0, "invalid size"); - Self { - size, - symmetric, - build_cost, - } - } - - state_impl!(pub bool); -} - -impl BlockLogic for DoorBlock { - impl_block!(); - - fn draw( - &self, - name: &str, - state: Option<&State>, - _: Option<&RenderingContext>, - _: Rotation, - s: Scale, - ) -> ImageHolder<4> { - if let Some(state) = state { - if *Self::get_state(state) { - return load!(s -> match name { - "door" => "door-open", - "blast-door" => "blast-door-open", - _ => "door-large-open", - }); - }; - } - load!(from name which is ["door" | "blast-door" | "door-large"], s) - } - - fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { - Ok(DynData::Boolean(false)) - } - - fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { - match data { - DynData::Boolean(opened) => Ok(Some(Self::create_state(opened))), - _ => Err(DeserializeError::InvalidType { - have: data.get_type(), - expect: DynType::Boolean, - }), - } - } - - fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { - let state = Self::get_state(state); - Ok(DynData::Boolean(*state)) - } - - fn read(&self, build: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { - build.state = Some(Self::create_state(buff.read_bool()?)); - Ok(()) - } -} diff --git a/mindus/src/block/x.rs b/mindus/src/block/x.rs deleted file mode 100644 index 9906470..0000000 --- a/mindus/src/block/x.rs +++ /dev/null @@ -1,18 +0,0 @@ -[ - load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), - load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"), - load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), - load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"), - load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"), - load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-29"), load!("tile-logic-display-10"), load!("tile-logic-display-29"), load!("tile-logic-display-23"), load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-5"), load!("tile-logic-display-28"), load!("tile-logic-display-31"), load!("tile-logic-display-11"), load!("tile-logic-display-31"), load!("tile-logic-display-32"), - load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-3"), load!("tile-logic-display-4"), load!("tile-logic-display-15"), load!("tile-logic-display-40"), load!("tile-logic-display-15"), load!("tile-logic-display-20"), - load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-9"), load!("tile-logic-display-46"), load!("tile-logic-display-9"), load!("tile-logic-display-22"), load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-2"), load!("tile-logic-display-30"), load!("tile-logic-display-14"), load!("tile-logic-display-44"), load!("tile-logic-display-14"), load!("tile-logic-display-6"), - load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), - load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"), - load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-39"), load!("tile-logic-display-36"), load!("tile-logic-display-27"), load!("tile-logic-display-16"), load!("tile-logic-display-27"), load!("tile-logic-display-24"), - load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-17"), load!("tile-logic-display-41"), load!("tile-logic-display-17"), load!("tile-logic-display-43"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-38"), load!("tile-logic-display-37"), load!("tile-logic-display-26"), load!("tile-logic-display-21"), load!("tile-logic-display-26"), load!("tile-logic-display-25"), - load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"), - load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-29"), load!("tile-logic-display-35"), load!("tile-logic-display-29"), load!("tile-logic-display-33"), load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-5"), load!("tile-logic-display-8"), load!("tile-logic-display-31"), load!("tile-logic-display-34"), load!("tile-logic-display-31"), load!("tile-logic-display-7"), - load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-3"), load!("tile-logic-display-0"), load!("tile-logic-display-15"), load!("tile-logic-display-42"), load!("tile-logic-display-15"), load!("tile-logic-display-12"), - load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-9"), load!("tile-logic-display-45"), load!("tile-logic-display-9"), load!("tile-logic-display-19"), load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-2"), load!("tile-logic-display-1"), load!("tile-logic-display-14"), load!("tile-logic-display-18"), load!("tile-logic-display-14"), load!("tile-logic-display-13"), -]
\ No newline at end of file diff --git a/mindus/src/color_mapped b/mindus/src/color_mapped deleted file mode 100644 index 2e7b740..0000000 --- a/mindus/src/color_mapped +++ /dev/null @@ -1,390 +0,0 @@ -{ let mut l = [[0; 3]; u16::MAX as usize + 1]; -l[1] = [169,53,39]; -l[2] = [127,127,127]; -l[19] = [61,73,128]; -l[20] = [71,84,143]; -l[21] = [74,57,114]; -l[22] = [53,41,83]; -l[23] = [57,50,74]; -l[24] = [116,104,122]; -l[25] = [53,55,81]; -l[26] = [22,24,23]; -l[27] = [84,157,181]; -l[28] = [196,99,50]; -l[29] = [5,0,18]; -l[31] = [66,66,71]; -l[32] = [67,67,71]; -l[33] = [60,60,66]; -l[34] = [49,47,47]; -l[35] = [67,56,49]; -l[36] = [104,74,53]; -l[37] = [167,137,111]; -l[38] = [48,46,46]; -l[39] = [79,49,42]; -l[40] = [41,24,21]; -l[41] = [120,121,134]; -l[42] = [91,57,46]; -l[43] = [89,55,44]; -l[44] = [81,50,43]; -l[45] = [114,75,54]; -l[46] = [116,77,54]; -l[47] = [34,38,43]; -l[48] = [56,50,49]; -l[49] = [60,53,51]; -l[50] = [41,48,43]; -l[51] = [45,39,47]; -l[52] = [58,47,67]; -l[53] = [129,93,56]; -l[54] = [139,61,65]; -l[55] = [146,71,68]; -l[56] = [193,174,168]; -l[57] = [85,112,59]; -l[58] = [56,73,50]; -l[59] = [66,35,30]; -l[60] = [23,25,31]; -l[61] = [40,54,41]; -l[62] = [92,56,38]; -l[63] = [108,46,55]; -l[64] = [31,28,34]; -l[65] = [69,43,42]; -l[66] = [45,39,64]; -l[67] = [84,132,73]; -l[68] = [188,189,191]; -l[69] = [179,183,187]; -l[70] = [162,162,194]; -l[71] = [156,158,187]; -l[72] = [74,70,101]; -l[73] = [86,54,92]; -l[74] = [107,91,75]; -l[75] = [86,56,104]; -l[76] = [122,122,127]; -l[77] = [139,86,149]; -l[78] = [112,70,64]; -l[79] = [160,161,184]; -l[80] = [211,209,255]; -l[81] = [239,247,255]; -l[82] = [90,89,89]; -l[83] = [202,154,90]; -l[84] = [164,111,72]; -l[85] = [117,69,57]; -l[86] = [68,76,81]; -l[87] = [109,99,92]; -l[88] = [78,93,80]; -l[89] = [103,132,86]; -l[90] = [106,90,105]; -l[91] = [251,220,227]; -l[92] = [187,83,89]; -l[93] = [227,129,102]; -l[94] = [255,223,188]; -l[95] = [244,248,255]; -l[96] = [112,187,103]; -l[97] = [114,116,160]; -l[98] = [146,78,148]; -l[99] = [238,247,255]; -l[100] = [90,159,92]; -l[101] = [225,234,252]; -l[102] = [214,219,249]; -l[103] = [196,178,250]; -l[104] = [221,111,78]; -l[105] = [92,88,164]; -l[106] = [230,130,72]; -l[107] = [124,124,129]; -l[108] = [239,247,255]; -l[109] = [119,122,169]; -l[110] = [255,221,185]; -l[111] = [169,170,190]; -l[112] = [91,90,90]; -l[113] = [71,79,84]; -l[114] = [113,102,95]; -l[115] = [81,97,83]; -l[116] = [160,108,69]; -l[117] = [101,129,85]; -l[118] = [132,109,130]; -l[119] = [185,126,179]; -l[120] = [207,161,90]; -l[121] = [124,156,98]; -l[122] = [103,86,102]; -l[123] = [254,220,225]; -l[124] = [150,100,75]; -l[125] = [188,85,89]; -l[126] = [85,87,96]; -l[127] = [83,84,94]; -l[128] = [80,81,90]; -l[129] = [90,91,101]; -l[130] = [93,95,106]; -l[131] = [108,88,76]; -l[132] = [60,62,71]; -l[133] = [65,62,69]; -l[134] = [59,60,69]; -l[135] = [67,69,79]; -l[136] = [70,67,75]; -l[137] = [78,69,76]; -l[138] = [126,128,143]; -l[139] = [72,71,75]; -l[140] = [82,52,89]; -l[141] = [217,157,115]; -l[142] = [140,127,169]; -l[143] = [119,119,119]; -l[144] = [39,39,39]; -l[145] = [141,161,227]; -l[146] = [249,163,199]; -l[147] = [58,143,100]; -l[148] = [118,138,154]; -l[149] = [249,163,199]; -l[150] = [249,163,199]; -l[151] = [58,143,100]; -l[152] = [80,90,107]; -l[153] = [118,138,154]; -l[154] = [147,151,161]; -l[155] = [142,146,155]; -l[156] = [137,140,148]; -l[157] = [138,141,149]; -l[158] = [163,154,156]; -l[159] = [174,182,170]; -l[160] = [198,176,157]; -l[161] = [180,166,152]; -l[162] = [155,161,186]; -l[163] = [186,173,168]; -l[164] = [186,167,167]; -l[165] = [187,153,149]; -l[166] = [176,156,159]; -l[167] = [180,154,155]; -l[168] = [159,159,184]; -l[169] = [130,133,145]; -l[170] = [177,186,167]; -l[171] = [141,112,110]; -l[172] = [115,110,115]; -l[173] = [115,132,126]; -l[174] = [129,137,163]; -l[175] = [113,134,126]; -l[176] = [136,127,135]; -l[177] = [148,124,126]; -l[178] = [148,137,136]; -l[179] = [136,127,135]; -l[180] = [133,126,136]; -l[181] = [160,132,131]; -l[182] = [160,127,124]; -l[183] = [150,124,124]; -l[184] = [143,133,128]; -l[185] = [133,140,166]; -l[186] = [159,140,128]; -l[187] = [136,123,130]; -l[188] = [198,155,129]; -l[189] = [199,155,129]; -l[190] = [127,143,237]; -l[191] = [126,143,236]; -l[192] = [226,241,151]; -l[193] = [219,235,144]; -l[194] = [142,129,181]; -l[195] = [142,129,181]; -l[196] = [255,225,182]; -l[197] = [255,219,175]; -l[198] = [253,221,126]; -l[199] = [253,220,126]; -l[200] = [159,170,186]; -l[201] = [156,164,182]; -l[202] = [165,175,195]; -l[203] = [169,180,200]; -l[204] = [167,178,197]; -l[205] = [167,179,198]; -l[206] = [159,168,188]; -l[207] = [102,167,122]; -l[208] = [94,154,114]; -l[209] = [130,132,145]; -l[210] = [125,127,140]; -l[211] = [121,131,137]; -l[212] = [255,232,133]; -l[213] = [255,226,131]; -l[214] = [164,138,181]; -l[215] = [156,132,176]; -l[216] = [255,219,176]; -l[217] = [149,182,169]; -l[218] = [150,182,169]; -l[219] = [183,161,161]; -l[220] = [186,159,158]; -l[221] = [176,169,168]; -l[222] = [89,91,101]; -l[223] = [145,132,124]; -l[224] = [130,118,116]; -l[225] = [128,135,157]; -l[226] = [148,129,133]; -l[227] = [147,136,135]; -l[228] = [146,136,135]; -l[229] = [111,113,124]; -l[230] = [103,110,146]; -l[231] = [116,122,105]; -l[232] = [104,100,131]; -l[233] = [129,131,145]; -l[234] = [124,125,138]; -l[235] = [188,171,162]; -l[236] = [110,112,124]; -l[237] = [119,115,122]; -l[238] = [120,122,136]; -l[239] = [125,127,140]; -l[240] = [112,114,126]; -l[241] = [121,117,125]; -l[242] = [159,157,161]; -l[243] = [117,118,129]; -l[244] = [134,142,159]; -l[245] = [129,131,142]; -l[246] = [125,127,140]; -l[247] = [133,132,140]; -l[248] = [115,116,129]; -l[249] = [140,142,153]; -l[250] = [140,119,108]; -l[251] = [186,162,149]; -l[252] = [162,141,130]; -l[253] = [151,139,135]; -l[254] = [164,157,161]; -l[255] = [148,156,198]; -l[256] = [143,153,207]; -l[257] = [152,157,165]; -l[258] = [139,151,193]; -l[259] = [138,133,167]; -l[260] = [150,154,167]; -l[261] = [153,160,195]; -l[262] = [150,158,195]; -l[263] = [173,180,190]; -l[264] = [165,170,181]; -l[265] = [147,156,197]; -l[266] = [125,135,130]; -l[267] = [133,171,133]; -l[268] = [141,164,145]; -l[269] = [114,141,121]; -l[270] = [115,133,123]; -l[271] = [113,135,126]; -l[272] = [116,130,128]; -l[273] = [196,187,160]; -l[274] = [200,191,161]; -l[275] = [209,185,151]; -l[276] = [161,159,158]; -l[277] = [200,183,159]; -l[278] = [197,178,157]; -l[279] = [189,168,148]; -l[280] = [189,159,158]; -l[281] = [183,174,164]; -l[282] = [193,179,159]; -l[283] = [133,126,161]; -l[284] = [140,146,161]; -l[285] = [128,131,150]; -l[286] = [130,126,154]; -l[287] = [177,151,153]; -l[288] = [118,144,126]; -l[289] = [116,134,131]; -l[290] = [115,141,128]; -l[291] = [144,125,129]; -l[292] = [117,135,130]; -l[293] = [115,135,127]; -l[294] = [142,133,129]; -l[295] = [148,127,131]; -l[296] = [159,142,136]; -l[297] = [150,155,166]; -l[298] = [153,152,178]; -l[299] = [170,152,156]; -l[300] = [145,152,178]; -l[301] = [146,147,166]; -l[302] = [163,170,162]; -l[303] = [110,132,122]; -l[304] = [148,133,132]; -l[305] = [173,142,133]; -l[306] = [159,135,130]; -l[307] = [147,127,130]; -l[308] = [128,134,157]; -l[309] = [199,182,167]; -l[310] = [205,181,160]; -l[311] = [209,181,157]; -l[312] = [165,146,135]; -l[313] = [179,152,134]; -l[314] = [174,150,134]; -l[315] = [184,175,172]; -l[316] = [187,177,172]; -l[317] = [170,163,164]; -l[318] = [159,143,135]; -l[319] = [154,141,139]; -l[320] = [144,130,130]; -l[321] = [127,129,138]; -l[322] = [148,140,144]; -l[323] = [150,140,142]; -l[324] = [154,148,157]; -l[325] = [150,159,192]; -l[326] = [149,153,173]; -l[327] = [167,172,188]; -l[328] = [149,120,118]; -l[329] = [146,147,173]; -l[330] = [172,169,177]; -l[331] = [131,136,156]; -l[332] = [124,130,155]; -l[333] = [139,129,133]; -l[334] = [145,142,138]; -l[335] = [137,134,130]; -l[336] = [141,130,132]; -l[337] = [135,125,127]; -l[338] = [101,114,115]; -l[339] = [119,108,114]; -l[340] = [118,109,128]; -l[341] = [119,110,116]; -l[342] = [116,119,132]; -l[343] = [121,118,118]; -l[344] = [114,117,130]; -l[345] = [127,112,116]; -l[346] = [130,119,118]; -l[347] = [128,115,136]; -l[348] = [145,137,144]; -l[349] = [130,147,147]; -l[350] = [129,135,159]; -l[351] = [137,136,142]; -l[352] = [136,136,144]; -l[353] = [137,136,143]; -l[354] = [138,134,138]; -l[355] = [125,141,141]; -l[356] = [134,154,150]; -l[357] = [118,105,110]; -l[358] = [106,104,125]; -l[359] = [107,111,128]; -l[360] = [114,102,105]; -l[361] = [104,108,124]; -l[362] = [103,100,120]; -l[363] = [116,109,110]; -l[364] = [129,117,123]; -l[365] = [118,115,137]; -l[366] = [119,123,140]; -l[367] = [124,111,106]; -l[368] = [114,137,129]; -l[369] = [109,112,122]; -l[370] = [118,121,133]; -l[371] = [77,79,87]; -l[372] = [90,91,99]; -l[373] = [122,113,115]; -l[374] = [130,121,122]; -l[375] = [123,111,116]; -l[376] = [129,108,109]; -l[377] = [117,109,111]; -l[378] = [116,108,111]; -l[379] = [88,86,103]; -l[380] = [98,92,93]; -l[381] = [196,178,160]; -l[382] = [174,155,137]; -l[383] = [144,126,113]; -l[384] = [145,125,114]; -l[385] = [181,165,151]; -l[386] = [187,169,156]; -l[387] = [140,130,127]; -l[388] = [143,128,131]; -l[389] = [146,135,136]; -l[390] = [173,178,189]; -l[396] = [181,166,159]; -l[397] = [176,169,169]; -l[398] = [132,131,150]; -l[399] = [123,121,144]; -l[400] = [160,150,197]; -l[401] = [160,154,192]; -l[402] = [160,150,196]; -l[403] = [132,125,157]; -l[404] = [132,122,158]; -l[405] = [113,113,134]; -l[406] = [104,104,123]; -l[407] = [92,82,85]; -l[408] = [131,124,134]; -l[409] = [201,174,156]; -l[410] = [148,137,130]; -l[411] = [138,137,138]; l }
\ No newline at end of file diff --git a/mindus/src/color_mapping.rs b/mindus/src/color_mapping.rs deleted file mode 100644 index c4a1a85..0000000 --- a/mindus/src/color_mapping.rs +++ /dev/null @@ -1,3 +0,0 @@ -/// Map a 0xRRGGBB color to a block. -// pub static COLOR2BLOCK: phf::Map<u32, &Block> = include!(concat!(env!("OUT_DIR"), "/4.rs")); -pub static BLOCK2COLOR: [[u8; 3]; u16::MAX as usize + 1] = include!("color_mapped"); diff --git a/mindus/src/colors b/mindus/src/colors Binary files differdeleted file mode 100644 index 68e89f3..0000000 --- a/mindus/src/colors +++ /dev/null diff --git a/mindus/src/content.rs b/mindus/src/content.rs deleted file mode 100644 index 0f15a87..0000000 --- a/mindus/src/content.rs +++ /dev/null @@ -1,210 +0,0 @@ -//! contains types of types -use std::error::Error; - -macro_rules! numeric_enum { - ($vis:vis enum $tname:ident for $numeric:ty | $error:ident {$($name:ident $(= $val:literal)?),* $(,)?}) => - { - crate::content::numeric_enum!($vis enum $tname for $numeric | $error* {$($name $(= $val)?),*}); - - impl std::fmt::Display for $error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "no variant of {} for value {}", stringify!($tname), self.0) - } - } - - impl std::error::Error for $error {} - }; - ($vis:vis enum $tname:ident for $numeric:ty | $error:ident* {$($name:ident $(= $val:literal)?),* $(,)?}) => - { - #[repr($numeric)] - #[derive(Copy, Clone, Debug, Eq, Ord, PartialEq, PartialOrd, Hash)] - $vis enum $tname { $($name $(= $val)?,)+ } - - #[derive(Copy, Clone, Debug, Eq, PartialEq)] - $vis struct $error($vis $numeric); - - impl TryFrom<$numeric> for $tname { - type Error = $error; - - #[allow(non_upper_case_globals)] - fn try_from(value: $numeric) -> Result<Self, $error> { - $(const $name: $numeric = $tname::$name as $numeric;)+ - match value { - $($name => Ok(Self::$name),)+ - _ => Err($error(value)), - } - } - } - - impl From<$tname> for $numeric { fn from(value: $tname) -> $numeric { value as $numeric } } - }; -} - -pub(crate) use numeric_enum; - -macro_rules! count_exprs { - ($($e:expr)*) => { - $($crate::content::one!($e) +)* 0 - } -} - -macro_rules! one { - ($e:expr) => { - 1 - }; -} -pub(crate) use count_exprs; -pub(crate) use one; - -macro_rules! content_enum { - ($vis:vis enum $tname:ident / $ctype:ident for u16 | $error:ident {$($val:literal),* $(,)?}) => - { - paste::paste! { - $crate::content::numeric_enum!($vis enum $tname for u16 | $error* { - $([<$val:camel>]),*, - }); - - impl $tname { - pub const ALL: [Self; $crate::content::count_exprs!($($val)+)] = [$(Self::[<$val:camel>]),+]; - - pub (crate) fn by_name(name:&str)-> Option<Self> { - static MAPPER: std::sync::LazyLock<std::collections::HashMap<&str, $tname>> = std::sync::LazyLock::new( - || std::collections::HashMap::from_iter( - [ - $(($val, $tname::[<$val:camel>]),)+ - ] - ) - ); - MAPPER.get(name).copied() - } - } - impl const $crate::content::Content for $tname { - fn get_type(&self) -> $crate::content::Type { - $crate::content::Type::$ctype - } - - fn get_id(&self) -> u16 { - *self as u16 - } - - fn get_name(&self) -> &'static str { - const NAME: [&str; {$tname::ALL.len()}] = [$($val,)*]; - NAME[*self as usize] - // match self { - // $(Self::[<$val:camel>] => $val,)* - // } - } - } - - impl std::fmt::Display for $error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "no content of type {} for value {}", stringify!($ctype), self.0) - } - } - - impl std::fmt::Display for $tname { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - $(Self::[<$val:camel>] => f.write_str(strconv::kebab2title!($val)),)* - } - } - } - - impl std::error::Error for $error {} - } - }; -} -pub(crate) use content_enum; - -macro_rules! color_content_enum { - ($vis:vis enum $tname:ident / $ctype:ident for u16 | $error:ident {$($val:literal: $col:literal),* $(,)?}) => - { - paste::paste! { - $crate::content::content_enum!($vis enum $tname / $ctype for u16 | $error { - $($val),*, - }); - - impl Type { - #[must_use] - pub const fn color(&self) -> (u8, u8, u8) { - match &self { - $(Self::[<$val:camel>] => { - let v = color_hex::color_from_hex!($col); - (v[0], v[1], v[2]) - },)* - } - } - } - }} -} -pub(crate) use color_content_enum; - -numeric_enum! { - pub enum Type for u8 | TryFromU8Error - { - Item = 0, - Block = 1, - // Mech = 2, - Bullet = 3, - Fluid = 4, - Modifier = 5, - Unit = 6, - Weather = 7, - // Effect = 8, - Sector = 9, - // Loadout = 10, - // TypeId = 11, - // Error = 12, - Planet = 13, - // Ammo = 14, - Team = 15, - UnitCommand = 16, - UnitStance = 17, - } -} - -macro_rules! gen_by_id { - ($target:path, $id:expr) => { - match <$target>::try_from($id) { - Ok(v) => Ok(Box::new(v)), - Err(e) => Err(Box::new(e)), - } - }; -} - -impl Type { - pub fn get(self, id: u16) -> Result<Box<dyn Content>, Box<dyn Error>> { - match self { - Self::Item => gen_by_id!(crate::item::Type, id), - Self::Block => gen_by_id!(crate::block::content::Type, id), - Self::Fluid => gen_by_id!(crate::fluid::Type, id), - Self::Modifier => gen_by_id!(crate::modifier::Type, id), - Self::Unit => gen_by_id!(crate::unit::Type, id), - Self::Team => gen_by_id!(crate::team::Team, id), - _ => Ok(Box::new(Generic(self, id))), - } - } -} -pub const trait Content { - fn get_type(&self) -> Type; - - fn get_id(&self) -> u16; - - fn get_name(&self) -> &'static str; -} - -struct Generic(Type, u16); - -impl Content for Generic { - fn get_type(&self) -> Type { - self.0 - } - - fn get_id(&self) -> u16 { - self.1 - } - - fn get_name(&self) -> &'static str { - "<unknown>" - } -} diff --git a/mindus/src/data/command.rs b/mindus/src/data/command.rs deleted file mode 100644 index f4d679d..0000000 --- a/mindus/src/data/command.rs +++ /dev/null @@ -1,7 +0,0 @@ -use crate::content::numeric_enum; - -numeric_enum! { - pub enum UnitCommand for u8 | TryFromU8Error { - Move, Repair, Rebuild, Assist, Mine, Boost, EnterPayload, LoadUnits, LoadBlocks, UnloadPayload, LoopPayload - } -} diff --git a/mindus/src/data/entity_mapping.rs b/mindus/src/data/entity_mapping.rs deleted file mode 100644 index beed2b4..0000000 --- a/mindus/src/data/entity_mapping.rs +++ /dev/null @@ -1,31 +0,0 @@ -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub enum UnitClass { - Block, - // same read impl as block - Legs, - Elevated, - Crawl, - Boat, - Tank, - Air, - // different read impl from block - Mech, - Tethered, - Payload, - Bomb, -} - -pub static ID: [Option<UnitClass>; 47] = amap::amap! { - 2 => UnitClass::Block, - 24 => UnitClass::Legs, - 45 => UnitClass::Elevated, - 46 => UnitClass::Crawl, - 36 => UnitClass::Tethered, - 5 | 23 | 26 => UnitClass::Payload, - 39 => UnitClass::Bomb, - 20 => UnitClass::Boat, - 43 => UnitClass::Tank, - 4 | 17 | 19 | 32 => UnitClass::Mech, - 21 | 29 | 33 => UnitClass::Legs, - 3 | 16 | 18 | 0 | 30 | 31 => UnitClass::Air, -}; diff --git a/mindus/src/data/map.rs b/mindus/src/data/map.rs deleted file mode 100644 index 7d90133..0000000 --- a/mindus/src/data/map.rs +++ /dev/null @@ -1,1021 +0,0 @@ -//! the map module -//! ### format -//! note: utf = `len<u16>` + `utf8(read(len))` -//! -//! note: each section has a `u32` denoting its length -//! -//! key: `: T` and `x<T>` both mean read T, `iterate T` means iterate `read_T()` times -//! -//! ZLIB compressed stream contains: -//! - header: 4b = `MSCH` [`MapReader::header`] -//! - version: `u32` (should be 7+) [`MapReader::version`] -//! - tag section `<u32>` [`MapReader::tags`] -//! - 1 byte of idk (skip) -//! - string map (`u16` for map len, iterate each, read `utf`) -//! - content header section `<u32>`: [`MapReader::content`] (note: if map v8, will use [`BlockEnum`] and skip reading this) -//! - iterate `i8` (should = `10`)' -//! - the type: `i8` (0: item, block: 1, liquid: 4, status: 5, unit: 6, weather: 7, sector: 9, planet: 13 -//! - item count: `u16` (item: 22, block: 422, liquid: 11, status: 21, unit: 66, weather: 6, sector: 35, planet: 7) -//! - these types all have their own modules: [`item`], [`content`], [`fluid`], [`modifier`], [`mod@unit`], [`weather`], [`sector`], [`planet`] -//! - iterate `u16` -//! - name: `utf` -//! - map section `<u32>` [`MapReader::map`] -//! - width: `u16`, height: `u16` -//! - floor and tiles: -//! - for `i` in `w * h` -//! - `x = i % w`, `y = i / w` -//! - floor id: `u16` -//! - overlay id: `u16` -//! - consecutives: `u8` -//! - iterate `(i + 1)..(i + 1 + consecutives)` -//! - `x = j % w`, `y = j / w` -//! - i += consecutives -//! - blocks -//! - for `i` in `w * h` -//! - block id: `u16` -//! - packed?: `i8` -//! - entity = `(packed & 1) not 0` -//! - data = `(packed & 2) not 0` -//! - newdata = `(packed & 3) not 0` -//! - if entity: central: `bool` -//! - if entity: -//! - if central: -//! - chunk len: `u16` -//! - if block == building: -//! - revision: `i8` -//! - [`Build::read`] -//! - else skip `chunk len` -//! - or data -//! - data: `i8` -//! - or new data -//! - data: `i8` -//! - floor: `i8` -//! - overlay: `i8` -//! - extra: `i32` -//! - else -//! - consecutives: `u8` -//! - iterate `(i + 1)..(i + 1 + consecutives)` -//! - same block -//! - i += consecutives -//! - entities section `<u32>` [`MapReader::entities`] -//! - entity mapping -//! - iterate `u16` -//! - id: `i16`, name: `utf` -//! - team build plans -//! - for t in `teams<u32>` -//! - team = `team#<u32>` -//! - iterate `plans<u32>` -//! - x: `u16`, y: `u16`, rot: `u16`, id: `u16` -//! - o: `DynData` (refer to [`DynSerializer`]) -//! - world entities -//! - iterate `u32` -//! - len: `u16` -//! - type: `u8` -//! - if !mapping\[type\] -//! - skip(len - 1) -//! - continue -//! - id: `u32` -//! - entity read -//! - markers section (v8) -use fimg::DynImage; -use std::collections::HashMap; -use std::ops::CoroutineState::*; -use std::ops::{Coroutine, Index, IndexMut}; -use std::pin::Pin; -use std::sync::atomic::{AtomicU64, Ordering}; -use thiserror::Error; - -use crate::block::content::Type as BlockEnum; -use crate::block::{Block, Rotation, State}; -use crate::data::DataRead; -use crate::data::dynamic::DynData; -use crate::data::renderer::*; -use crate::fluid::Type as Fluid; -use crate::item::{Type as Item, storage::Storage}; -use crate::team::Team; -use crate::unit::Unit; -#[cfg(doc)] -use crate::{block::content, data::*, fluid, item, modifier, unit}; - -use super::{Serializable, entity_mapping}; -use crate::content::Content; - -/// a tile in a map -#[derive(Clone)] -pub struct Tile { - pub floor: BlockEnum, - pub ore: BlockEnum, - build: Option<Build>, - pub nd: [u8; 7], -} - -pub fn table(x: BlockEnum, scale: Scale) -> DynImage<&'static [u8]> { - FLOOR_TABLE[x as usize][mcg() as usize][scale as usize] -} - -pub fn mcg() -> u64 { - static STATE: AtomicU64 = AtomicU64::new(25); - let s = STATE.load(Ordering::Relaxed); - // a * s % m - let s = (s.wrapping_mul(0xecc5)) % (1 << 32); - STATE.store(s, Ordering::Relaxed); - (s >> 13) & (0b111) -} - -static FLOOR_TABLE: [[[DynImage<&'static [u8]>; 3]; 8]; BlockEnum::ALL.len()] = { - let mut table = [[car::map!(load!("empty"), DynImage::from); 8]; BlockEnum::ALL.len()]; - macro_rules! image { - (| $($x:literal $(|)?)+) => { paste::paste! { - $(table[BlockEnum::[<$x:camel>] as usize] = load!(8x $x));+ - } }; - (| single $($x:literal $(|)?)+) => { paste::paste! { - $(table[BlockEnum::[<$x:camel>] as usize] = - car::map!([load!($x); 8], |x| car::map!(x, DynImage::from)));+ - } } - } - - image! [ - | single "colored-floor" | "colored-wall" | "metal-tiles-1" | "metal-tiles-2" | "metal-tiles-3" | "metal-tiles-4" | "metal-tiles-5" | "metal-tiles-6" | "metal-tiles-7" | "metal-tiles-8" | "metal-tiles-9" | "metal-tiles-10" | "metal-tiles-11" | "metal-tiles-12" - | "metal-floor" | "metal-floor-2" | "metal-floor-3" | "metal-floor-4" | "metal-floor-5" - | "dark-panel-1" | "dark-panel-2" | "dark-panel-3" | "dark-panel-4" | "dark-panel-5" | "dark-panel-6" - | "arkycite-floor" - | "darksand-tainted-water" | "darksand-water" | "deep-tainted-water" | "deep-water" | "sand-water" | "shallow-water" | "tainted-water" - | "tar" | "pooled-cryofluid" - | "space" - | "stone-vent" - | "core-zone" - | "spawn" - ]; - image! { - | "ore-copper" | "ore-beryllium" | "ore-lead" | "ore-scrap" | "ore-coal" | "ore-thorium" | "ore-titanium" | "ore-tungsten" | "pebbles" | "tendrils" | "ore-wall-graphite" | "ore-wall-tungsten" | "ore-wall-beryllium" | "ore-wall-thorium" | "ore-crystal-thorium" - | "yellow-stone-vent" | "arkyic-vent" | "crystalline-vent" | "red-stone-vent" | "carbon-vent" - | "darksand" - | "sand-floor" - | "dacite" - | "dirt" - | "basalt" | "basalt-vent" - | "moss" - | "mud" - | "ice-snow" | "snow" | "salt" | "ice" - | "hotrock" | "char" | "magmarock" | "molten-slag" - | "shale" - | "metal-floor-damaged" - | "stone" - | "bluemat" - | "ferric-craters" - | "beryllic-stone" - | "grass" - | "rhyolite" | "rough-rhyolite" | "rhyolite-crater" | "rhyolite-vent" - | "crater-stone" - | "redmat" - | "red-ice" - | "spore-moss" - | "regolith" - | "ferric-stone" - | "arkyic-stone" - | "yellow-stone" | "yellow-stone-plates" - | "red-stone" | "dense-red-stone" - | "carbon-stone" - | "crystal-floor" | "crystalline-stone" - }; - table -}; - -impl Tile { - #[must_use] - pub const fn new(floor: BlockEnum, ore: BlockEnum) -> Self { - Self { - floor, - ore, - build: None, - nd: [0; 7], - } - } - - fn set_block(&mut self, block: &'static Block) { - self.build = Some(Build { - block, - state: None, - items: Storage::new(), - liquids: Storage::new(), - rotation: Rotation::Up, - team: Team::SHARDED, - data: 0, - }); - } - - #[must_use] - pub const fn build(&self) -> Option<&Build> { - self.build.as_ref() - } - - /// size of this tile - /// - /// ._. - /// - /// dont think about it too much - #[must_use] - #[inline] - pub fn size(&self) -> u8 { - self.build.as_ref().map_or(1, |v| v.block.get_size()) - } - - #[must_use] - #[inline] - pub fn has_ore(&self) -> bool { - self.ore != BlockEnum::Air - } - - /// Draw this tiles build. - #[must_use] - #[inline] - pub fn build_image( - &self, - context: Option<&RenderingContext>, - s: Scale, - ) -> DynImage<image::Cow> { - // building covers floore - let Some(b) = &self.build else { - unreachable!(); - }; - b.image(context, s) - } -} - -impl std::fmt::Debug for Tile { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "Tile@{}{}{}", - self.floor.get_name(), - if self.ore != BlockEnum::Air { - format!("+{}", self.ore.get_name()) - } else { - String::new() - }, - if let Some(build) = &self.build { - format!(":{}", build.block.name()) - } else { - String::new() - } - ) - } -} - -impl BlockState for Tile { - fn get_block(&self) -> Option<&'static Block> { - Some(self.build()?.block) - } -} - -impl RotationState for Tile { - fn get_rotation(&self) -> Option<Rotation> { - Some(self.build()?.rotation) - } -} - -impl RotationState for Option<Tile> { - fn get_rotation(&self) -> Option<Rotation> { - self.as_ref().unwrap().get_rotation() - } -} - -impl BlockState for Option<Tile> { - fn get_block(&self) -> Option<&'static Block> { - self.as_ref().unwrap().get_block() - } -} - -/// a build on a tile in a map -#[derive(Clone)] -pub struct Build { - pub block: &'static Block, - pub items: Storage<Item>, - pub liquids: Storage<Fluid>, - pub state: Option<State>, - // pub health: f32, - pub rotation: Rotation, - pub team: Team, - pub data: i8, -} - -impl std::fmt::Debug for Build { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Build<{block}>", block = self.block.name(),) - } -} - -impl Build { - #[must_use] - pub fn new(block: &'static Block) -> Build { - Self { - block, - items: Storage::default(), - liquids: Storage::default(), - state: None, - rotation: Rotation::Up, - team: Team::SHARDED, - data: 0, - } - } - - fn image(&self, context: Option<&RenderingContext>, s: Scale) -> DynImage<image::Cow> { - self.block - .image(self.state.as_ref(), context, self.rotation, s) - } - - #[must_use] - pub const fn name(&self) -> &str { - self.block.name() - } - - pub fn read(&mut self, buff: &mut DataRead<'_>) -> Result<(), ReadError> { - // health - let _ = buff.read_f32()?; - let rot = buff.read_i8()? as i16; - // team - let _ = buff.read_i8()?; - self.rotation = Rotation::try_from((rot & 127) as u8).unwrap_or(Rotation::Up); - let mut mask = 0; - let mut version = 0; - if rot & 128 != 0 { - version = buff.read_u8()?; - if version < 3 { - return Err(ReadError::Version(version)); - } - buff.skip(1)?; - mask = buff.read_u8()?; - } - - if mask & 1 != 0 { - read_items(buff, &mut self.items)?; - } - if mask & 2 != 0 { - read_power(buff)?; - } - if mask & 4 != 0 { - read_liquids(buff, &mut self.liquids)?; - } - if mask & 16 != 0 { - let _scale = buff.read_f32()?; - let _duration = buff.read_f32()?; - } - // "efficiency" - _ = buff.read_u8()? as f64 / 255.; - _ = buff.read_u8()? as f64 / 255.; - - if version == 4 { - // visible flags for fog - _ = buff.read_u64()?; - } - // "overridden by subclasses" - self.block.read(self, buff)?; - - Ok(()) - } -} - -/// format: -/// - iterate [`u16`] -/// - item: [`u16`] as [`Item`] -/// - amount: [`u32`] -/// -fn read_items(from: &mut DataRead, to: &mut Storage<Item>) -> Result<(), ReadError> { - to.clear(); - let n = from.read_u16()?; - to.reserve(n as usize); - for _ in 0..n { - let item = from.read_u16()?; - let amount = from.read_u32()?; - if let Ok(item) = Item::try_from(item) { - to.set(item, amount); - } - } - Ok(()) -} - -/// format: -/// - iterate [`u16`] -/// - liquid: [`u16`] as [`Fluid`] -/// - amount: [`f32`] -fn read_liquids(from: &mut DataRead, to: &mut Storage<Fluid>) -> Result<(), ReadError> { - to.clear(); - let n = from.read_u16()?; - to.reserve(n as usize); - for _ in 0..n { - let fluid = from.read_u16()?; - let amount = from.read_f32()?; - if let Ok(fluid) = Fluid::try_from(fluid) { - to.set(fluid, (amount * 100.0) as u32); - } - } - Ok(()) -} - -/// format: -/// - iterate [`u16`] -/// - link: [`i32`] -/// - status: [`f32`] -fn read_power(from: &mut DataRead) -> Result<(), ReadError> { - let n = from.read_u16()? as usize; - from.skip((n + 1) * 4)?; - Ok(()) -} - -#[test] -fn test_read_items() { - let mut s = Storage::new(); - read_items( - &mut DataRead::new(&[ - 0, 6, 0, 0, 0, 0, 2, 187, 0, 1, 0, 0, 1, 154, 0, 2, 0, 0, 15, 160, 0, 3, 0, 0, 0, 235, - 0, 6, 0, 0, 1, 46, 0, 12, 0, 0, 1, 81, 255, 255, - ]), - &mut s, - ) - .unwrap(); - assert!(s.get_total() == 5983); -} - -#[test] -fn test_read_liquids() { - let mut s = Storage::new(); - read_liquids( - &mut DataRead::new(&[0, 1, 0, 0, 67, 111, 247, 126, 255, 255]), - &mut s, - ) - .unwrap(); - assert!(s.get(Fluid::Water) == 23996); -} - -/// a map. -/// ## Does not support serialization yet! -#[derive(Debug)] -pub struct Map { - pub width: usize, - pub height: usize, - pub tags: HashMap<String, String>, - pub entities: Vec<Unit>, - /// row major 2d array - /// ```rs - /// (0, 0), (1, 0), (2, 0) - /// (0, 1), (1, 1), (2, 1) - /// (0, 2), (1, 2), (2, 2) - /// ``` - pub tiles: Vec<Tile>, -} - -impl Map { - #[lower::apply(wrapping)] - pub(crate) fn cross(&self, j: usize) -> [Option<&Tile>; 4] { - [ - self.tiles.get(j + self.width), - self.tiles.get(j + 1), - self.tiles.get(j - self.width), - self.tiles.get(j - 1), - ] - } - #[lower::apply(wrapping)] - pub(crate) fn corners(&self, j: usize) -> [Option<&Tile>; 4] { - [ - self.tiles.get(j - self.width - 1), - self.tiles.get(j - self.width + 1), - self.tiles.get(j + self.width - 1), - self.tiles.get(j + self.width + 1), - ] - } - - #[must_use] - pub fn new(width: usize, height: usize, tags: HashMap<String, String>) -> Self { - Self { - tiles: Vec::with_capacity(width * height), - height, - width, - tags, - entities: vec![], - } - } - - fn push(&mut self, t: Tile) { - self.tiles.push(t); - } -} - -impl Index<usize> for Map { - type Output = Tile; - fn index(&self, index: usize) -> &Self::Output { - &self.tiles[index] - } -} - -impl IndexMut<usize> for Map { - fn index_mut(&mut self, index: usize) -> &mut Self::Output { - &mut self.tiles[index] - } -} - -const MAP_HEADER: [u8; 4] = [b'M', b'S', b'A', b'V']; - -/// error occurring when reading a map fails -#[derive(Debug, Error)] -pub enum ReadError { - #[error("failed to read from buffer")] - Read(#[from] super::ReadError), - #[error(transparent)] - Decompress(#[from] super::DecompressError), - #[error("incorrect header ({0:?})")] - Header([u8; 4]), - #[error("unsupported version ({0})")] - Version(u8), - #[error("unknown block at index {0:?}")] - NoSuchBlock(u16), - #[error("no block {0}")] - NoBlockFound(String), - #[error("failed to read block data")] - ReadState(#[from] super::dynamic::ReadError), - #[error("no block, but data")] - NoBlockWithData, -} - -/// Struct for granular map deserialization. -pub struct MapReader { - #[allow(dead_code)] - backing: Vec<u8>, - // dataread references 'backing' - buff: DataRead<'static>, - version: u32, -} - -#[derive(Debug)] -pub enum ThinBloc { - Build(Rotation, &'static Block, Team), - Many(Option<&'static Block>, u8), -} - -#[derive(Debug)] -pub enum ThinMapData { - Init { width: u16, height: u16 }, - Bloc(ThinBloc), - Tile { floor: BlockEnum, ore: BlockEnum }, -} - -#[derive(Debug)] -pub enum Bloc { - Build(Build, &'static Block), - Data(&'static Block, i8), - Nd(Option<&'static Block>, [u8; 7]), - Many(Option<&'static Block>, u8), -} - -#[derive(Debug)] -pub enum MapData { - Init { width: u16, height: u16 }, - Bloc(Bloc), - Tile { floor: BlockEnum, ore: BlockEnum }, -} - -#[derive(Debug)] -pub enum EntityData { - Length(u32), - Data(Unit), -} - -macro_rules! tiles { - ($count:ident, $me:ident, $w: ident,$r:ident) => { - let mut i = 0; - while i < $count { - let floor_id = $me.buff.read_u16()?; - let overlay_id = $me.buff.read_u16()?; - let &floor = $r.get(floor_id as usize).unwrap_or(&BlockEnum::Stone); - let &ore = $r.get(overlay_id as usize).unwrap_or(&BlockEnum::Air); - yield $w::Tile { floor, ore }; - let consecutives = $me.buff.read_u8()? as usize; - for _ in 0..consecutives { - yield $w::Tile { floor, ore }; - } - i += consecutives; - i += 1; - } - }; -} - -pub type Registrar = [BlockEnum; BlockEnum::ALL.len()]; -impl MapReader { - pub fn new(buff: &mut DataRead<'_>) -> Result<Self, ReadError> { - let backing = buff.deflate()?; - Ok(Self { - version: u32::MAX, - buff: DataRead::new(unsafe { - std::mem::transmute::<&'_ [u8], &'static [u8]>(&backing) - }), - backing, - }) - } - - pub fn header(&mut self) -> Result<[u8; 4], ReadError> { - let b = self.buff.readN::<4>()?; - (b == MAP_HEADER).then_some(b).ok_or(ReadError::Header(b)) - } - - pub fn version(&mut self) -> Result<u32, ReadError> { - let x = self.buff.read_u32()?; - (7..=11) - .contains(&x) - .then_some(x) - .ok_or(ReadError::Version(x.try_into().unwrap_or(0))) - } - - pub fn tags(&mut self) -> Result<HashMap<&str, &str>, ReadError> { - let mut tags = HashMap::new(); - self.buff.skip(5)?; - for _ in 0..self.buff.read_u8()? { - let key = self.buff.read_utf()?; - let value = self.buff.read_utf()?; - tags.insert(key, value); - } - Ok(tags) - } - - pub fn content(&mut self) -> Result<Registrar, ReadError> { - let mut registrar = BlockEnum::ALL; - _ = self.buff.read_u32()?; - for _ in 0..self.buff.read_i8()? { - let ty = self.buff.read_u8()?; - for index in 0..self.buff.read_u16()? as usize { - if ty == 1 { - let name = self.buff.read_utf()?; - let block = BlockEnum::by_name(name) - .ok_or_else(|| ReadError::NoBlockFound(name.to_string()))?; - registrar.get_mut(index).map(|x| *x = block); - } else { - let n = self.buff.read_u16()?; - self.buff.skip(n as usize)?; - } - } - } - Ok(registrar) - } - - pub fn tags_alloc(&mut self) -> Result<HashMap<String, String>, ReadError> { - let mut tags = HashMap::new(); - self.buff - .read_chunk(true, |buff| { - buff.skip(1)?; - for _ in 0..buff.read_u8()? { - let key = buff.read_utf()?; - let value = buff.read_utf()?; - tags.insert(key.to_owned(), value.to_owned()); - } - Ok::<(), ReadError>(()) - }) - .map(|_| tags) - } - - pub fn skip(&mut self) -> Result<(), ReadError> { - let len = self.buff.read_u32()? as usize; - self.buff.skip(len)?; - Ok(()) - } - - pub fn thin_map( - &mut self, - r: Registrar, - ) -> Result< - impl Coroutine<(), Return = Result<(), ReadError>, Yield = ThinMapData> + '_, - ReadError, - > { - let len = self.buff.read_u32()? as usize; - let rb4 = self.buff.read; - let map = #[coroutine] - move || { - let w = self.buff.read_u16()?; - let h = self.buff.read_u16()?; - yield ThinMapData::Init { - width: w, - height: h, - }; - let w = w as usize; - let h = h as usize; - let count = w * h; - tiles!(count, self, ThinMapData, r); - - let mut i = 0; - while i < count { - let block_id = self.buff.read_u16()?; - let packed = self.buff.read_u8()?; - let entity = (packed & 1) != 0; - let data = (packed & 2) != 0; - let newdata = (packed & 4) != 0; - if newdata { - self.buff.skip(7)?; - } - let central = if entity { - self.buff.read_bool()? - } else { - false - }; - let block = *r - .get(block_id as usize) - .ok_or(ReadError::NoSuchBlock(block_id))?; - let block = block.to_block(); - yield if entity { - if central { - let len = if self.version > 9 { - self.buff.read_u32()? as usize - } else { - self.buff.read_u16()? as usize - }; - let rb4 = self.buff.read; - - #[cfg(debug_assertions)] - println!("reading {block:?} "); - let _ = self.buff.read_i8()?; - let _ = self.buff.read_f32()?; - let rot = self.buff.read_i8()?; - let rot = Rotation::try_from((rot & 127) as u8).unwrap_or(Rotation::Up); - let team = Team::of(self.buff.read_u8()?); - let read = self.buff.read - rb4; - let n = len - read; - self.buff.skip(n)?; - - ThinMapData::Bloc(ThinBloc::Build(rot, block.unwrap(), team)) - } else { - ThinMapData::Bloc(ThinBloc::Many(None, 0)) - } - } else if data { - _ = self.buff.read_i8()?; - ThinMapData::Bloc(ThinBloc::Many(block, 0)) - } else if newdata { - ThinMapData::Bloc(ThinBloc::Many(block, 0)) - } else { - let consecutives = self.buff.read_u8()?; - i += consecutives as usize; - ThinMapData::Bloc(ThinBloc::Many(block, consecutives)) - }; - - i += 1; - } - let read = self.buff.read - rb4; - debug_assert!(len >= read, "overread; supposed to read {len}; read {read}"); - debug_assert!((len - read) == 0, "supposed to read {len}; read {read}"); - Ok(()) - }; - Ok(map) - } - - pub fn collect_map( - &mut self, - tags: HashMap<String, String>, - r: Registrar, - ) -> Result<Map, ReadError> { - let mut co = self.map(r)?; - let (w, h) = match Pin::new(&mut co).resume(()) { - Yielded(MapData::Init { width, height }) => (width as usize, height as usize), - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - }; - let mut m = Map::new(w, h, tags); - for _ in 0..w * h { - match Pin::new(&mut co).resume(()) { - Yielded(MapData::Tile { floor, ore }) => m.push(Tile::new(floor, ore)), - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - } - } - let mut i = 0; - while i < w * h { - match Pin::new(&mut co).resume(()) { - Yielded(MapData::Bloc(Bloc::Many(None, n))) => i += n as usize, - Yielded(MapData::Bloc(Bloc::Build(x, y))) => { - m[i].set_block(y); - m[i].build = Some(x); - } - Yielded(MapData::Bloc(Bloc::Data(x, y))) => { - m[i].set_block(x); - m[i].build.as_mut().unwrap().data = y; - } - Yielded(MapData::Bloc(Bloc::Many(Some(bloc), n))) => { - for i in i..=i + n as usize { - m[i].set_block(bloc); - } - i += n as usize; - } - Yielded(MapData::Bloc(Bloc::Nd(b, d))) => { - b.map(|b| m[i].set_block(b)); - m[i].nd = d - } - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - } - i += 1; - } - match Pin::new(&mut co).resume(()) { - Complete(Ok(())) => (), - _ => unreachable!(), - }; - Ok(m) - } - - pub fn map( - &mut self, - r: Registrar, - ) -> Result<impl Coroutine<(), Return = Result<(), ReadError>, Yield = MapData> + '_, ReadError> - { - let len = self.buff.read_u32()? as usize; - let rb4 = self.buff.read; - - let c = #[coroutine] - move || { - let w = self.buff.read_u16()?; - let h = self.buff.read_u16()?; - yield MapData::Init { - width: w, - height: h, - }; - let w = w as usize; - let h = h as usize; - let count = w * h; - tiles!(count, self, MapData, r); - - let mut i = 0; - while i < count { - let block_id = self.buff.read_u16()?; - let packed = self.buff.read_u8()?; - let entity = (packed & 1) != 0; - let data = (packed & 2) != 0; - let newdata = (packed & 4) != 0; - let newdata = newdata.then(|| self.buff.readN::<7>()).transpose()?; - let central = if entity { - self.buff.read_bool()? - } else { - false - }; - let block = r - .get(block_id as usize) - .ok_or(ReadError::NoSuchBlock(block_id))?; - let block = block.to_block(); - yield if entity { - if central { - let block = block.ok_or(ReadError::NoBlockWithData)?; - let len = if self.version > 9 { - self.buff.read_u32()? as usize - } else { - self.buff.read_u16()? as usize - }; - let rb4 = self.buff.read; - - #[cfg(debug_assertions)] - println!("reading {block:?} "); - let _ = self.buff.read_i8()?; - let mut b = Build::new(block); - b.read(&mut self.buff)?; - // implementation not complete, skip remaining bytes (TODO finish impl) - let read = self.buff.read - rb4; - - // skip this chunk - assert!(len >= read, "overread; supposed to read {len}; read {read}"); - let n = len - read; - if n != 0 { - #[cfg(debug_assertions)] - println!( - "({block:?}) supposed to read {len}; read {read} - skipping excess" - ); - self.buff.skip(n)?; - }; - - MapData::Bloc(Bloc::Build(b, block)) - } else { - MapData::Bloc(Bloc::Many(None, 0)) - } - } else if data { - MapData::Bloc(Bloc::Data( - block.ok_or(ReadError::NoBlockWithData)?, - self.buff.read_i8()?, - )) - } else if let Some(nd) = newdata { - MapData::Bloc(Bloc::Nd(block, nd)) - } else { - let consecutives = self.buff.read_u8()?; - i += consecutives as usize; - MapData::Bloc(Bloc::Many(block, consecutives)) - }; - - i += 1; - } - let read = self.buff.read - rb4; - debug_assert!(len >= read, "overread; supposed to read {len}; read {read}"); - debug_assert!((len - read) == 0, "supposed to read {len}; read {read}"); - Ok(()) - }; - Ok(c) - } - - pub fn entities( - &mut self, - ) -> Result< - impl Coroutine<(), Yield = EntityData, Return = Result<(), ReadError>> + '_, - ReadError, - > { - let len = self.buff.read_u32()? as usize; - let rb4 = self.buff.read; - - let c = #[coroutine] - move || { - for _ in 0..self.buff.read_u16()? { - self.buff.skip(2)?; - let _ = self.buff.read_utf()?; - } - // read team block plans (ghosts) (SaveVersion.java#389) - for _ in 0..self.buff.read_u32()? { - self.buff.skip(4)?; - for _ in 0..self.buff.read_u32()? { - self.buff.skip(8usize)?; - let _ = DynData::deserialize(&mut self.buff)?; - } - } - // read world entities (#412). eg units - let n = self.buff.read_u32()?; - yield EntityData::Length(n); - for _ in 0..n { - let len = if self.version > 9 { - self.buff.read_u32()? as usize - } else { - self.buff.read_u16()? as usize - }; - let rb4 = self.buff.read; - let id = self.buff.read_u8()? as usize; - let Some(&Some(u)) = entity_mapping::ID.get(id) else { - self.buff.skip(len - 1)?; - continue; - }; - _ = self.buff.read_u32()?; - yield EntityData::Data(u.read(&mut self.buff)?); - let read = self.buff.read - rb4; - debug_assert!(len >= read, "overread; supposed to read {len}; read {read}"); - let n = len - read; - if n != 0 && cfg!(debug_assertions) { - dbg!("underread: skipping {n} bytes"); - } - self.buff.skip(n)?; - } - let read = self.buff.read - rb4; - debug_assert!(len >= read, "overread; supposed to read {len}; read {read}"); - debug_assert!((len - read) == 0, "supposed to read {len}; read {read}"); - Ok(()) - }; - Ok(c) - } - - pub fn collect_entities(&mut self) -> Result<Vec<Unit>, ReadError> { - let mut co = self.entities()?; - let n = match Pin::new(&mut co).resume(()) { - Yielded(EntityData::Length(x)) => x, - Complete(Err(e)) => return Err(e), - _ => unreachable!(), - }; - let mut o = Vec::with_capacity(n as usize); - for _ in 0..n { - match Pin::new(&mut co).resume(()) { - Yielded(EntityData::Data(x)) => o.push(x), - Complete(Err(e)) => return Err(e), - Complete(Ok(())) => break, - _ => unreachable!(), - } - } - Ok(o) - } -} - -/// serde map -impl Serializable for Map { - type ReadError = ReadError; - type WriteError = (); - /// deserialize a map - /// - /// note: does not deserialize all data - fn deserialize(buff: &mut DataRead<'_>) -> Result<Map, Self::ReadError> { - let mut buff = MapReader::new(buff)?; - buff.header()?; - buff.version = buff.version()?; - let tags = buff.tags_alloc()?; - let r = buff.content()?; - if buff.version >= 11 { - buff.skip()?; - } - let mut m = buff.collect_map(tags, r)?; - m.entities = buff.collect_entities()?; - if buff.version == 8 { - // skip marker region - buff.skip()?; - } - - // skip custom chunks - buff.skip()?; - Ok(m) - } - - /// serialize a map (todo) - /// panics: always - fn serialize(&self, _: &mut super::DataWrite<'_>) -> Result<(), Self::WriteError> { - unimplemented!() - } -} diff --git a/mindus/src/data/mod.rs b/mindus/src/data/mod.rs deleted file mode 100644 index 9f7959f..0000000 --- a/mindus/src/data/mod.rs +++ /dev/null @@ -1,499 +0,0 @@ -//! all the IO -use flate2::{ - Compress, CompressError as CError, Compression, Decompress, DecompressError as DError, - FlushCompress, FlushDecompress, Status, -}; -use std::backtrace::Backtrace; -use std::collections::HashMap; -use std::error::Error; -use std::fmt; -use std::str::Utf8Error; -use thiserror::Error; - -pub(crate) mod autotile; -mod base64; -pub mod command; -pub mod dynamic; -pub mod entity_mapping; -pub mod map; -pub mod planet; -pub mod renderer; -pub mod schematic; -pub mod sector; -pub mod weather; - -#[derive(Debug)] -pub struct DataRead<'d> { - pub(crate) data: &'d [u8], - // used with read_chunk - read: usize, -} - -impl fmt::Display for DataRead<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", String::from_utf8_lossy(self.data)) - } -} - -macro_rules! make_read { - ($name:ident, $type:ty) => { - pub fn $name(&mut self) -> Result<$type, ReadError> { - const LEN: usize = std::mem::size_of::<$type>(); - let output = self.readN::<LEN>()?; - Ok(<$type>::from_be_bytes(output)) - } - }; -} - -impl<'d> DataRead<'d> { - #[must_use] - pub const fn new(data: &'d [u8]) -> Self { - Self { data, read: 0 } - } - - pub fn read_bool(&mut self) -> Result<bool, ReadError> { - Ok(self.read_u8()? != 0) - } - - make_read!(read_u8, u8); - make_read!(read_i8, i8); - make_read!(read_u16, u16); - make_read!(read_i16, i16); - make_read!(read_u32, u32); - make_read!(read_i32, i32); - make_read!(read_f32, f32); - make_read!(read_u64, u64); - make_read!(read_i64, i64); - make_read!(read_f64, f64); - - pub fn read_utf(&mut self) -> Result<&'d str, ReadError> { - let len = self.read_u16()?; - let result = std::str::from_utf8(self.eat(len as usize)?)?; - Ok(result) - } - - pub fn eat(&mut self, n: usize) -> Result<&'d [u8], ReadError> { - self.data - .split_off(..n) - .ok_or(ReadError::Underflow { - need: n, - have: self.data.len(), - bt: Backtrace::capture(), - }) - .inspect(|_| self.read += n) - } - - #[allow(non_snake_case)] - pub fn readN<const N: usize>(&mut self) -> Result<[u8; N], ReadError> { - self.eat(N).map(|x| x.try_into().unwrap()) - } - - pub fn read_bytes(&mut self, dst: &mut [u8]) -> Result<(), ReadError> { - dst.copy_from_slice(self.eat(dst.len())?); - Ok(()) - } - - pub fn skip(&mut self, n: usize) -> Result<(), ReadError> { - self.data = self.data.get(n..).ok_or(ReadError::Underflow { - need: n, - have: self.data.len(), - bt: Backtrace::capture(), - })?; - self.read += n; - Ok(()) - } - - pub fn read_chunk<E: Error + From<ReadError>, T>( - &mut self, - big: bool, - f: impl FnOnce(&mut DataRead) -> Result<T, E>, - ) -> Result<T, E> { - let len = if big { - self.read_u32()? as usize - } else { - self.read_u16()? as usize - }; - let rb4 = self.read; - let r = f(self); - let read = self.read - rb4; - match r { - Err(e) => { - // skip this chunk - assert!(len >= read, "overread; supposed to read {len}; read {read}"); - let n = len - read; - if n != 0 { - #[cfg(debug_assertions)] - println!("supposed to read {len}; read {read} - skipping excess"); - self.skip(n)?; - }; - Err(e) - } - Ok(v) => { - debug_assert!(len >= read, "overread; supposed to read {len}; read {read}"); - debug_assert!((len - read) == 0, "supposed to read {len}; read {read}"); - Ok(v) - } - } - } - - pub fn read_vec(&mut self, dst: &mut Vec<u8>, len: usize) -> Result<(), ReadError> { - dst.extend_from_slice(self.eat(len)?); - Ok(()) - } - - pub fn read_map(&mut self, dst: &mut HashMap<String, String>) -> Result<(), ReadError> { - let n = self.read_u8()?; - for _ in 0..n { - let key = self.read_utf()?; - let value = self.read_utf()?; - dst.insert(key.to_owned(), value.to_owned()); - } - Ok(()) - } - - pub fn deflate(&mut self) -> Result<Vec<u8>, DecompressError> { - let mut dec = Decompress::new(true); - let mut raw = Vec::with_capacity(1024); - loop { - let t_in = dec.total_in(); - let t_out = dec.total_out(); - let res = dec.decompress_vec(self.data, &mut raw, FlushDecompress::None)?; - if dec.total_in() > t_in { - // we have to advance input every time, decompress_vec only knows the output position - self.data = &self.data[(dec.total_in() - t_in) as usize..]; - } - match res { - // there's no more input (and the flush mode says so), we need to reserve additional space - Status::Ok | Status::BufError => {} - // input was already at the end, so this is referring to the output - Status::StreamEnd => break, - } - if dec.total_in() == t_in && dec.total_out() == t_out { - // protect against looping forever - return Err(DecompressError::DecompressStall); - } - raw.reserve(1024); - } - assert_eq!(dec.total_out() as usize, raw.len()); - self.read = 0; - Ok(raw) - } -} - -#[derive(Debug, Error)] -pub enum DecompressError { - #[error("zlib decompression failed")] - Decompress(#[from] DError), - #[error("decompressor stalled before completion")] - DecompressStall, -} - -#[derive(Debug, Error)] -pub enum ReadError { - #[error("buffer underflow (expected {need} but got {have}) ({bt})")] - Underflow { - need: usize, - have: usize, - - bt: Backtrace, - }, - #[error("expected {0}")] - Expected(&'static str), - #[error("malformed utf8 in string")] - Utf8 { - #[from] - source: Utf8Error, - }, -} - -impl PartialEq for ReadError { - fn eq(&self, _: &Self) -> bool { - false - } -} - -enum WriteBuff<'d> { - // unlike the DataRead want to access the written region after - Ref { raw: &'d mut [u8], pos: usize }, - Vec(Vec<u8>), -} - -impl<'d> WriteBuff<'d> { - fn check_capacity(&self, need: usize) -> Result<(), WriteError> { - match self { - Self::Ref { raw, pos } if raw.len() - pos < need => Err(WriteError::Overflow { - need, - have: raw.len() - pos, - }), - _ => Ok(()), - } - } - - fn write(&mut self, data: &[u8]) { - match self { - Self::Ref { raw, pos } => { - let end = *pos + data.len(); - raw[*pos..end].copy_from_slice(data); - *pos += data.len(); - } - Self::Vec(v) => v.extend_from_slice(data), - } - } -} - -pub struct DataWrite<'d> { - data: WriteBuff<'d>, -} - -macro_rules! make_write { - ($name:ident, $type:ty) => { - pub fn $name(&mut self, val: $type) -> Result<(), WriteError> { - const LEN: usize = std::mem::size_of::<$type>(); - self.data.check_capacity(LEN)?; - self.data.write(&<$type>::to_be_bytes(val)); - Ok(()) - } - }; -} - -impl<'d> DataWrite<'d> { - pub fn write_bool(&mut self, val: bool) -> Result<(), WriteError> { - self.write_u8(u8::from(val)) - } - - make_write!(write_u8, u8); - make_write!(write_i8, i8); - make_write!(write_u16, u16); - make_write!(write_i16, i16); - make_write!(write_u32, u32); - make_write!(write_i32, i32); - make_write!(write_f32, f32); - make_write!(write_u64, u64); - make_write!(write_i64, i64); - make_write!(write_f64, f64); - - pub fn write_utf(&mut self, val: &str) -> Result<(), WriteError> { - if val.len() > u16::MAX as usize { - return Err(WriteError::TooLong { len: val.len() }); - } - self.data.check_capacity(2 + val.len())?; - self.data.write(&u16::to_be_bytes(val.len() as u16)); - self.data.write(val.as_bytes()); - Ok(()) - } - - pub fn write_bytes(&mut self, val: &[u8]) -> Result<(), WriteError> { - self.data.check_capacity(val.len())?; - self.data.write(val); - Ok(()) - } - - #[must_use] - pub const fn is_owned(&self) -> bool { - matches!(self.data, WriteBuff::Vec(..)) - } - - #[must_use] - pub fn get_written(&self) -> &[u8] { - match &self.data { - WriteBuff::Ref { raw, pos } => &raw[..*pos], - WriteBuff::Vec(v) => v, - } - } - - /// eat this datawrite - /// - /// panics if ref write buffer - #[must_use] - pub fn consume(self) -> Vec<u8> { - match self.data { - WriteBuff::Vec(v) => v, - WriteBuff::Ref { .. } => unreachable!(), - } - } - - pub fn inflate(self, to: &mut DataWrite) -> Result<(), CompressError> { - // compress into the provided buffer - let WriteBuff::Vec(raw) = self.data else { - unreachable!("write buffer not owned") - }; - let mut comp = Compress::new(Compression::default(), true); - // compress the immediate buffer into a temp buffer to copy it to buff? no thanks - match &mut to.data { - WriteBuff::Ref { raw: dst, pos } => { - match comp.compress(&raw, &mut dst[*pos..], FlushCompress::Finish)? { - // there's no more input (and the flush mode says so), but we can't resize the output - Status::Ok | Status::BufError => { - return Err(CompressError::CompressEof( - raw.len() - comp.total_in() as usize, - )); - } - Status::StreamEnd => (), - } - } - WriteBuff::Vec(dst) => { - let mut input = raw.as_ref(); - dst.reserve(1024); - loop { - let t_in = comp.total_in(); - let t_out = comp.total_out(); - let res = comp.compress_vec(input, dst, FlushCompress::Finish)?; - if comp.total_in() > t_in { - // we have to advance input every time, compress_vec only knows the output position - input = &input[(comp.total_in() - t_in) as usize..]; - } - match res { - // there's no more input (and the flush mode says so), we need to reserve additional space - Status::Ok | Status::BufError => (), - // input was already at the end, so this is referring to the output - Status::StreamEnd => break, - } - if comp.total_in() == t_in && comp.total_out() == t_out { - // protect against looping forever - return Err(CompressError::CompressStall); - } - dst.reserve(1024); - } - } - } - assert_eq!(comp.total_in() as usize, raw.len()); - Ok(()) - } -} - -impl Default for DataWrite<'static> { - fn default() -> Self { - Self { - data: WriteBuff::Vec(Vec::new()), - } - } -} - -#[derive(Debug, Error)] -pub enum CompressError { - #[error(transparent)] - Compress(#[from] CError), - #[error("compression overflow with {0} bytes of input remaining")] - CompressEof(usize), - #[error("compressor stalled before completion")] - CompressStall, -} - -#[derive(Debug, Error)] -pub enum WriteError { - #[error("buffer overflow (expected {need} but got {have})")] - Overflow { need: usize, have: usize }, - #[error("string too long ({len} bytes of {})", u16::MAX)] - TooLong { len: usize }, -} - -impl PartialEq for WriteError { - fn eq(&self, _: &Self) -> bool { - false - } -} - -impl<'d> From<&'d mut [u8]> for DataWrite<'d> { - fn from(value: &'d mut [u8]) -> Self { - Self { - data: WriteBuff::Ref { raw: value, pos: 0 }, - } - } -} - -impl From<Vec<u8>> for DataWrite<'static> { - fn from(value: Vec<u8>) -> Self { - Self { - data: WriteBuff::Vec(value), - } - } -} - -impl<'d> TryFrom<DataWrite<'d>> for Vec<u8> { - type Error = (); - - fn try_from(value: DataWrite<'d>) -> Result<Self, Self::Error> { - match value.data { - WriteBuff::Vec(v) => Ok(v), - WriteBuff::Ref { .. } => Err(()), - } - } -} -/// basic serialization/deserialization functions -pub trait Serializable -where - Self: Sized, -{ - type ReadError; - type WriteError; - /// deserialize self from a binary buffer - fn deserialize(buff: &mut DataRead<'_>) -> Result<Self, Self::ReadError>; - /// transform self into a binary buffer - fn serialize(&self, buff: &mut DataWrite<'_>) -> Result<(), Self::WriteError>; -} - -#[derive(Clone, Copy, Eq, PartialEq, Default)] -pub struct GridPos(pub usize, pub usize); - -impl From<u32> for GridPos { - fn from(value: u32) -> Self { - GridPos((value >> 16) as u16 as usize, value as u16 as usize) - } -} - -impl From<GridPos> for u32 { - /// ``` - /// # use mindus::data::GridPos; - /// assert_eq!(GridPos::from(u32::from(GridPos(1000, 5))), GridPos(1000, 5)); - /// ``` - fn from(value: GridPos) -> Self { - ((value.0 << 16) | value.1) as u32 - } -} - -impl fmt::Debug for GridPos { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "({0}, {1})", self.0, self.1) - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn read() { - let mut read = DataRead::new("Thé qûick ઉrown fox 🦘 over\0\rthe lazy dog.".as_bytes()); - assert_eq!(read.read_u8(), Ok(84)); - assert_eq!(read.read_i8(), Ok(104)); - assert_eq!(read.read_i8(), Ok(-61)); - assert_eq!(read.read_u16(), Ok(43296)); - assert_eq!(read.read_i16(), Ok(29123)); - assert_eq!(read.read_i16(), Ok(-17559)); - assert_eq!(read.read_i32(), Ok(1_667_965_152)); - assert_eq!(read.read_i32(), Ok(-1_433_832_849)); - assert_eq!(read.read_i64(), Ok(8_605_851_562_280_493_296)); - assert_eq!(read.read_i64(), Ok(-6_942_694_510_468_635_278)); - assert_eq!(read.read_utf(), Ok("the lazy dog.")); - } - - #[test] - fn write() { - let mut write = DataWrite::default(); - assert_eq!(write.write_u8(84), Ok(())); - assert_eq!(write.write_i8(104), Ok(())); - assert_eq!(write.write_i8(-61), Ok(())); - assert_eq!(write.write_u16(43296), Ok(())); - assert_eq!(write.write_i16(29123), Ok(())); - assert_eq!(write.write_i16(-17559), Ok(())); - assert_eq!(write.write_i32(1_667_965_152), Ok(())); - assert_eq!(write.write_i32(-1_433_832_849), Ok(())); - assert_eq!(write.write_i64(8_605_851_562_280_493_296), Ok(())); - assert_eq!(write.write_i64(-6_942_694_510_468_635_278), Ok(())); - assert_eq!(write.write_utf("the lazy dog."), Ok(())); - assert_eq!( - write.get_written(), - "Thé qûick ઉrown fox 🦘 over\0\rthe lazy dog.".as_bytes() - ); - } -} diff --git a/mindus/src/data/renderer.rs b/mindus/src/data/renderer.rs deleted file mode 100644 index 095a69d..0000000 --- a/mindus/src/data/renderer.rs +++ /dev/null @@ -1,853 +0,0 @@ -//! schematic drawing -use super::GridPos; -pub(crate) use super::autotile::*; -use super::schematic::Schematic; -use crate::block::State; -use crate::block::content::Type; -use crate::color_mapping::BLOCK2COLOR; -use crate::data::map::Registrar; -use crate::team::Team; -pub(crate) use crate::utils::*; -use crate::{Map, content::Content}; -use crate::{ - block::Rotation, - data::map::{ThinBloc, ThinMapData}, -}; -use atools::prelude::*; -use either::Either; -use fimg::{BlendingOverlay, BlendingOverlayAt, uninit}; -use std::hint::unlikely; -use std::iter::successors; -use std::ops::Coroutine; -use std::pin::Pin; - -include!(concat!(env!("OUT_DIR"), "/full.rs")); -include!(concat!(env!("OUT_DIR"), "/quar.rs")); -include!(concat!(env!("OUT_DIR"), "/eigh.rs")); - -#[derive(Debug, Copy, Clone)] -#[repr(u8)] -pub enum Scale { - Full, - // Half, - Quarter, - Eigth, -} - -impl Scale { - #[must_use] - pub const fn px(self) -> u8 { - match self { - Self::Full => 32, - Self::Quarter => 32 / 4, - Self::Eigth => 32 / 8, - } - } -} - -impl std::ops::Mul<u32> for Scale { - type Output = u32; - fn mul(self, rhs: u32) -> u32 { - self.px() as u32 * rhs - } -} - -#[macro_export] -macro_rules! load { - (raw $name: literal, $scale:expr) => { - paste::paste! { match $scale { - $crate::data::renderer::Scale::Quarter => $crate::data::renderer::quar::[<$name:snake:upper>], - $crate::data::renderer::Scale::Eigth => $crate::data::renderer::eigh::[<$name:snake:upper>], - $crate::data::renderer::Scale::Full => $crate::data::renderer::full::[<$name:snake:upper>], - } - } }; - (8x $name:literal) => { paste::paste! { - car::map!([ - load!([<$name 1>]), - load!([<$name 2>]), - load!([<$name 3>]), - load!([<$name 4>]), - load!([<$name 5>]), - load!([<$name 6>]), - load!([<$name 7>]), - load!([<$name 8>]), - ], |x| car::map!(x, DynImage::from)) - } }; - ($name:literal, $scale:expr) => { paste::paste! { - #[allow(unused_unsafe)] unsafe { match $scale { - $crate::data::renderer::Scale::Quarter => &$crate::data::renderer::quar::[<$name:snake:upper>], - $crate::data::renderer::Scale::Eigth => &$crate::data::renderer::eigh::[<$name:snake:upper>], - $crate::data::renderer::Scale::Full => &$crate::data::renderer::full::[<$name:snake:upper>], - }.mapped($crate::utils::Cow::Ref) } - } }; - ($name: ident) => { paste::paste! { - [$crate::data::renderer::full::[<$name:snake:upper>].copy(), $crate::data::renderer::quar::[<$name:snake:upper>].copy(), $crate::data::renderer::eigh::[<$name:snake:upper>].copy()] - } }; - ($name: literal) => { paste::paste! { - [$crate::data::renderer::full::[<$name:snake:upper>].copy(), $crate::data::renderer::quar::[<$name:snake:upper>].copy(), $crate::data::renderer::eigh::[<$name:snake:upper>].copy()] - } }; - (from $v:ident which is [$($k:literal $(|)?)+], $scale: ident) => { - $crate::data::renderer::load!($scale -> match $v { - $($k => $k,)+ - }) - }; - // turn load!(s -> match x { "v" => "y" }) into match x { "v" => load!("y", s) } - ($scale:ident -> match $v:ident { $($k:pat => $nam:literal $(,)?)+ }) => { - match $v { - $($k => $crate::data::renderer::load!($nam, $scale),)+ - #[allow(unreachable_patterns)] - n => unreachable!("{n:?}"), - } - }; - (concat $x:literal => $v:ident which is [$($k:literal $(|)?)+], $scale: ident) => { paste::paste! { - match $v { - $($k => - #[allow(unused_unsafe)] unsafe { (match $scale { - $crate::data::renderer::Scale::Quarter => &$crate::data::renderer::quar::[<$k:snake:upper _ $x:snake:upper>], - $crate::data::renderer::Scale::Eigth => &$crate::data::renderer::eigh::[<$k:snake:upper _ $x:snake:upper>], - $crate::data::renderer::Scale::Full => &$crate::data::renderer::full::[<$k:snake:upper _ $x:snake:upper>], - }.mapped($crate::utils::Cow::Ref)) }, - )+ - #[allow(unreachable_patterns)] - n => unreachable!("{n:?}"), - } - } }; -} -pub(crate) use load; - -/// trait for renderable objects -pub trait Renderable { - /// create a picture - #[must_use = "i did so much work for you"] - fn render(&self) -> Image<Vec<u8>, 3>; -} - -impl Renderable for Schematic { - /// creates a picture of a schematic. Bridges and node connections are not drawn. - /// ``` - /// # use mindus::*; - /// # use mindus::block::*; - /// let mut s = Schematic::new(2, 3); - /// s.put(0, 0, &DISTRIBUTOR); - /// s.put(0, 2, &ROUTER); - /// s.put(1, 2, &COPPER_WALL); - /// let output /*: Image */ = s.render(); - /// ``` - fn render(&self) -> Image<Vec<u8>, 3> { - let scale = if self.width + self.height > 500 { - Scale::Quarter - } else { - Scale::Full - }; - // fill background - // SAFETY: metal-floor is scalexscale, the output is a multiple of scale - let x_fac = cfg!(feature = "square") as u32 - * self.height.checked_sub(self.width).unwrap_or(0) as u32 - + 2; - let y_fac = cfg!(feature = "square") as u32 - * self.width.checked_sub(self.height).unwrap_or(0) as u32 - + 2; - let mut bg = unsafe { - load!("metal-floor", scale).repeated( - scale * (self.width + x_fac as usize) as u32, - scale * (self.height + y_fac as usize) as u32, - ) - }; - let mut canvas = Image::alloc(bg.width(), bg.height()); - for (GridPos(x, y), tile) in self.block_iter() { - let ctx = tile.block.wants_context().then(|| { - let pctx = PositionContext { - position: GridPos(x, y), - width: self.width, - height: self.height, - }; - let (cross, corners) = self.cross(&pctx); - RenderingContext { - cross, - corners, - position: pctx, - } - }); - let x = x as u32 - ((tile.block.get_size() - 1) / 2) as u32; - let y = self.height as u32 - y as u32 - ((tile.block.get_size() / 2) + 1) as u32; - unsafe { - canvas.as_mut().overlay_at( - &tile.image( - ctx.as_ref(), - tile.get_rotation().unwrap_or(Rotation::Up), - scale, - ), - scale * (x + x_fac / 2), - scale * (y + y_fac / 2), - ) - }; - } - for (p, b) in self.block_iter() { - let Some(&State::Point(mut relative)) = b.get_state() else { - continue; - }; - let directional = matches!(b.block.name(), "duct-bridge" | "reinforced-bridge-conduit"); - if false { - let offset = match b.rot { - Rotation::Right => (1, 0), - Rotation::Down => (0, -1), - Rotation::Left => (-1, 0), - Rotation::Up => (0, 1), - }; - relative = successors(Some(offset), |&(x, y)| Some((x + offset.0, y + offset.1))) - .take(4) - .find(|x| { - self.get((p.0 as i32 + x.0) as _, (p.1 as i32 + x.1) as _) - .ok() - .flatten() - .is_some_and(|x| x.block == b.block) - }); - } - if let Some(relative) = relative - && relative != (0, 0) - && let n @ ("bridge-conveyor" | "bridge-conduit" | "phase-conveyor" - | "phase-conduit") = b.block.name() - && let Ok(Some(x)) = self.get( - (p.0 as i32 + relative.0) as _, - (p.1 as i32 + relative.1) as _, - ) - && x.block.name() == n - { - let mut bridge = load!(concat "bridge" => n which is ["bridge-conveyor" | "bridge-conduit" | "phase-conveyor" | "phase-conduit" | "duct-bridge" | "reinforced-bridge-conduit"], scale); - - /* - let mut bridge = bridge.own(); - bridge.chunked_mut().for_each(|x| match &mut x[3] { - 0 => (), - y => *y = (*y as f32 * 0.20) as u8, - }); - bridge.save(format!("{n}-bridge.png")); - let mut bridge = ImageHolder::from(bridge); - */ - if relative.1 != 0 { - // continue; - bridge = - Image::build(bridge.height(), bridge.width()).buf(bridge.take_buffer()); - } - let arrow = load!(concat "arrow" => n which is ["bridge-conveyor"| "bridge-conduit" | "phase-conveyor" | "phase-conduit" | "duct-bridge" | "reinforced-bridge-conduit"], scale); - /* - let mut arrow = arrow.own(); - arrow.chunked_mut().for_each(|x| match &mut x[3] { - 0 => (), - y => *y = (*y as f32 * 0.20) as u8, - }); - arrow.save(format!("{n}-arrow.png")); - let mut arrow = ImageHolder::from(arrow); - */ - - for index in if relative.0 > 0 { - Either::Right( - scale.px() as i32 * 2..scale.px() as i32 * relative.0 + scale.px() as i32, - ) - } else { - Either::Left( - relative.0 * scale.px() as i32 + scale.px() as i32 * 2..scale.px() as i32, - ) - } { - unsafe { - canvas.overlay_blended_at( - &bridge, - (p.0 as i32 * scale.px() as i32 + index) as u32, - scale * (self.height as u32 - p.1 as u32 - 1 + y_fac / 2), - ) - }; - } - - for index in if relative.1 > 0 { - Either::Right( - -(scale.px() as i32) - scale.px() as i32 * (relative.1 - 1) - ..-(scale.px() as i32), - ) - } else { - Either::Left(0..(-relative.1 - 1) * scale.px() as i32) - } { - let y = - ((self.height as i32 - p.1 as i32 + 1) * scale.px() as i32 + index) as u32; - - unsafe { - canvas.overlay_blended_at(&bridge, scale * (p.0 as u32 + x_fac / 2), y) - }; - } - if relative.0 != 0 { - unsafe { - canvas.overlay_blended_at( - &arrow.rotated(if directional { - b.rot.rotated(false).count() - } else if relative.0 < 0 { - 2 - } else { - 0 - }), - scale.px() as u32 - + ((scale * p.0 as u32).cast_signed() - + (scale.px() as i32 * relative.0 / 2)) - as u32, - (y_fac / 2 + scale * (self.height as u32 - p.1 as u32)) - 1, - ) - }; - } else { - unsafe { - canvas.overlay_blended_at( - &arrow.rotated(if directional { - b.rot.rotated(false).count() - } else if relative.1 < 0 { - 1 - } else { - 3 - }), - (scale * p.0 as u32) + (x_fac / 2 + scale.px() as u32) - 1, - scale.px() as u32 - + ((scale * (self.height as u32 - p.1 as u32 - 1)).cast_signed() - + (scale.px() as i32 * -relative.1 / 2)) - as u32, - ); - } - } - } - } - - if matches!(scale, Scale::Full) { - ImageUtils::shadow(&mut canvas); - unsafe { bg.overlay_blended(&canvas) }; - } else { - unsafe { bg.overlay(&canvas) }; - } - bg - } -} - -impl Renderable for Map { - /// Draws a map - #[implicit_fn::implicit_fn] - fn render(&self) -> Image<Vec<u8>, 3> { - let scale = if self.width + self.height < 600 { - Scale::Full - } else if self.width + self.height < 4000 { - Scale::Quarter - } else { - Scale::Eigth - }; - use crate::data::map::table; - let mut img = uninit::Image::<_, 3>::new( - (scale * self.width as u32).try_into().unwrap(), - (scale * self.height as u32).try_into().unwrap(), - ); - // loop1 draws the floor - for y in 0..self.height { - for x in 0..self.width { - // Map::new() allocates w*h items - let j = x + self.width * y; - let tile = unsafe { self.tiles.get_unchecked(j) }; - let y = self.height - y - 1; - // println!("draw {tile:?} ({x}, {y})"); - - if [ - Type::ColoredFloor, - Type::MetalTiles1, - Type::MetalTiles2, - Type::MetalTiles3, - Type::MetalTiles4, - Type::MetalTiles5, - Type::MetalTiles6, - Type::MetalTiles7, - Type::MetalTiles8, - Type::MetalTiles9, - Type::MetalTiles10, - Type::MetalTiles11, - Type::MetalTiles12, - ] - .contains(&tile.floor) - { - let mask = crate::data::autotile::nbors( - self.corners(j).map(_.map(_.floor)), - self.cross(j).map(_.map(_.floor)), - tile.floor, - ); - let i = - &crate::data::autotile::select(tile.floor.get_name(), mask)[scale as usize]; - if tile.floor == Type::ColoredFloor { - let mut i = i.boxed(); - unsafe { - img.overlay_at( - &i.as_mut() - .tint(tile.nd.skip::<3>().take::<3>().into()) - .as_ref(), - scale * x as u32, - scale * y as u32, - ) - }; - } else { - unsafe { img.overlay_at(i, scale * x as u32, scale * y as u32) }; - } - } else { - unsafe { - img.overlay_at( - &table(tile.floor, scale), - scale * x as u32, - scale * y as u32, - ); - } - } - } - } - let mut img = unsafe { img.assume_init() }; - // loop2 draws the buildings - for y in 0..self.height { - for x in 0..self.width { - let j = x + self.width * y; - let tile = unsafe { self.tiles.get_unchecked(j) }; - let y = self.height - y - 1; - if let Some(build) = tile.build() { - let s = build.block.get_size(); - let x = x - - (match s { - 1 | 2 => 0, - 3 | 4 => 1, - 5 | 6 => 2, - 7 | 8 => 3, - 9 => 4, - // SAFETY: no block too big - _ => unsafe { std::hint::unreachable_unchecked() }, - }) as usize; - let y = y - - (match s { - 1 => 0, - 2 | 3 => 1, - 4 | 5 => 2, - 6 | 7 => 3, - 8 | 9 => 4, - // SAFETY: no block too big - _ => unsafe { std::hint::unreachable_unchecked() }, - }) as usize; - if unlikely(matches!( - build.block.name, - Type::ColoredWall | Type::MetalWall1 | Type::MetalWall2 | Type::MetalWall3 - )) { - let mask = crate::data::autotile::nbors( - self.corners(j) - .map(|x| x.and_then(|x| x.build().map(|b| b.block.name))), - self.cross(j) - .map(|x| x.and_then(|x| x.build().map(|b| b.block.name))), - build.block.name, - ); - let i = - crate::data::autotile::select(build.block.name(), mask)[scale as usize]; - if build.block.name == Type::ColoredWall { - unsafe { - img.overlay_at( - &i.boxed() - .as_mut() - .tint(tile.nd.skip::<3>().take::<3>().into()) - .as_ref(), - scale * x as u32, - scale * y as u32, - ) - }; - } else { - unsafe { img.overlay_at(&i, scale * x as u32, scale * y as u32) }; - } - continue; - } - let ctx = build.block.wants_context().then(|| { - let pctx = PositionContext { - position: GridPos(x, y), - width: self.width, - height: self.height, - }; - RenderingContext { - cross: self - .cross(j) - .map(|b| b.and_then(|b| Some((b.get_block()?, b.get_rotation()?)))), - corners: Default::default(), - position: pctx, - } - }); - unsafe { - img.as_mut().overlay_at( - &tile.build_image(ctx.as_ref(), scale), - scale * x as u32, - scale * y as u32, - ) - }; - } - } - } - /// loop 3 for the ores - for y in 0..self.height { - for x in 0..self.width { - let j = x + self.width * y; - let tile = unsafe { self.tiles.get_unchecked(j) }; - let y = self.height - y - 1; - - macro_rules! f { - ($($x: literal)+) => { paste::paste!{ - ([$(load!([<rune _ overlay $x>] ),)+], [$(load!([<rune _ overlay _ crux $x>] ),)+]) - }}; - } - const RUNES: ([[Image<&[u8], 4>; 3]; 109], [[Image<&[u8], 4>; 3]; 109]) = f![0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108]; - - if tile.has_ore() { - match tile.ore { - Type::RuneOverlay => unsafe { - img.overlay_at( - &RUNES.0[tile.nd[2] as usize][scale as usize], - scale * x as u32, - scale * y as u32, - ); - }, - Type::RuneOverlayCrux => unsafe { - img.overlay_at( - &RUNES.1[tile.nd[2] as usize][scale as usize], - scale * x as u32, - scale * y as u32, - ); - }, - Type::CharacterOverlay | Type::CharacterOverlayWhite => { - macro_rules! f { - ($($x: literal)+) => { paste::paste!{ - [$(load!([<character _ overlay $x>] ),)+] - }}; - } - - const LETTERS: [[Image<&[u8], 4>; 3]; 64] = f![0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63]; - unsafe { - img.overlay_at( - LETTERS[(tile.nd[2] & 0x3f) as usize][scale as usize] - .mapped(image::Cow::Ref) - .rotate(4 - (tile.nd[2] >> 6)), - scale * x as u32, - scale * y as u32, - ) - }; - } - ore => unsafe { - img.overlay_at(&table(ore, scale), scale * x as u32, scale * y as u32); - }, - } - } - } - } - // loop4 draws the units - for entity in &self.entities { - // bounds checks - let (x, y) = ( - entity.state.position.0 as u32, - self.height as u32 - entity.state.position.1 as u32 - 1, - ); - if x < 10 || x as usize > self.width - 10 || y < 10 || y as usize > self.height - 10 { - continue; - } - unsafe { - img.as_mut() - .overlay_at(&entity.draw(scale), scale * x, scale * y) - }; - } - img - } -} - -#[test] -fn all_blocks() { - use crate::block::content::Type; - use crate::content::Content; - for t in 19..Type::WorldMessage as u16 { - let t = Type::try_from(t).unwrap(); - if matches!(t, |Type::Empty| Type::SlagCentrifuge - | Type::HeatReactor - | Type::LegacyMechPad - | Type::LegacyUnitFactory - | Type::LegacyUnitFactoryAir - | Type::LegacyUnitFactoryGround - | Type::CommandCenter) - { - continue; - } - let name = t.get_name(); - let t = crate::block::BLOCK_REGISTRY.get(name).unwrap(); - let _ = t.image( - None, - Some(&RenderingContext { - corners: [None; 4], - cross: [None; 4], - position: PositionContext { - position: GridPos(0, 0), - width: 5, - height: 5, - }, - }), - Rotation::Up, - Scale::Quarter, - ); - } -} - -pub fn draw_units( - map: &mut crate::data::map::MapReader, - mut img: Image<&mut [u8], 3>, - size: (u16, u16), -) -> Result<(), super::map::ReadError> { - use std::ops::CoroutineState::*; - let scale = if size.0 + size.1 < 2000 { - Scale::Quarter - } else { - Scale::Eigth - }; - - let mut co = map.entities()?; - let n = match Pin::new(&mut co).resume(()) { - Yielded(crate::data::map::EntityData::Length(x)) => x, - Complete(Err(e)) => return Err(e), - _ => unreachable!(), - }; - 'out: { - for _ in 0..n { - match Pin::new(&mut co).resume(()) { - Yielded(crate::data::map::EntityData::Data(entity)) => { - // bounds checks - let (x, y) = ( - entity.state.position.0 as u32, - size.1 as u32 - entity.state.position.1 as u32 - 1, - ); - if x < 10 - || x as usize > size.0 as usize - 10 - || y < 10 - || y as usize > size.1 as usize - 10 - { - continue; - } - unsafe { - img.as_mut() - .overlay_at(&entity.draw(scale), scale * x, scale * y) - }; - } - Complete(Err(e)) => return Err(e), - Complete(Ok(())) => break 'out, - x => unreachable!("{x:?}"), - } - } - match Pin::new(&mut co).resume(()) { - Complete(Ok(())) => (), - _ => unreachable!(), - }; - } - Ok(()) -} - -/// Draws a map in a single pass. -/// This is quite fast, but, unfortunately, has no memory, so conveyors will be drawing imporperly. As will sorters. -/// -/// Reader must have read to the map section. -/// Will walk through the map section. use [`draw_units`] after, if you like. -pub fn draw_map_single( - map: &mut crate::data::map::MapReader, - r: Registrar, -) -> Result<(Image<Box<[u8]>, 3>, (u16, u16)), super::map::ReadError> { - use std::ops::CoroutineState::*; - let mut co = map.thin_map(r)?; - let (w, h) = match Pin::new(&mut co).resume(()) { - Yielded(ThinMapData::Init { width, height }) => (width, height), - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - }; - let scale = if w + h < 2000 { - Scale::Quarter - } else { - Scale::Eigth - }; - let mut img = uninit::Image::<_, 3>::new( - (scale * w as u32).try_into().unwrap(), - (scale * h as u32).try_into().unwrap(), - ); - use crate::data::map::table; - // loop1 draws the floor - for y in 0..h { - for x in 0..w { - let (floor, ore) = match Pin::new(&mut co).resume(()) { - Yielded(ThinMapData::Tile { floor, ore }) => (floor, ore), - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - }; - let y = h - y - 1; - // println!("draw tile {floor} {ore} @ {x} {y}"); - unsafe { img.overlay_at(&table(floor, scale), scale * x as u32, scale * y as u32) }; - if ore != Type::Air { - unsafe { - img.overlay_at(&table(ore, scale), scale * x as u32, scale * y as u32); - } - } - } - } - let mut img = unsafe { img.assume_init() }.boxed(); - let mut i = 0; - while i < (w as usize * h as usize) { - let mut draw = |i, r, b: &'static crate::block::Block| { - let x = i % w as usize; - let y = i / w as usize; - let y = h as usize - y - 1; - let s = b.get_size(); - let x = x - - (match s { - 1 | 2 => 0, - 3 | 4 => 1, - 5 | 6 => 2, - 7 | 8 => 3, - 9 => 4, - // SAFETY: no block too big - _ => unsafe { std::hint::unreachable_unchecked() }, - }) as usize; - let y = y - - (match s { - 1 => 0, - 2 | 3 => 1, - 4 | 5 => 2, - 6 | 7 => 3, - 8 | 9 => 4, - // SAFETY: no block too big - _ => unsafe { std::hint::unreachable_unchecked() }, - }) as usize; - let ctx = b.wants_context().then(|| { - let pctx = PositionContext { - position: GridPos(x, y), - width: w as usize, - height: h as usize, - }; - RenderingContext { - corners: [None; 4], - cross: [None; 4], // woe - position: pctx, - } - }); - unsafe { - img.as_mut().overlay_at( - &b.image(None, ctx.as_ref(), r, scale), - scale * x as u32, - scale * y as u32, - ) - }; - }; - match Pin::new(&mut co).resume(()) { - Yielded(ThinMapData::Bloc(ThinBloc::Many(None, n))) => { - i += n as usize; - } - Yielded(ThinMapData::Bloc(ThinBloc::Build(r, bloc, _))) => { - draw(i, r, bloc); - } - Yielded(ThinMapData::Bloc(ThinBloc::Many(Some(bloc), n))) => { - for i in i..=i + n as usize { - draw(i, Rotation::Up, bloc); - } - i += n as usize; - } - Complete(Err(x)) => return Err(x), - x => unreachable!("{x:?}"), - } - i += 1; - } - match Pin::new(&mut co).resume(()) { - Complete(Ok(())) => (), - f => unreachable!("{f:?}"), - }; - - Ok((img, (w, h))) -} - -/// Draws a map in a single pass. Uses the silly team color thing that mindustry has. -/// probably broken- if you want to use this ask me to update the block2color -pub fn draw_map_simple( - map: &mut crate::data::map::MapReader, - r: Registrar, -) -> Result<(Image<Box<[u8]>, 3>, (u16, u16)), super::map::ReadError> { - use std::ops::CoroutineState::*; - let mut co = map.thin_map(r)?; - let (w, h) = match Pin::new(&mut co).resume(()) { - Yielded(ThinMapData::Init { width, height }) => (width, height), - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - }; - let mut img = uninit::Image::<u8, 3>::new( - (w as u32).try_into().unwrap(), - (h as u32).try_into().unwrap(), - ); - // loop1 draws the floor - for y in 0..h { - for x in 0..w { - let (floor, ore) = match Pin::new(&mut co).resume(()) { - Yielded(ThinMapData::Tile { floor, ore }) => (floor, ore), - Complete(Err(x)) => return Err(x), - _ => unreachable!(), - }; - let t = (ore != Type::Air).then_some(ore).unwrap_or(floor); - let y = h - y - 1; - let i1 = img.at(x as u32, y as u32) as usize; - unsafe { - img.slice(i1..i1 + 3) - .write_copy_of_slice(&BLOCK2COLOR[t as u16 as usize][..]) - }; - } - } - let mut img = unsafe { img.assume_init() }.boxed(); - let mut i = 0; - while i < (w as usize * h as usize) { - let mut draw = |i, b: &'static crate::block::Block, team: Team| { - let x = i % w as usize; - let y = i / w as usize; - let y = h as usize - y - 1; - let s = b.get_size(); - let x = x - - (match s { - 1 | 2 => 0, - 3 | 4 => 1, - 5 | 6 => 2, - 7 | 8 => 3, - 9 => 4, - // SAFETY: no block too big - _ => unsafe { std::hint::unreachable_unchecked() }, - }) as usize; - let y = y - - (match s { - 1 => 0, - 2 | 3 => 1, - 4 | 5 => 2, - 6 | 7 => 3, - 8 | 9 => 4, - // SAFETY: no block too big - _ => unsafe { std::hint::unreachable_unchecked() }, - }) as usize; - for x in x..(x as usize + s as usize).min(w as usize) { - for y in y..(y as usize + s as usize).min(h as usize) { - unsafe { - img.set_pixel(x as u32, y as u32, &<[u8; 3]>::from(team.color())); - } - } - } - }; - match Pin::new(&mut co).resume(()) { - Yielded(ThinMapData::Bloc(ThinBloc::Many(None, n))) => { - i += n as usize; - } - Yielded(ThinMapData::Bloc(ThinBloc::Build(_, bloc, t))) => { - draw(i, bloc, t); - } - Yielded(ThinMapData::Bloc(ThinBloc::Many(Some(bloc), n))) => { - for i in i..=i + n as usize { - draw(i, bloc, Team::DERELICT); - } - i += n as usize; - } - Complete(Err(x)) => return Err(x), - x => unreachable!("{x:?}"), - } - i += 1; - } - match Pin::new(&mut co).resume(()) { - Complete(Ok(())) => (), - f => unreachable!("{f:?}"), - }; - - Ok((img, (w, h))) -} diff --git a/mindus/src/exe/draw.rs b/mindus/src/exe/draw.rs deleted file mode 100644 index 6bf8895..0000000 --- a/mindus/src/exe/draw.rs +++ /dev/null @@ -1,41 +0,0 @@ -use mindus::data::DataRead; -use mindus::{Schematic, Serializable}; -use std::env::Args; - -use crate::print_err; - -pub fn main(args: Args) { - // process schematics from command line - for curr in args { - match if curr.ends_with(".msch") { - let Ok(v) = std::fs::read(&curr) else { - panic!("no file found"); - }; - Schematic::deserialize(&mut DataRead::new(&v)) - } else { - match Schematic::deserialize_base64(&curr) { - Err(e) => { - print_err!(e, "Could not read schematic"); - continue; - } - Ok(o) => Ok(o), - } - } { - Ok(s) => { - println!("{curr} {}, {:?}", s.tags.get("name").unwrap(), &s.tags); - let i = mindus::Renderable::render(&s); - if let Ok(v) = std::env::var("SAVE") - && v == "1" - { - i.save("x.png"); - println!("drawn"); - continue; - } - } - // continue processing literals & maybe interactive mode - Err(e) => { - print_err!(e, "Could not read schematic"); - } - } - } -} diff --git a/mindus/src/exe/map.rs b/mindus/src/exe/map.rs deleted file mode 100644 index f571761..0000000 --- a/mindus/src/exe/map.rs +++ /dev/null @@ -1,32 +0,0 @@ -use mindus::data::DataRead; -use mindus::{Map, Renderable, Serializable}; -use std::env::Args; - -use super::print_err; - -pub fn main(args: Args) { - // process schematics from command line - for curr in args { - let Ok(s) = std::fs::read(curr) else { - continue; - }; - match (|| { - let m = Map::deserialize(&mut DataRead::new(&s))?; - println!( - "rendering {}", - m.tags.get("name").map_or("<unknown>", |v| v) - ); - Ok::<_, mindus::data::map::ReadError>(m.render()) - })() { - Err(e) => print_err!(e, "fail"), - Ok(m) => { - if let Ok(v) = std::env::var("SAVE") - && v == "1" - { - m.save("x.png"); - continue; - } - } - } - } -} diff --git a/mindus/src/item/storage.rs b/mindus/src/item/storage.rs deleted file mode 100644 index 7fccccc..0000000 --- a/mindus/src/item/storage.rs +++ /dev/null @@ -1,442 +0,0 @@ -use std::fmt; -use std::iter::{Enumerate, FusedIterator}; -use std::marker::PhantomData; -use std::slice; - -use crate::item; - -#[derive(Clone, Eq)] -/// stores data -pub struct Storage<T> { - base: Vec<u32>, - total: u64, - holds: PhantomData<T>, -} - -pub type ItemStorage = Storage<item::Type>; - -impl<T> Default for Storage<T> { - fn default() -> Self { - Self { - base: Vec::default(), - total: 0, - holds: PhantomData, - } - } -} - -impl<T: std::fmt::Debug + TryFrom<u16>> std::fmt::Debug for Storage<T> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_map().entries(self.iter_nonzero()).finish() - } -} - -impl<T: TryFrom<u16> + fmt::Debug> fmt::Display for Storage<T> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_map().entries(self.iter_nonzero()).finish() - } -} - -impl<T> Storage<T> -where - u16: From<T>, -{ - #[must_use] - /// create a new storage - /// - /// ``` - /// # use mindus::item::storage::ItemStorage; - /// // ItemStorage is a alias to Storage<Item> - /// let s = ItemStorage::new(); - /// ``` - pub fn new() -> Self { - Self::default() - } - - #[must_use] - /// total items - pub const fn get_total(&self) -> u64 { - self.total - } - - #[must_use] - /// check if its empty - /// - /// ``` - /// # use mindus::item::storage::ItemStorage; - /// # use mindus::item; - /// - /// let mut s = ItemStorage::new(); - /// assert!(s.is_empty()); - /// s.set(item::Type::Copper, 500); - /// assert!(!s.is_empty()); - /// s.sub(item::Type::Copper, 500, 0); - /// assert!(s.is_empty()); - /// ``` - pub const fn is_empty(&self) -> bool { - self.total == 0 - } - - pub fn reserve(&mut self, n: usize) { - self.base.reserve_exact(n) - } - - /// get item count of certain element - /// - /// ``` - /// # use mindus::item::storage::ItemStorage; - /// # use mindus::item; - /// - /// let mut s = ItemStorage::new(); - /// assert!(s.get(item::Type::Coal) == 0); - /// s.set(item::Type::Coal, 500); - /// assert!(s.get(item::Type::Titanium) == 0); - /// assert!(s.get(item::Type::Coal) == 500); - /// s.sub(item::Type::Coal, 500, 0); - /// assert!(s.get(item::Type::Coal) == 0); - /// ``` - #[must_use] - pub fn get(&self, ty: T) -> u32 { - self.base.get(u16::from(ty) as usize).copied().unwrap_or(0) - } - /// set item count of certain element - /// - /// ``` - /// # use mindus::item::storage::ItemStorage; - /// # use mindus::item; - /// - /// let mut s = ItemStorage::new(); - /// s.set(item::Type::Coal, 500); - /// s.set(item::Type::Copper, 500); - /// assert!(s.get(item::Type::Copper) == 500); - /// ``` - pub fn set(&mut self, ty: T, count: u32) -> u32 { - let idx = u16::from(ty) as usize; - match self.base.get_mut(idx) { - None => { - self.base.resize(idx + 1, 0); - self.base[idx] = count; - self.total += u64::from(count); - 0 - } - Some(curr) => { - let prev = *curr; - self.total = self.total - u64::from(prev) + u64::from(count); - *curr = count; - prev - } - } - } - - /// add to a certain elements item count, capping. - /// - /// ``` - /// # use mindus::item::storage::ItemStorage; - /// # use mindus::item; - /// - /// let mut s = ItemStorage::new(); - /// s.add(item::Type::Coal, 500, 500); - /// assert!(s.get(item::Type::Coal) == 500); - /// s.add(item::Type::Coal, 500, 10000); - /// assert!(s.get(item::Type::Coal) == 1000); - /// s.add(item::Type::Coal, 500, 1250); - /// assert!(s.get(item::Type::Coal) == 1250); - /// ``` - pub fn add(&mut self, ty: T, add: u32, max: u32) -> (u32, u32) { - let idx = u16::from(ty) as usize; - match self.base.get_mut(idx) { - None => { - let actual = add.min(max); - self.base.resize(idx + 1, 0); - self.base[idx] = actual; - self.total += u64::from(add); - (actual, actual) - } - Some(curr) => { - if *curr < max { - let actual = add.min(max - *curr); - *curr += actual; - self.total += u64::from(actual); - (actual, *curr) - } else { - (0, *curr) - } - } - } - } - - /// like [`Storage::add`] but fails - pub fn try_add(&mut self, ty: T, add: u32, max: u32) -> Result<(u32, u32), TryAddError> { - let idx = u16::from(ty) as usize; - match self.base.get_mut(idx) { - None => { - if add <= max { - self.base.resize(idx + 1, 0); - self.base[idx] = add; - self.total += u64::from(add); - Ok((add, add)) - } else { - Err(TryAddError { have: 0, add, max }) - } - } - Some(curr) => { - if *curr <= max && max - *curr <= add { - *curr += add; - self.total += u64::from(add); - Ok((add, *curr)) - } else { - Err(TryAddError { - have: *curr, - add, - max, - }) - } - } - } - } - - pub fn sub(&mut self, ty: T, sub: u32, min: u32) -> (u32, u32) { - match self.base.get_mut(u16::from(ty) as usize) { - None => (0, 0), - Some(curr) => { - if *curr > min { - let actual = sub.min(*curr - min); - *curr -= actual; - self.total -= u64::from(actual); - (actual, *curr) - } else { - (0, *curr) - } - } - } - } - - pub fn try_sub(&mut self, ty: T, sub: u32, min: u32) -> Result<(u32, u32), TrySubError> { - let idx = u16::from(ty) as usize; - match self.base.get_mut(idx) { - None => Err(TrySubError { have: 0, sub, min }), - Some(curr) => { - if *curr >= min && *curr - min >= sub { - *curr -= sub; - self.total -= u64::from(sub); - Ok((sub, *curr)) - } else { - Err(TrySubError { - have: *curr, - sub, - min, - }) - } - } - } - } - - pub fn add_all(&mut self, other: &Storage<T>, max_each: u32) -> (u64, u64) { - let mut added = 0u64; - if max_each > 0 && other.total > 0 { - let mut iter = other.base.iter().enumerate(); - // resize our vector only once and if necessary - let (last, add_last) = iter.rfind(|(_, n)| **n != 0).unwrap(); - if self.base.len() <= last { - self.base.resize(last + 1, 0); - } - // process items by increasing ID - for (idx, add) in iter { - let curr = self.base[idx]; - if curr < max_each { - let actual = (*add).min(max_each - curr); - self.base[idx] += actual; - added += u64::from(actual); - } - } - // process the final element (which we've retrieved first) - let curr = self.base[last]; - if curr < max_each { - let actual = (*add_last).min(max_each - curr); - self.base[last] += actual; - added += u64::from(actual); - } - // update total - self.total += added; - } - (added, self.total) - } - - pub fn pull_all(&mut self, other: &mut Storage<T>, max_each: u32) -> (u64, u64, u64) { - let mut added = 0u64; - if max_each > 0 && other.total > 0 { - let mut iter = other.base.iter_mut().enumerate(); - // resize our vector only once and if necessary - let (last, add_last) = iter.rfind(|(_, n)| **n != 0).unwrap(); - if self.base.len() <= last { - self.base.resize(last + 1, 0); - } - // process items by increasing ID - for (idx, add) in iter { - let curr = self.base[idx]; - if curr < max_each { - let actual = (*add).min(max_each - curr); - self.base[idx] += actual; - *add -= actual; - added += u64::from(actual); - } - } - // process the final element (which we've retrieved first) - let curr = self.base[last]; - if curr < max_each { - let actual = (*add_last).min(max_each - curr); - self.base[last] += actual; - *add_last -= actual; - added += u64::from(actual); - } - // update totals - self.total += added; - other.total -= added; - } - (added, self.total, other.total) - } - - pub fn sub_all(&mut self, other: &Storage<T>, min_each: u32) -> (u64, u64) { - let mut subbed = 0u64; - if self.total > 0 && other.total > 0 { - // no need for resizing, we only remove - // process items by increasing ID - for (idx, sub) in other.base.iter().enumerate() { - if let Some(curr) = self.base.get(idx) { - if *curr > min_each { - let actual = (*sub).min(*curr - min_each); - self.base[idx] -= actual; - subbed += u64::from(actual); - } - } else { - break; - } - } - // update total - self.total -= subbed; - } - (subbed, self.total) - } - - pub fn diff_all(&mut self, other: &mut Storage<T>, min_each: u32) -> (u64, u64, u64) { - let mut subbed = 0u64; - if self.total > 0 && other.total > 0 { - // no need for resizing, we only remove - // consider only indexes present in both - let end = self.base.len().min(other.base.len()); - let lhs = &mut self.base[..end]; - let rhs = &mut other.base[..end]; - // process items by increasing ID - for (l, r) in lhs.iter_mut().zip(rhs) { - if *l > min_each && *r > min_each { - let actual = (*l - min_each).min(*r - min_each); - *l -= actual; - *r -= actual; - subbed -= u64::from(actual); - } - } - // update totals - self.total -= subbed; - other.total -= subbed; - } - (subbed, self.total, other.total) - } - - pub fn clear(&mut self) { - self.base.clear(); - } -} - -impl<T: TryFrom<u16>> Storage<T> { - pub fn iter(&self) -> Iter<'_, T> { - Iter { - base: self.base.iter().enumerate(), - all: true, - _t: PhantomData, - } - } - - pub fn iter_nonzero(&self) -> Iter<'_, T> { - Iter { - base: self.base.iter().enumerate(), - all: false, - _t: PhantomData, - } - } -} - -// manual because padding with zeros doesn't affect equality -impl<T> PartialEq for Storage<T> { - fn eq(&self, other: &Self) -> bool { - let mut li = self.base.iter().fuse(); - let mut ri = other.base.iter().fuse(); - loop { - match (li.next(), ri.next()) { - (None, None) => return true, - (l, r) => { - if l.unwrap_or(&0) != r.unwrap_or(&0) { - return false; - } - } - } - } - } -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, thiserror::Error)] -#[error("adding {add} to current {have} would exceed {max}")] -pub struct TryAddError { - pub have: u32, - pub add: u32, - pub max: u32, -} - -#[derive(Clone, Copy, Debug, Eq, PartialEq, thiserror::Error)] -#[error("removing {sub} from current {have} would drop below {min}")] -pub struct TrySubError { - pub have: u32, - pub sub: u32, - pub min: u32, -} - -impl<'l, T: TryFrom<u16>> IntoIterator for &'l Storage<T> { - type Item = (T, u32); - - type IntoIter = Iter<'l, T>; - - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} - -#[derive(Clone, Debug)] -#[must_use = "iterator is lazy"] -pub struct Iter<'l, T: TryFrom<u16>> { - base: Enumerate<slice::Iter<'l, u32>>, - all: bool, - _t: PhantomData<T>, -} - -impl<'l, T: TryFrom<u16>> Iterator for Iter<'l, T> { - type Item = (T, u32); - - fn next(&mut self) -> Option<Self::Item> { - for (idx, cnt) in self.base.by_ref() { - if *cnt > 0 || self.all { - if let Ok(ty) = T::try_from(idx as u16) { - return Some((ty, *cnt)); - } - } - } - None - } - - fn size_hint(&self) -> (usize, Option<usize>) { - (0, self.base.size_hint().1) - } -} - -impl<'l, T: TryFrom<u16>> FusedIterator for Iter<'l, T> where - Enumerate<slice::Iter<'l, u32>>: FusedIterator -{ -} diff --git a/mindus/src/lib.rs b/mindus/src/lib.rs deleted file mode 100644 index 4541f8e..0000000 --- a/mindus/src/lib.rs +++ /dev/null @@ -1,39 +0,0 @@ -//! crate for dealing with mindustry -#![feature( - error_generic_member_access, - maybe_uninit_write_slice, - try_trait_v2_residual, - stmt_expr_attributes, - generic_const_exprs, - iter_from_coroutine, - const_trait_impl, - coroutine_trait, - likely_unlikely, - portable_simd, - derive_const, - try_trait_v2, - try_blocks, - const_convert, - coroutines -)] -#![allow(clippy::redundant_closure_call, incomplete_features)] -#![warn( - clippy::multiple_unsafe_ops_per_block, - clippy::missing_const_for_fn, - clippy::missing_safety_doc, - unsafe_op_in_unsafe_fn, - clippy::dbg_macro, - clippy::perf -)] -pub mod block; -pub mod color_mapping; -pub mod content; -pub mod data; -pub mod fluid; -pub mod item; -pub mod modifier; -mod team; -pub mod unit; -mod utils; -#[doc(inline)] -pub use data::{Serializable, map::Map, renderer::Renderable, schematic::Schematic}; diff --git a/mindus/src/unit.rs b/mindus/src/unit.rs deleted file mode 100644 index cb81ef7..0000000 --- a/mindus/src/unit.rs +++ /dev/null @@ -1,430 +0,0 @@ -//! units -//! -//! [source](https://github.com/Anuken/Mindustry/blob/master/core/src/mindustry/content/UnitTypes.java) - -use crate::Serializable; -use crate::block::payload::read_payload; -use crate::content::content_enum; -use crate::data::command::UnitCommand; -use crate::data::dynamic::DynData; -use crate::data::entity_mapping::UnitClass; -use crate::data::{DataRead, ReadError}; -use crate::item::Type as Item; -use crate::modifier::Type as Status; -use crate::team::Team; -use crate::utils::ImageHolder; - -macro_rules! units { - ($($unit:literal,)+ $(,)?) => { paste::paste! { - content_enum! (pub enum Type / Unit for u16 | TryFromU16Error { - $($unit,)+ - }); - - impl Type { - fn draw(self, s: crate::data::renderer::Scale) -> ImageHolder<4> { - match self { - $(Type::[<$unit:camel>] => units!(@help $unit + s),)+ - } - } - } - } }; - (@help "block" + $s:expr) => { crate::data::renderer::load!("empty4", $s) }; - (@help $v:literal + $s:expr) => { crate::data::renderer::load!($v, $s) }; -} - -units! { - "dagger", - "mace", - "fortress", - "scepter", - "reign", - "nova", - "pulsar", - "quasar", - "vela", - "corvus", - "crawler", - "atrax", - "spiroct", - "arkyid", - "toxopid", - "flare", - "horizon", - "zenith", - "antumbra", - "eclipse", - "mono", - "poly", - "mega", - "quad", - "oct", - "risso", - "minke", - "bryde", - "sei", - "omura", - "retusa", - "oxynoe", - "cyerce", - "aegires", - "navanax", - "alpha", - "beta", - "gamma", - "stell", - "locus", - "precept", - "vanquish", - "conquer", - "merui", - "cleroi", - "anthicus", - "anthicus-missile", - "tecta", - "collaris", - "elude", - "avert", - "obviate", - "quell", - "quell-missile", - "disrupt", - "disrupt-missile", - "renale", - "latum", - "evoke", - "incite", - "emanate", - "block", - "manifold", - "assembly-drone", - "scathe-missile", -} - -#[derive(Default, Debug)] -pub struct UnitState { - pub ammo: f32, - pub elevation: f32, - pub flag: i64, - pub health: f32, - pub is_shooting: bool, - pub rotation: f32, - pub shield: f32, - pub stack: (Option<Item>, u32), - /// how many status can you realistically be afflicted with - pub status: [Status; 3], - pub team: Team, - pub velocity: (f32, f32), - pub position: (f32, f32), - pub controller: Controller, -} -// pub trait TryThen { -// fn try_then<O: Try<Output = Option<T>, Residual = E>, T, E, R: Try<Output = T, Residual = E>>( -// self, -// then: impl FnMut() -> R, -// ) -> O; -// } -// impl TryThen for bool { -// fn try_then< -// O: Try<Output = Option<T>, Residual = E>, -// T, -// E, -// R: Try<Output = T, Residual = E>, -// >( -// self, -// mut then: impl FnMut() -> R, -// ) { -// match self { -// false => O::from_output(None), -// true => match then().branch() { -// ControlFlow::Continue(x) => O::from_output(Some(x)), -// ControlFlow::Break(x) => O::from_residual(x), -// }, -// } -// } -// } -pub trait TryThen { - fn try_then<T, E>(self, f: impl FnMut() -> Result<T, E>) -> Result<Option<T>, E>; -} -impl TryThen for bool { - fn try_then<T, E>(self, mut f: impl FnMut() -> Result<T, E>) -> Result<Option<T>, E> { - self.then_some(()).map(|()| f()).transpose() - } -} - -#[derive(Default, Debug)] -pub enum Controller { - Player(i32), - Logic(i32), - Command { - target: Option<i32>, - pos: Option<(f32, f32)>, - command: Option<UnitCommand>, - }, - #[default] - Assembler, -} - -impl Controller { - /// format: - /// - match [`u8`] - /// - (0): player - /// - player: [`i32`] - /// - /// - (3): logic ai - /// - position: [`i32`] - /// - /// - (6): command - /// - has_attack: [`bool`] - /// - has_pos: [`bool`] - /// - if `has_pos`: - /// - pos: ([`f32`], [`f32`]) - /// - if `has_attack`: - /// - ty: [`i8`] - /// - target_id: [`i32`] - /// - command: [`i8`] attempt as [`UnitCommand`] - /// - (_): assembler - fn read(buff: &mut DataRead) -> Result<Controller, ReadError> { - Ok(match buff.read_u8()? { - 0 => Controller::Player(buff.read_i32()?), - 3 => Controller::Logic(buff.read_i32()?), - t @ (4 | 6 | 7 | 8 | 9) => { - let has_attack = buff.read_bool()?; - let pos = buff - .read_bool()? - .try_then::<_, ReadError>(|| try { (buff.read_f32()?, buff.read_f32()?) })?; - let target = has_attack.try_then::<_, ReadError>(|| try { - buff.skip(1)?; - buff.read_i32()? - })?; - let n = buff.read_i8()?; - let command = u8::try_from(n) - .ok() - .and_then(|x| UnitCommand::try_from(x).ok()); - if let 7 | 8 | 9 = t { - for _ in 0..buff.read_u8()? { - match buff.read_u8()? { - 0 | 1 => { - buff.read_u32()?; - } - 2 => { - buff.read_f32()?; - buff.read_f32()?; - } - _ => {} - } - } - } - if t == 8 { - // stance - buff.read_u8()?; - } else if t == 9 { - let stances = buff.read_u8()?; - buff.skip(stances as _)?; - } - Controller::Command { - target, - pos, - command, - } - } - 5 => Controller::Assembler, - _ => Controller::Assembler, - }) - } -} - -#[derive(Debug)] -pub struct Unit { - pub state: UnitState, - pub ty: Type, -} - -impl UnitClass { - pub fn read(self, buff: &mut DataRead) -> Result<Unit, ReadError> { - let _rev = buff.read_u16()?; - let mut state = UnitState::default(); - read_abilities(buff)?; - state.ammo = buff.read_f32()?; - match self { - Self::Block - | Self::Legs - | Self::Elevated - | Self::Crawl - | Self::Boat - | Self::Tank - | Self::Air => { - state.controller = Controller::read(buff)?; - state.elevation = buff.read_f32()?; - state.flag = buff.read_i64()?; - state.health = buff.read_f32()?; - state.is_shooting = buff.read_bool()?; - read_tile(buff)?; - read_mounts(buff)?; - } - Self::Mech => { - buff.skip(4)?; // base rotation - state.controller = Controller::read(buff)?; - state.elevation = buff.read_f32()?; - state.flag = buff.read_i64()?; - state.health = buff.read_f32()?; - state.is_shooting = buff.read_bool()?; - read_tile(buff)?; - read_mounts(buff)?; - } - Self::Payload => { - state.controller = Controller::read(buff)?; - state.elevation = buff.read_f32()?; - state.flag = buff.read_i64()?; - state.health = buff.read_f32()?; - state.is_shooting = buff.read_bool()?; - read_tile(buff)?; - read_mounts(buff)?; - for _ in 0..buff.read_i32()? { - // recursion more! - // this is unreliable, as read_payload may not read the full block. - // if read_plans reports a error, with a payload unit, this is why - let _ = read_payload(buff); - } - } - Self::Bomb => { - state.controller = Controller::read(buff)?; - state.elevation = buff.read_f32()?; - state.flag = buff.read_i64()?; - state.health = buff.read_f32()?; - state.is_shooting = buff.read_bool()?; - buff.skip(4)?; // lifetime - read_tile(buff)?; - read_mounts(buff)?; - } - Self::Tethered => { - buff.skip(4)?; - state.controller = Controller::read(buff)?; - state.elevation = buff.read_f32()?; - state.flag = buff.read_i64()?; - state.health = buff.read_f32()?; - state.is_shooting = buff.read_bool()?; - read_tile(buff)?; - read_mounts(buff)?; - for _ in 0..buff.read_i32()? { - // recursion more! - read_payload(buff)?; - } - } - } - read_plans(buff)?; - state.rotation = buff.read_f32()?; - state.shield = buff.read_f32()?; - buff.skip(1)?; // spawned_by_core - state.stack = read_stack(buff)?; - state.status = read_status(buff)?; - state.team = Team::of(buff.read_u8()?); - if self == Self::Bomb { - buff.skip(4)?; // time - } - let ty = Type::try_from(buff.read_u16()?).unwrap(); - buff.skip(1)?; // update_building - state.velocity = (buff.read_f32()?, buff.read_f32()?); - state.position = ( - (buff.read_f32()? / 8.0).floor(), - (buff.read_f32()? / 8.0).floor(), - ); - Ok(Unit { state, ty }) - } -} - -/// format: -/// - iterate [`u8`] -/// - ability: [`f32`] -fn read_abilities(buff: &mut DataRead) -> Result<(), ReadError> { - let n = buff.read_u8()? as usize; - buff.skip(n * 4) -} - -/// format: -/// - tile: [`i32`] -fn read_tile(buff: &mut DataRead) -> Result<(), ReadError> { - buff.skip(4) -} - -/// format: -/// - iterate [`u8`] -/// - state: [`u8`] -/// - x aim: [`f32`] -/// - y aim: [`f32`] -fn read_mounts(buff: &mut DataRead) -> Result<(), ReadError> { - let n = buff.read_u8()? as usize; - buff.skip(n * 9) -} - -/// format: -/// - plan count: [`i32`] -/// - plan_count == -1 => return -/// - iterate `plan_count` -/// - call [`read_plan`] -fn read_plans(buff: &mut DataRead) -> Result<(), ReadError> { - let used = buff.read_i32()?; - if used == -1 { - return Ok(()); - } - for _ in 0..used { - read_plan(buff)?; - } - Ok(()) -} - -/// format: -/// - ty: [`u8`] -/// - position: [`i32`] -/// - if ty != 1 -/// - block: [`u16`] -/// - rotation: [`i8`] -/// - has_config: [`bool`] -/// - config: [`DynData`](crate::data::dynamic::DynData) -fn read_plan(buff: &mut DataRead) -> Result<(), ReadError> { - let ty = buff.read_u8()?; - buff.skip(4)?; - if ty != 1 { - buff.skip(4)?; - let _ = DynData::deserialize(buff).unwrap(); - } - Ok(()) -} - -/// format: -/// - item: [`i16`] attempt into [`Item`] -/// - count: [`u32`] -fn read_stack(buff: &mut DataRead) -> Result<(Option<Item>, u32), ReadError> { - let n = buff.read_i16()?; - Ok(( - (n != -1).then(|| Item::try_from(n as u16).unwrap()), - buff.read_u32()?, - )) -} - -/// read the status. -/// i take only 3 -/// -/// format: -/// - iterate [`i32`] -/// - status: [`u16`] attempt into [`Status`] -/// - duration: [`f32`] -fn read_status(buff: &mut DataRead) -> Result<[Status; 3], ReadError> { - let mut status = [Status::None, Status::None, Status::None]; - for i in 0..buff.read_i32()? { - let this = Status::try_from(buff.read_u16()?); - buff.skip(4)?; - if let Ok(s) = this - && i < 3 - { - status[i as usize] = s; - } - } - Ok(status) -} - -impl Unit { - #[inline] - pub fn draw(&self, s: crate::data::renderer::Scale) -> ImageHolder<4> { - self.ty.draw(s) - } -} diff --git a/mindus/src/utils/image/holder.rs b/mindus/src/utils/image/holder.rs deleted file mode 100644 index 45aab38..0000000 --- a/mindus/src/utils/image/holder.rs +++ /dev/null @@ -1,48 +0,0 @@ -use super::Image; - -#[derive(Clone, Debug)] -pub enum Cow { - Ref(&'static [u8]), - Own(Box<[u8]>), -} -impl From<&'static [u8]> for Cow { - fn from(value: &'static [u8]) -> Self { - Self::Ref(value) - } -} -impl From<Box<[u8]>> for Cow { - fn from(value: Box<[u8]>) -> Self { - Self::Own(value) - } -} - -impl Cow { - pub fn own(self) -> Box<[u8]> { - match self { - Self::Own(x) => x, - Self::Ref(x) => x.into(), - } - } -} -impl AsRef<[u8]> for Cow { - fn as_ref(&self) -> &[u8] { - match self { - Cow::Ref(x) => x, - Cow::Own(x) => &x, - } - } -} - -impl AsMut<[u8]> for Cow { - fn as_mut(&mut self) -> &mut [u8] { - match self { - Cow::Ref(x) => { - *self = Self::Own((*x).into()); - self.as_mut() - } - Cow::Own(x) => x, - } - } -} - -pub type ImageHolder<const CHANNELS: usize> = Image<Cow, CHANNELS>; diff --git a/mindus/src/utils/image/mod.rs b/mindus/src/utils/image/mod.rs deleted file mode 100644 index 5953ade..0000000 --- a/mindus/src/utils/image/mod.rs +++ /dev/null @@ -1,72 +0,0 @@ -pub use fimg::*; - -mod holder; -pub use holder::*; - -pub trait ImageUtils { - /// Tint this image with the color - fn tint(&mut self, color: (u8, u8, u8)) -> &mut Self; - /// rotate (squares only) - /// # Safety - /// - /// UB if image is not square - unsafe fn rotate(&mut self, times: u8) -> &mut Self; - unsafe fn rotated(mut self, times: u8) -> Self - where - Self: Sized, - { - unsafe { self.rotate(times) }; - self - } - /// shadow - fn shadow(&mut self) -> &mut Self; -} - -impl<T: AsMut<[u8]> + AsRef<[u8]>> ImageUtils for Image<T, 4> { - unsafe fn rotate(&mut self, times: u8) -> &mut Self { - match times { - 1 => unsafe { self.rot_90() }, - 2 => self.rot_180(), - 3 => unsafe { self.rot_270() }, - _ => {} - } - self - } - - fn tint(&mut self, (r, g, b): (u8, u8, u8)) -> &mut Self { - let [tr, tg, tb] = [r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0]; - for [r, g, b, _] in self.chunked_mut() { - *r = (*r as f32 * tr) as u8; - *g = (*g as f32 * tg) as u8; - *b = (*b as f32 * tb) as u8; - } - self - } - - fn shadow(&mut self) -> &mut Self { - let mut shadow = self.as_ref().boxed(); - for [r, g, b, a] in shadow.chunked_mut() { - if *a < 128 { - *r /= 10; - *g /= 10; - *b /= 10; - } - } - shadow.blur(22); - for ([r, g, b, a], &[from_r, from_g, from_b, from_a]) in - self.chunked_mut().zip(shadow.chunked()) - { - if *a == 0 { - (*r, *g, *b, *a) = (from_r, from_g, from_b, from_a); - } - } - self - } -} - -#[test] -fn x() { - let mut x = Image::<_, 4>::open("/home/os/pod.png"); - x.as_mut().shadow(); - x.save("/home/os/shadowpod.png"); -} diff --git a/mindus/src/utils/mod.rs b/mindus/src/utils/mod.rs deleted file mode 100644 index 7183f0e..0000000 --- a/mindus/src/utils/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod array; -pub mod image; -pub use self::image::{Cow, Image, ImageHolder, ImageUtils, Overlay, OverlayAt}; diff --git a/p2s/.gitignore b/p2s/.gitignore deleted file mode 100644 index b68bac7..0000000 --- a/p2s/.gitignore +++ /dev/null @@ -1 +0,0 @@ -quant.png diff --git a/p2s/Cargo.toml b/p2s/Cargo.toml deleted file mode 100644 index 2411584..0000000 --- a/p2s/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "p2s" -version = "0.1.0" -edition = "2021" - -[dependencies] -clipp = "0.1.0" -comat = "0.1.3" -exoquant = "0.2.0" -fimg = "0.4.23" -mindus = { version = "5.0.9", path = "../mindus", default-features = false } diff --git a/p2s/README.md b/p2s/README.md deleted file mode 100644 index f8f2d1f..0000000 --- a/p2s/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# p2s - -small example showcasing schematic construction. -this takes a png, and turns it into a sorter schematic.
\ No newline at end of file diff --git a/p2s/src/main.rs b/p2s/src/main.rs deleted file mode 100644 index 7f894eb..0000000 --- a/p2s/src/main.rs +++ /dev/null @@ -1,101 +0,0 @@ -use exoquant::{ditherer, Color, Remapper, SimpleColorSpace}; -use fimg::{scale::Nearest, DynImage, Image}; -use mindus::{ - block::{Rotation, SORTER}, - data::dynamic::DynData, - item::Type::*, - Schematic, -}; -use std::process::ExitCode; -macro_rules! fail { - () => { - fail!("<in> (<width>x<height>)") - }; - ($usage:literal) => {{ - eprintln!(concat!("usage: p2s ", comat::comat!($usage))); - return ExitCode::FAILURE; - }}; -} -const ITEMS: [mindus::item::Type; 22] = [ - Copper, - Lead, - Metaglass, - Graphite, - Sand, - Coal, - Titanium, - Thorium, - Scrap, - Silicon, - Plastanium, - PhaseFabric, - SurgeAlloy, - SporePod, - BlastCompound, - Pyratite, - Beryllium, - Tungsten, - Oxide, - Carbide, - FissileMatter, - DormantCyst, -]; - -fn main() -> ExitCode { - let mut args = std::env::args().skip(1); - let Some(input) = args.next() else { - fail!("{bold_red}<input_file>{reset}"); - }; - let mut img = DynImage::open(input).to_rgb(); - let palette = ITEMS - .map(|i| i.color()) - .map(|(r, g, b)| Color::new(r, g, b, 255)); - - if let Some(size) = args.next() { - let Some((w, h)) = size.split_once('x') else { - fail!(".. <w>{bold_red}x{reset}<h>") - }; - let Ok(w) = w.parse() else { - fail!(".. <width: valid number>x<h>") - }; - let Ok(h) = h.parse() else { - fail!(".. <w>x<h: valid number>") - }; - img = img.scale::<Nearest>(w, h); - } - - let quant = Remapper::new(&palette, &SimpleColorSpace::default(), &ditherer::None).remap( - &img.chunked() - .map(|&[r, g, b]| Color::new(r, g, b, 255)) - .collect::<Vec<_>>(), - img.width() as usize, - ); - Image::<Box<[u8]>, 3>::build(img.width(), img.height()) - .buf( - quant - .iter() - .map(|&i| ITEMS[i as usize].color()) - .flat_map(|(r, g, b)| [r, g, b]) - .collect(), - ) - .scale::<Nearest>(img.width() * 4, img.height() * 4) - .save("quant.png"); - let mut s = Schematic::new(img.width() as usize, img.height() as usize); - for x in 0..img.width() as usize { - for y in 0..img.height() as usize { - s.set( - x as usize, - y as usize, - &SORTER, - DynData::Content( - mindus::content::Type::Item, - quant[(img.height() as usize - y - 1) * img.width() as usize + x] as u16, - ), - Rotation::Up, - ) - .unwrap(); - } - } - clipp::copy(s.serialize_base64().unwrap()); - ExitCode::SUCCESS -} diff --git a/mindus/res/team_names.txt b/res/team_names.txt index 37adee8..37adee8 100644 --- a/mindus/res/team_names.txt +++ b/res/team_names.txt diff --git a/src/block/campaign.rs b/src/block/campaign.rs new file mode 100644 index 0000000..1283f3e --- /dev/null +++ b/src/block/campaign.rs @@ -0,0 +1,7 @@ +//! campaign blocks +use crate::block::make_register; +use crate::block::simple::{cost, BasicBlock}; +make_register! { + "launch-pad" -> BasicBlock::new(3, true, cost!(Copper: 350, Lead: 200, Titanium: 150, Silicon: 140)); + "interplanetary-accelerator" -> BasicBlock::new(7, true, cost!(Copper: 16000, Silicon: 11000, Thorium: 13000, Titanium: 12000, SurgeAlloy: 6000, PhaseFabric: 5000)); +} diff --git a/src/block/content.rs b/src/block/content.rs new file mode 100644 index 0000000..d07eb05 --- /dev/null +++ b/src/block/content.rs @@ -0,0 +1,420 @@ +//! everything +use crate::content::content_enum; + +content_enum! { + pub enum Type / Block for u16 | TryFromU16Error + { + "air", + "spawn", + "cliff", + "build1", + "build2", + "build3", + "build4", + "build5", + "build6", + "build7", + "build8", + "build9", + "build10", + "build11", + "build12", + "build13", + "build14", + "build15", + "build16", + "deep-water", + "shallow-water", + "tainted-water", + "deep-tainted-water", + "darksand-tainted-water", + "sand-water", + "darksand-water", + "tar", + "pooled-cryofluid", + "molten-slag", + "space", + "empty", + "stone", + "crater-stone", + "char", + "basalt", + "hotrock", + "magmarock", + "sand-floor", + "darksand", + "dirt", + "mud", + "dacite", + "rhyolite", + "rhyolite-crater", + "rough-rhyolite", + "regolith", + "yellow-stone", + "carbon-stone", + "ferric-stone", + "ferric-craters", + "beryllic-stone", + "crystalline-stone", + "crystal-floor", + "yellow-stone-plates", + "red-stone", + "dense-red-stone", + "red-ice", + "arkycite-floor", + "arkyic-stone", + "rhyolite-vent", + "carbon-vent", + "arkyic-vent", + "yellow-stone-vent", + "red-stone-vent", + "crystalline-vent", + "redmat", + "bluemat", + "grass", + "salt", + "snow", + "ice", + "ice-snow", + "shale", + "moss", + "core-zone", + "spore-moss", + "stone-wall", + "spore-wall", + "dirt-wall", + "dacite-wall", + "ice-wall", + "snow-wall", + "dune-wall", + "regolith-wall", + "yellow-stone-wall", + "rhyolite-wall", + "carbon-wall", + "ferric-stone-wall", + "beryllic-stone-wall", + "arkyic-wall", + "crystalline-stone-wall", + "red-ice-wall", + "red-stone-wall", + "red-diamond-wall", + "sand-wall", + "salt-wall", + "shrubs", + "shale-wall", + "spore-pine", + "snow-pine", + "pine", + "white-tree-dead", + "white-tree", + "spore-cluster", + "redweed", + "pur-bush", + "yellowcoral", + "boulder", + "snow-boulder", + "shale-boulder", + "sand-boulder", + "dacite-boulder", + "basalt-boulder", + "carbon-boulder", + "ferric-boulder", + "beryllic-boulder", + "yellow-stone-boulder", + "arkyic-boulder", + "crystal-cluster", + "vibrant-crystal-cluster", + "crystal-blocks", + "crystal-orbs", + "crystalline-boulder", + "red-ice-boulder", + "rhyolite-boulder", + "red-stone-boulder", + "metal-floor", + "metal-floor-damaged", + "metal-floor-2", + "metal-floor-3", + "metal-floor-4", + "metal-floor-5", + "dark-panel-1", + "dark-panel-2", + "dark-panel-3", + "dark-panel-4", + "dark-panel-5", + "dark-panel-6", + "dark-metal", + "pebbles", + "tendrils", + "ore-copper", + "ore-lead", + "ore-scrap", + "ore-coal", + "ore-titanium", + "ore-thorium", + "ore-beryllium", + "ore-tungsten", + "ore-crystal-thorium", + "ore-wall-thorium", + "ore-wall-beryllium", + "graphitic-wall", + "ore-wall-tungsten", + "graphite-press", + "multi-press", + "silicon-smelter", + "silicon-crucible", + "kiln", + "plastanium-compressor", + "phase-weaver", + "surge-smelter", + "cryofluid-mixer", + "pyratite-mixer", + "blast-mixer", + "melter", + "separator", + "disassembler", + "spore-press", + "pulverizer", + "coal-centrifuge", + "incinerator", + "silicon-arc-furnace", + "electrolyzer", + "atmospheric-concentrator", + "oxidation-chamber", + "electric-heater", + "slag-heater", + "phase-heater", + "heat-redirector", + "heat-router", + "slag-incinerator", + "carbide-crucible", + "slag-centrifuge", + "surge-crucible", + "cyanogen-synthesizer", + "phase-synthesizer", + "heat-reactor", + "copper-wall", + "copper-wall-large", + "titanium-wall", + "titanium-wall-large", + "plastanium-wall", + "plastanium-wall-large", + "thorium-wall", + "thorium-wall-large", + "phase-wall", + "phase-wall-large", + "surge-wall", + "surge-wall-large", + "door", + "door-large", + "scrap-wall", + "scrap-wall-large", + "scrap-wall-huge", + "scrap-wall-gigantic", + "thruster", + "beryllium-wall", + "beryllium-wall-large", + "tungsten-wall", + "tungsten-wall-large", + "blast-door", + "reinforced-surge-wall", + "reinforced-surge-wall-large", + "carbide-wall", + "carbide-wall-large", + "shielded-wall", + "mender", + "mend-projector", + "overdrive-projector", + "overdrive-dome", + "force-projector", + "shock-mine", + "radar", + "build-tower", + "regen-projector", + "shockwave-tower", + "shield-projector", + "large-shield-projector", + "conveyor", + "titanium-conveyor", + "plastanium-conveyor", + "armored-conveyor", + "junction", + "bridge-conveyor", + "phase-conveyor", + "sorter", + "inverted-sorter", + "router", + "distributor", + "overflow-gate", + "underflow-gate", + "mass-driver", + "duct", + "armored-duct", + "duct-router", + "overflow-duct", + "underflow-duct", + "duct-bridge", + "duct-unloader", + "surge-conveyor", + "surge-router", + "unit-cargo-loader", + "unit-cargo-unload-point", + "mechanical-pump", + "rotary-pump", + "impulse-pump", + "conduit", + "pulse-conduit", + "plated-conduit", + "liquid-router", + "liquid-container", + "liquid-tank", + "liquid-junction", + "bridge-conduit", + "phase-conduit", + "reinforced-pump", + "reinforced-conduit", + "reinforced-liquid-junction", + "reinforced-bridge-conduit", + "reinforced-liquid-router", + "reinforced-liquid-container", + "reinforced-liquid-tank", + "power-node", + "power-node-large", + "surge-tower", + "diode", + "battery", + "battery-large", + "combustion-generator", + "thermal-generator", + "steam-generator", + "differential-generator", + "rtg-generator", + "solar-panel", + "solar-panel-large", + "thorium-reactor", + "impact-reactor", + "beam-node", + "beam-tower", + "beam-link", + "turbine-condenser", + "chemical-combustion-chamber", + "pyrolysis-generator", + "flux-reactor", + "neoplasia-reactor", + "mechanical-drill", + "pneumatic-drill", + "laser-drill", + "blast-drill", + "water-extractor", + "cultivator", + "oil-extractor", + "vent-condenser", + "cliff-crusher", + "plasma-bore", + "large-plasma-bore", + "impact-drill", + "eruption-drill", + "core-shard", + "core-foundation", + "core-nucleus", + "core-bastion", + "core-citadel", + "core-acropolis", + "container", + "vault", + "unloader", + "reinforced-container", + "reinforced-vault", + "duo", + "scatter", + "scorch", + "hail", + "wave", + "lancer", + "arc", + "parallax", + "swarmer", + "salvo", + "segment", + "tsunami", + "fuse", + "ripple", + "cyclone", + "foreshadow", + "spectre", + "meltdown", + "breach", + "diffuse", + "sublimate", + "titan", + "disperse", + "afflict", + "lustre", + "scathe", + "smite", + "malign", + "ground-factory", + "air-factory", + "naval-factory", + "additive-reconstructor", + "multiplicative-reconstructor", + "exponential-reconstructor", + "tetrative-reconstructor", + "repair-point", + "repair-turret", + "tank-fabricator", + "ship-fabricator", + "mech-fabricator", + "tank-refabricator", + "mech-refabricator", + "ship-refabricator", + "prime-refabricator", + "tank-assembler", + "ship-assembler", + "mech-assembler", + "basic-assembler-module", + "unit-repair-tower", + "payload-conveyor", + "payload-router", + "reinforced-payload-conveyor", + "reinforced-payload-router", + "payload-mass-driver", + "large-payload-mass-driver", + "small-deconstructor", + "deconstructor", + "constructor", + "large-constructor", + "payload-loader", + "payload-unloader", + "power-source", + "power-void", + "item-source", + "item-void", + "liquid-source", + "liquid-void", + "payload-source", + "payload-void", + "heat-source", + "illuminator", + "legacy-mech-pad", + "legacy-unit-factory", + "legacy-unit-factory-air", + "legacy-unit-factory-ground", + "command-center", + "launch-pad", + "interplanetary-accelerator", + "message", + "switch", + "micro-processor", + "logic-processor", + "hyper-processor", + "memory-cell", + "memory-bank", + "logic-display", + "large-logic-display", + "canvas", + "reinforced-message", + "world-processor", + "world-cell", + "world-message", + } +} diff --git a/src/block/defense.rs b/src/block/defense.rs new file mode 100644 index 0000000..b1548bc --- /dev/null +++ b/src/block/defense.rs @@ -0,0 +1,37 @@ +//! defense +use crate::block::simple::{cost, make_simple, BasicBlock}; +use crate::block::*; +make_simple!(HeatedBlock => |_, _, _, buff: &mut DataRead| read_heated(buff)); +make_simple!(RadarBlock => |_, _, _, buff: &mut DataRead| buff.skip(4)); +make_simple!(ShieldBlock => |_, _, _, buff: &mut DataRead| read_shield(buff)); +make_register! { + "mender" -> HeatedBlock::new(1, true, cost!(Copper: 25, Lead: 30)); + "mend-projector" -> HeatedBlock::new(2, true, cost!(Copper: 50, Lead: 100, Titanium: 25, Silicon: 40)); + "overdrive-projector" -> HeatedBlock::new(2, true, cost!(Lead: 100, Titanium: 75, Silicon: 75, Plastanium: 30)); + "overdrive-dome" -> HeatedBlock::new(3, true, cost!(Lead: 200, Titanium: 130, Silicon: 130, Plastanium: 80, SurgeAlloy: 120)); + "force-projector" -> BasicBlock::new(3, true, cost!(Lead: 100, Titanium: 75, Silicon: 125)); + "regen-projector" -> BasicBlock::new(3, true, cost!(Silicon: 80, Tungsten: 60, Oxide: 40, Beryllium: 80)); + "shock-mine" -> BasicBlock::new(1, true, cost!(Lead: 25, Silicon: 12)); + "radar" -> RadarBlock::new(1, true, cost!(Silicon: 60, Graphite: 50, Beryllium: 10)); + "build-tower" -> BasicBlock::new(3, true, cost!(Silicon: 150, Oxide: 40, Thorium: 60)); + "shockwave-tower" -> BasicBlock::new(3, true, cost!(SurgeAlloy: 50, Silicon: 150, Oxide: 30, Tungsten: 100)); + // barrier projector + // editor only + "barrier-projector" -> BasicBlock::new(3, true, &[]); + "shield-projector" -> ShieldBlock::new(3, true, &[]); + "large-shield-projector" -> ShieldBlock::new(4, true, &[]); +} + +/// format: +/// - heat: [`f32`] +/// - phase heat: [`f32`] +fn read_heated(buff: &mut DataRead) -> Result<(), DataReadError> { + buff.skip(8) +} + +/// format: +/// - smoothing: [`f32`] +/// - broken: [`bool`] +fn read_shield(buff: &mut DataRead) -> Result<(), DataReadError> { + buff.skip(5) +} diff --git a/mindus/src/block/distribution.rs b/src/block/distribution.rs index 2f19cd8..e185d3a 100644 --- a/mindus/src/block/distribution.rs +++ b/src/block/distribution.rs @@ -9,7 +9,7 @@ use crate::item; make_simple!( ConveyorBlock, |_, name, _, ctx: Option<&RenderingContext>, rot, s| tile(ctx.unwrap(), name, rot, s), - |_, buff: &mut DataRead| { + |_, _, _, buff: &mut DataRead| { // format: // - amount: `i32` // - iterate amount: @@ -28,21 +28,23 @@ make_simple!( make_simple!( DuctBlock, |_, name, _, ctx: Option<&RenderingContext>, rot, s| tile(ctx.unwrap(), name, rot, s), - |_, buff: &mut DataRead| { + |_, _, _, buff: &mut DataRead| { // format: // - rec_dir: `i8` buff.skip(1) } ); -make_simple!(JunctionBlock => |_, buff| { read_directional_item_buffer(buff) }); +make_simple!(JunctionBlock => |_, _, _, buff| { read_directional_item_buffer(buff) }); make_simple!(SimpleDuctBlock, |_, name, _, _, rot: Rotation, s| { let mut base = load!("duct-base", s); let mut top = load!(from name which is ["overflow-duct" "underflow-duct"], s); - // SAFETY: any load!() is square - unsafe { top.rotate(rot.rotated(false).count()) }; - // SAFETY: same size - unsafe { base.overlay(&top) }; + unsafe { + // SAFETY: any load() is square + top.rotate(rot.rotated(false).count()); + // SAFETY: same size + base.overlay(&top); + } base }); @@ -78,7 +80,7 @@ fn draw_stack( 1 => load!(concat 1 => name which is ["surge-conveyor" | "plastanium-conveyor"], s), _ => load!("plastanium-conveyor-2", s), }; - let empty = ctx.cross[rot.count() as usize].map_or(true, |(v, _)| v.name.get_name() != name); + let empty = ctx.cross[rot.count() as usize].map_or(true, |(v, _)| v.name != name); // mindustry says fuck this and just draws the arrow convs in schems but im better than that if rot.mirrored(true, true).mask() == mask && empty && name != "surge-conveyor" { // end @@ -116,21 +118,47 @@ make_simple!( // format: // - link: `i32` // - cooldown: `f32` - |_, buff: &mut DataRead| buff.skip(8) -); -make_simple!( - SurgeRouter, - |_, _, _, _, r: Rotation, s| { - let mut base = load!("surge-router", s); - let mut top = load!("top", s); - unsafe { top.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&top) }; - base - }, - |_, buff: &mut DataRead| buff.skip(2) + |_, _, _, buff: &mut DataRead| buff.skip(8) ); +make_simple!(SurgeRouter, |_, _, _, _, r: Rotation, s| { + let mut base = load!("surge-router", s); + unsafe { base.overlay(load!("top", s).rotate(r.rotated(false).count())) }; + base +}); // format: id: [`i32`] -make_simple!(UnitCargoLoader => |_, buff: &mut DataRead| buff.skip(4)); +make_simple!(UnitCargoLoader => |_, _, _, buff: &mut DataRead| buff.skip(4)); + +make_register! { + "conveyor" => ConveyorBlock::new(1, false, cost!(Copper: 1)); + "titanium-conveyor" => ConveyorBlock::new(1, false, cost!(Copper: 1, Lead: 1, Titanium: 1)); + "plastanium-conveyor" => StackConveyor::new(1, false, cost!(Graphite: 1, Silicon: 1, Plastanium: 1)); + "armored-conveyor" => ConveyorBlock::new(1, false, cost!(Metaglass: 1, Thorium: 1, Plastanium: 1)); + "junction" -> JunctionBlock::new(1, true, cost!(Copper: 2)); + "bridge-conveyor" -> BridgeBlock::new(1, false, cost!(Copper: 6, Lead: 6), 4, true); + "phase-conveyor" -> BridgeBlock::new(1, false, cost!(Lead: 10, Graphite: 10, Silicon: 7, PhaseFabric: 5), 12, true); + "sorter" => ItemBlock::new(1, true, cost!(Copper: 2, Lead: 2)); + "inverted-sorter" => ItemBlock::new(1, true, cost!(Copper: 2, Lead: 2)); + "unloader" -> ItemBlock::new(1, true, cost!(Titanium: 25, Silicon: 30)); + "router" -> BasicBlock::new(1, true, cost!(Copper: 3)); + "distributor" -> BasicBlock::new(2, true, cost!(Copper: 4, Lead: 4)); + "overflow-gate" -> BasicBlock::new(1, true, cost!(Copper: 4, Lead: 2)); + "underflow-gate" -> BasicBlock::new(1, true, cost!(Copper: 4, Lead: 2)); + "mass-driver" => BridgeBlock::new(3, true, cost!(Lead: 125, Titanium: 125, Thorium: 50, Silicon: 75), 55, false); + "duct" => DuctBlock::new(1, false, cost!(Beryllium: 1)); + "armored-duct" => DuctBlock::new(1, false, cost!(Beryllium: 2, Tungsten: 1)); + "duct-router" => ItemBlock::new(1, true, cost!(Beryllium: 10)); + "overflow-duct" => SimpleDuctBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8)); + "underflow-duct" => SimpleDuctBlock::new(1, true, cost!(Graphite: 8, Beryllium: 8)); + "duct-bridge" => BridgeBlock::new(1, true, cost!(Beryllium: 20), 3, true); + "duct-unloader" => ItemBlock::new(1, true, cost!(Graphite: 20, Silicon: 20, Tungsten: 10)); + "surge-conveyor" => StackConveyor::new(1, false, cost!(SurgeAlloy: 1, Tungsten: 1)); + "surge-router" => SurgeRouter::new(1, false, cost!(SurgeAlloy: 5, Tungsten: 1)); // not symmetric + "unit-cargo-loader" -> BasicBlock::new(3, true, cost!(Silicon: 80, SurgeAlloy: 50, Oxide: 20)); + "unit-cargo-unload-point" => ItemBlock::new(2, true, cost!(Silicon: 60, Tungsten: 60)); + // sandbox only + "item-source" -> ItemBlock::new(1, true, &[]); + "item-void" -> BasicBlock::new(1, true, &[]); +} pub struct ItemBlock { size: u8, @@ -197,31 +225,26 @@ impl BlockLogic for ItemBlock { s: Scale, ) -> ImageHolder<4> { let mut p = load!(from name which is ["sorter" | "inverted-sorter" | "duct-router" | "duct-unloader" | "unit-cargo-unload-point" | "unloader" | "item-source"], s); - if let Some(state) = state - && let Some(item) = Self::get_state(state) - { + if let Some(state) = state && let Some(item) = Self::get_state(state) { let mut top = load!(s -> match name { "unit-cargo-unload-point" => "unit-cargo-unload-point-top", "unloader" => "unloader-center", _ => "center", }); unsafe { p.overlay(top.tint(item.color())) }; - if name == "duct-unloader" { - unsafe { - let mut x = load!("duct-unloader-arrows", s); - p.overlay(&*x.rotate(rot.rotated(false).count())); - } - } return p; } - if matches!(name, "duct-router" | "duct-unloader") { - let mut top = load!(s -> match name { - "duct-router" => "top", - "duct-unloader" => "duct-unloader-top", - }); - unsafe { top.rotate(rot.rotated(false).count()) }; - unsafe { p.overlay(&top) }; - } + match name { + "duct-router" => { + unsafe { p.overlay(&load!("top", s).rotate(rot.rotated(false).count())) }; + } + "duct-unloader" => { + unsafe { + p.overlay(&load!("duct-unloader-top", s).rotate(rot.rotated(false).count())) + }; + } + _ => {} + }; p } @@ -235,7 +258,13 @@ impl BlockLogic for ItemBlock { /// (unit-cargo-unload-point) /// - item: `u16` as item /// - stale: `bool` - fn read(&self, b: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { + fn read( + &self, + b: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { match b.block.name() { "duct-unloader" => { let n = buff.read_i16()?; @@ -381,7 +410,7 @@ impl BlockLogic for BridgeBlock { fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { match Self::get_state(state) { - None => Ok(DynData::Point2(-1, -1)), + None => Ok(DynData::Empty), Some((dx, dy)) => Ok(DynData::Point2(*dx, *dy)), } } @@ -407,6 +436,8 @@ impl BlockLogic for BridgeBlock { fn read( &self, t: &mut Build, + r: &super::BlockRegistry, + e: &crate::data::map::EntityMapping, buff: &mut crate::data::DataRead, ) -> Result<(), crate::data::ReadError> { match t.block.name() { @@ -414,7 +445,7 @@ impl BlockLogic for BridgeBlock { "phase-conveyor" | "phase-conduit" | "bridge-conduit" => read_item_bridge(buff)?, "mass-driver" => buff.skip(9)?, "payload-mass-driver" | "large-payload-mass-driver" => { - crate::block::payload::read_payload_block(buff)?; + crate::block::payload::read_payload_block(r, e, buff)?; buff.skip(19)?; } // no state? @@ -447,8 +478,10 @@ impl BlockLogic for BridgeBlock { _ => "reinforced-bridge-conduit-dir", } ); - unsafe { arrow.rotate(r.rotated(false).count()) }; - unsafe { base.overlay(&arrow) }; + unsafe { + arrow.rotate(r.rotated(false).count()); + base.overlay(&arrow) + }; base } // "bridge-conveyor" | "phase-conveyor" | "bridge-conduit" | "phase-conduit" | "payload-mass-driver" | "large-payload-mass-driver" diff --git a/src/block/drills.rs b/src/block/drills.rs new file mode 100644 index 0000000..4558666 --- /dev/null +++ b/src/block/drills.rs @@ -0,0 +1,44 @@ +//! extraction of raw resources (mine part) +use super::production::ProductionBlock; +use crate::block::simple::{cost, make_simple, BasicBlock}; +use crate::block::*; + +make_simple!( + DrillBlock, + |_, name, _, _, rot: Rotation, s| { + let mut base = + load!(from name which is ["large-plasma-bore" | "plasma-bore" | "cliff-crusher"], s); + unsafe { + base.overlay(load!(concat "top" => name which is ["large-plasma-bore" | "plasma-bore" | "cliff-crusher"], s).rotate(rot.rotated(false).count()) ) + }; + base + }, + |_, _, _, buff: &mut DataRead| read_drill(buff) +); +make_simple!(WallDrillBlock, |_, _, _, _, rot: Rotation, scl| { + let mut base = load!("cliff-crusher", scl); + unsafe { base.overlay(load!("cliff-crusher-top", scl).rotate(rot.rotated(false).count())) }; + base +}); + +make_register! { + "mechanical-drill" -> DrillBlock::new(2, true, cost!(Copper: 12)); + "pneumatic-drill" -> DrillBlock::new(2, true, cost!(Copper: 18, Graphite: 10)); + "laser-drill" -> DrillBlock::new(3, true, cost!(Copper: 35, Graphite: 30, Titanium: 20, Silicon: 30)); + "blast-drill" -> DrillBlock::new(4, true, cost!(Copper: 65, Titanium: 50, Thorium: 75, Silicon: 60)); + "water-extractor" -> BasicBlock::new(2, true, cost!(Copper: 30, Lead: 30, Metaglass: 30, Graphite: 30)); + "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)); + "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)); + "eruption-drill" -> DrillBlock::new(5, true, cost!(Silicon: 200, Oxide: 20, Tungsten: 200, Thorium: 120)); +} + +/// format: +/// - progress: [`f32`] +/// - warmup: [`f32`] +fn read_drill(buff: &mut DataRead) -> Result<(), DataReadError> { + buff.skip(8) +} diff --git a/src/block/environment.rs b/src/block/environment.rs new file mode 100644 index 0000000..3fff74f --- /dev/null +++ b/src/block/environment.rs @@ -0,0 +1,192 @@ +//! grass +use crate::block::make_register; +use crate::block::simple::BasicBlock; + +macro_rules! register_env { + ($($field:literal: $size:literal;)+) => { + make_register!( + $($field -> BasicBlock::new($size, true, &[]);)* + ); + }; +} + +register_env! { + "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": 1; + "arkyic-wall-large": 2; + "arkyic-wall": 1; + "beryllic-stone-wall-large": 2; + "beryllic-stone-wall": 1; + "beryllic-stone": 1; + "bluemat": 1; + "carbon-vent": 1; + "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": 1; + "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": 1; + "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": 1; + "yellow-stone-wall-large": 2; + "yellow-stone-wall": 1; + // props + "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; + "pur-bush": 1; + "tendrils": 1; + // these are tall but uh (TODO layering) + "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; + "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; +} diff --git a/src/block/liquid.rs b/src/block/liquid.rs new file mode 100644 index 0000000..d20fb47 --- /dev/null +++ b/src/block/liquid.rs @@ -0,0 +1,158 @@ +//! liquid related things +use thiserror::Error; + +use crate::block::distribution::BridgeBlock; +use crate::block::simple::*; +use crate::block::*; +use crate::content; +use crate::data::dynamic::DynType; +use crate::data::renderer::load; +use crate::fluid; +use crate::utils::ImageUtils; + +make_simple!(ConduitBlock, |_, + name, + _, + ctx: Option<&RenderingContext>, + rot, + s| { + let ctx = ctx.unwrap(); + + let mask = mask(ctx, rot, name); + // TODO caps. stopped trying bcz too complex + mask2tile(mask, rot, name, s) +}); + +make_register! { + "reinforced-pump" -> BasicBlock::new(2, true, cost!(Beryllium: 40, Tungsten: 30, Silicon: 20)); + "mechanical-pump" -> BasicBlock::new(1, true, cost!(Copper: 15, Metaglass: 10)); + "rotary-pump" -> BasicBlock::new(2, true, cost!(Copper: 70, Metaglass: 50, Titanium: 35, Silicon: 20)); + "impulse-pump" -> BasicBlock::new(3, true, cost!(Copper: 80, Metaglass: 90, Titanium: 40, Thorium: 35, Silicon: 30)); + "conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1)); + "pulse-conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1, Titanium: 2)); + "plated-conduit" => ConduitBlock::new(1, false, cost!(Metaglass: 1, Thorium: 2, Plastanium: 1)); + "liquid-router" -> BasicBlock::new(1, true, cost!(Metaglass: 2, Graphite: 4)); + "liquid-container" -> BasicBlock::new(2, true, cost!(Metaglass: 15, Titanium: 10)); + "liquid-tank" -> BasicBlock::new(3, true, cost!(Metaglass: 40, Titanium: 30)); + "liquid-junction" -> BasicBlock::new(1, true, cost!(Metaglass: 8, Graphite: 4)); + "bridge-conduit" -> BridgeBlock::new(1, true, cost!(Metaglass: 8, Graphite: 4), 4, true); + "phase-conduit" -> BridgeBlock::new(1, true, cost!(Metaglass: 20, Titanium: 10, Silicon: 7, PhaseFabric: 5), 12, true); + "reinforced-conduit" => ConduitBlock::new(1, false, cost!(Beryllium: 2)); + "reinforced-liquid-junction" -> BasicBlock::new(1, true, cost!(Graphite: 4, Beryllium: 8)); + "reinforced-bridge-conduit" => BridgeBlock::new(1, true, cost!(Graphite: 8, Beryllium: 20), 4, true); + "reinforced-liquid-router" -> BasicBlock::new(1, true, cost!(Graphite: 8, Beryllium: 4)); + "reinforced-liquid-container" -> BasicBlock::new(2, true, cost!(Tungsten: 10, Beryllium: 16)); + "reinforced-liquid-tank" -> BasicBlock::new(3, true, cost!(Tungsten: 40, Beryllium: 50)); + // sandbox only + "liquid-source" => FluidBlock::new(1, true, &[]); + "liquid-void" -> BasicBlock::new(1, true, &[]); +} + +pub struct FluidBlock { + size: u8, + symmetric: bool, + build_cost: BuildCost, +} + +impl FluidBlock { + #[must_use] + pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { + assert!(size != 0, "invalid size"); + Self { + size, + symmetric, + build_cost, + } + } + + state_impl!(pub Option<fluid::Type>); +} + +impl BlockLogic for FluidBlock { + impl_block!(); + + fn data_from_i32(&self, config: i32, _: GridPos) -> Result<DynData, DataConvertError> { + if config < 0 || config > i32::from(u16::MAX) { + return Err(DataConvertError::Custom(Box::new(FluidConvertError( + config, + )))); + } + Ok(DynData::Content(content::Type::Fluid, config as u16)) + } + + 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( + FluidDeserializeError::forward(fluid::Type::try_from(id))?, + )))), + DynData::Content(have, ..) => Err(DeserializeError::Custom(Box::new( + FluidDeserializeError::ContentType(have), + ))), + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::Content, + }), + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + Ok(Self::get_state(state) + .as_ref() + .map_or(DynData::Empty, |&fluid| { + DynData::Content(content::Type::Fluid, fluid.into()) + })) + } + + fn draw( + &self, + _: &str, + state: Option<&State>, + _: Option<&RenderingContext>, + _: Rotation, + s: Scale, + ) -> ImageHolder<4> { + let mut p = load!("liquid-source", s); + if let Some(state) = state && let Some(liq) = Self::get_state(state) { + let mut top = load!("center", s); + unsafe { p.overlay(top.tint(liq.color())) }; + return p; + } + p + } + + /// format: + /// - fluid: [`u16`] as [`Fluid`](fluid::Type) + fn read( + &self, + b: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { + let f = buff.read_u16()?; + b.state = Some(Self::create_state(fluid::Type::try_from(f).ok())); + Ok(()) + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] +#[error("invalid config ({0}) for fluid")] +pub struct FluidConvertError(pub i32); + +#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] +pub enum FluidDeserializeError { + #[error("expected Fluid but got {0:?}")] + ContentType(content::Type), + #[error("fluid not found")] + NotFound(#[from] fluid::TryFromU16Error), +} + +impl FluidDeserializeError { + pub fn forward<T, E: Into<Self>>(result: Result<T, E>) -> Result<T, DeserializeError> { + match result { + Ok(v) => Ok(v), + Err(e) => Err(DeserializeError::Custom(Box::new(e.into()))), + } + } +} diff --git a/mindus/src/block/logic.rs b/src/block/logic.rs index b4c374e..a099765 100644 --- a/mindus/src/block/logic.rs +++ b/src/block/logic.rs @@ -3,14 +3,14 @@ use std::borrow::Cow; use std::string::FromUtf8Error; use crate::block::simple::*; -use crate::data::dynamic::DynType; -use crate::{Serializable, block::*}; +use crate::data::dynamic::{DynSerializer, DynType}; +use crate::{block::*, Serializer}; use crate::data::{self, CompressError, DataRead, DataWrite}; make_simple!( MemoryBlock => - |_, buff: &mut DataRead| { + |_, _, _, buff: &mut DataRead| { // format: // - iterate [`u32`] // - memory: [`f64`] @@ -19,6 +19,24 @@ make_simple!( } ); +make_register! { + "reinforced-message" -> MessageLogic::new(1, true, cost!(Graphite: 10, Beryllium: 5)); + "message" -> MessageLogic::new(1, true, cost!(Copper: 5, Graphite: 5)); + "switch" => SwitchLogic::new(1, true, cost!(Copper: 5, Graphite: 5)); + "micro-processor" -> ProcessorLogic::new(1, true, cost!(Copper: 90, Lead: 50, Silicon: 50)); + "logic-processor" -> ProcessorLogic::new(2, true, cost!(Lead: 320, Graphite: 60, Thorium: 50, Silicon: 80)); + "hyper-processor" -> ProcessorLogic::new(3, true, cost!(Lead: 450, Thorium: 75, Silicon: 150, SurgeAlloy: 50)); + "memory-cell" -> MemoryBlock::new(1, true, cost!(Copper: 30, Graphite: 30, Silicon: 30)); + "memory-bank" -> MemoryBlock::new(2, true, cost!(Copper: 30, Graphite: 80, Silicon: 80, PhaseFabric: 30)); + "logic-display" -> BasicBlock::new(3, true, cost!(Lead: 100, Metaglass: 50, Silicon: 50)); + "large-logic-display" -> BasicBlock::new(6, true, cost!(Lead: 200, Metaglass: 100, Silicon: 150, PhaseFabric: 75)); + "canvas" => CanvasBlock::new(2, true, cost!(Silicon: 30, Beryllium: 10), 12); + // editor only + "world-processor" -> BasicBlock::new(1, true, &[]); + "world-message" -> MessageLogic::new(1, true, &[]); + "world-cell" -> MemoryBlock::new(1, true, &[]); +} + pub struct CanvasBlock { size: u8, symmetric: bool, @@ -56,11 +74,11 @@ impl CanvasBlock { } } - state_impl!(pub Image<Box<[u8]>, 1>); + state_impl!(pub Image<Vec<u8>, 1>); } -fn deser_canvas_image(b: &[u8], size: usize) -> Image<Box<[u8]>, 1> { - let mut p = Image::alloc(size as u32, size as u32).boxed(); +fn deser_canvas_image(b: &[u8], size: usize) -> Image<Vec<u8>, 1> { + let mut p = Image::alloc(size as u32, size as u32); for i in 0..(size * size) { let offset = i * 3; let mut n = 0; @@ -68,7 +86,7 @@ fn deser_canvas_image(b: &[u8], size: usize) -> Image<Box<[u8]>, 1> { let word = (i + offset) >> 3; n |= (((b[word] & (1 << ((i + offset) & 7))) != 0) as u8) << i; } - unsafe { p.set_pixel(i as u32 % size as u32, i as u32 / size as u32, &[n]) }; + unsafe { p.set_pixel(i as u32 % size as u32, i as u32 / size as u32, [n]) }; } p } @@ -134,32 +152,38 @@ impl BlockLogic for CanvasBlock { Scale::Eigth => 1, }; let mut img = Image::alloc(p.width(), p.height()); - for ([r, g, b, a], &y) in img.chunked_mut().zip(p.buffer().iter()) { + for ([r, g, b, a], &y) in img.chunked_mut().zip(p.buffer.iter()) { (*r, *g, *b) = PALETTE[y as usize]; *a = 255; } - let img = img.scale::<fimg::scale::Nearest>( - (s * self.size as u32) - offset * 2, - (s * self.size as u32) - offset * 2, - ); + let img = img.as_mut().scale((s * self.size as u32) - offset * 2); let mut borders = load!("canvas", s); - unsafe { borders.overlay_at(&img, offset, offset) }; + unsafe { + borders + .borrow_mut() + .overlay_at(&img.as_ref(), offset, offset) + }; return borders; } - // FIXME: make const - let mut def = Image::alloc(s * self.size as u32, s * self.size as u32).boxed(); - for [r, g, b, a] in def.chunked_mut() { + let mut def = Image::alloc(s * self.size as u32, s * self.size as u32); + for [r, g, b, a] in def.buffer.array_chunks_mut::<4>() { (*r, *g, *b) = PALETTE[0]; *a = 255; } - unsafe { def.mapped(crate::utils::Cow::Own) } + ImageHolder::from(def) } /// format: /// - len: [`i32`] /// - read(len) -> [`deser_canvas_image`] - fn read(&self, build: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { + fn read( + &self, + build: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { let n = buff.read_i32()? as usize; let mut b = vec![0; n]; buff.read_bytes(&mut b)?; @@ -228,7 +252,13 @@ impl BlockLogic for MessageLogic { Ok(DynData::String(Some(Self::get_state(state).clone()))) } - fn read(&self, b: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { + fn read( + &self, + b: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { b.state = Some(Self::create_state(buff.read_utf()?.to_string())); Ok(()) } @@ -276,23 +306,29 @@ impl BlockLogic for SwitchLogic { Ok(DynData::Boolean(*Self::get_state(state))) } - fn read(&self, build: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { + fn read( + &self, + build: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { build.state = Some(Self::create_state(buff.read_bool()?)); Ok(()) } fn draw( &self, - name: &str, + _: &str, state: Option<&State>, _: Option<&RenderingContext>, _: Rotation, s: Scale, ) -> ImageHolder<4> { - let mut base = load!(from name which is ["switch" | "world-switch"], s); + let mut base = load!("switch", s); if let Some(state) = state { if *Self::get_state(state) { - let on = load!(concat "on" => name which is ["switch" | "world-switch"], s); + let on = load!("switch-on", s); unsafe { base.overlay(&on) }; return base; } @@ -335,7 +371,8 @@ fn read_decompressed(buff: &mut DataRead) -> Result<ProcessorState, ProcessorDes buff.read_bytes(&mut code)?; let code = String::from_utf8(code)?; let link_cnt = buff.read_u32()? as usize; - let mut links = Vec::with_capacity(link_cnt); + let mut links = vec![]; + links.reserve(link_cnt); for _ in 0..link_cnt { let name = buff.read_utf()?; let x = buff.read_i16()?; @@ -375,7 +412,13 @@ impl BlockLogic for ProcessorLogic { } } - fn read(&self, b: &mut Build, buff: &mut DataRead) -> Result<(), DataReadError> { + fn read( + &self, + b: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { let n = buff.read_u32()? as usize; let mut v = vec![0; n]; buff.read_bytes(&mut v)?; @@ -385,7 +428,7 @@ impl BlockLogic for ProcessorLogic { )); for _ in 0..buff.read_u32()? { let _ = buff.read_utf()?; - let _ = DynData::deserialize(buff).unwrap(); + let _ = DynSerializer.deserialize(buff).unwrap(); } let memory = buff.read_u32()? as usize; buff.skip(memory * 8)?; @@ -469,7 +512,7 @@ impl ProcessorSerializeError { } } -#[derive(Clone, Debug, Eq, PartialEq, Default, Hash)] +#[derive(Clone, Debug, Eq, PartialEq, Default)] pub struct ProcessorLink { name: String, x: i16, @@ -502,7 +545,7 @@ impl ProcessorLink { } } -#[derive(Clone, Debug, Eq, PartialEq, Default, Hash)] +#[derive(Clone, Debug, Eq, PartialEq, Default)] pub struct ProcessorState { code: String, links: Vec<ProcessorLink>, @@ -586,28 +629,3 @@ pub enum CreateError { #[error("link {name} already points to ({x}, {y})")] DuplicatePos { name: String, x: i16, y: i16 }, } -#[rustfmt::skip] -static BITMASKS: [[Image<&[u8], 4>;3]; 256] = include!("x.rs"); -make_simple!(TileableDisplay, |_, - _, - _, - ctx: Option<&RenderingContext>, - _, - s| { - let c = ctx.unwrap(); - let [f, d, h, b] = c.corners; - let [c, a, g, e] = c.cross; - let swizzled = [a, b, c, d, e, f, g, h]; - use std::simd::prelude::*; - let mut b = load!("tile-logic-display", s); - unsafe { - b.overlay( - &BITMASKS[u8x8::from_array( - swizzled.map(|x| x.is_some_and(|x| x.0.name() == "tile-logic-display") as u8), - ) - .simd_eq(u8x8::splat(1)) - .to_bitmask() as usize][s as usize], - ) - }; - b -}); diff --git a/src/block/mod.rs b/src/block/mod.rs new file mode 100644 index 0000000..15b6d97 --- /dev/null +++ b/src/block/mod.rs @@ -0,0 +1,642 @@ +//! deal with blocks. +//! +//! categorized as mindustry categorizes them in its assets folder, for easy drawing. +//! +//! with the exception of sandbox, that is. +use bobbin_bits::U4::{self, B0000, B0001, B0010, B0100, B1000}; +use std::error::Error; +use std::fmt; + +use crate::data::dynamic::{DynData, DynType}; +use crate::data::map::{Build, EntityMapping}; +use crate::data::{self, renderer::*, CompressError}; +use crate::data::{DataRead, GridPos, ReadError as DataReadError}; +use crate::item::storage::ItemStorage; +use crate::registry::RegistryEntry; + +macro_rules! mods { + ($($mod:ident)*) => { + $(pub mod $mod;)* + + pub mod all { + $(pub use crate::block::$mod::*;)* + pub use super::simple::BasicBlock; + } + } +} + +mods! { + campaign content defense distribution drills environment liquid logic payload power production storage turrets walls units +} + +mod simple; + +macro_rules! disp { + ($($k:ident,)+) => { + use all::{$($k,)+}; + #[enum_dispatch::enum_dispatch] + pub(crate) enum BlockLogicEnum { + $($k,)+ + } + #[const_trait] + pub trait ConstFrom<T>: Sized { + fn fro(value: T) -> Self; + } + $( + impl const ConstFrom<$k> for BlockLogicEnum { + fn fro(v: $k) -> Self { + BlockLogicEnum::$k(v) + } + } + )+ + + /*impl std::fmt::Debug for BlockLogicEnum { + fn fmt(&self, w: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { + match self { + $(BlockLogicEnum::$k { .. } => write!(w, stringify!($k)),)+ + } + } + }*/ + } +} + +disp! { + BasicBlock, + WallBlock, + DuctBlock, + BridgeBlock, + ItemBlock, + ProductionBlock, + SeparatorBlock, + StackConveyor, + HeatCrafter, + ConnectorBlock, + ItemTurret, + ConveyorBlock, + WallDrillBlock, + DrillBlock, + NuclearGeneratorBlock, + GeneratorBlock, + ConduitBlock, + HeatedBlock, + RadarBlock, + ShieldBlock, + PointDefenseTurret, + JunctionBlock, + Turret, + MemoryBlock, + MessageLogic, + ConstructorBlock, + AssemblerBlock, + UnitFactory, + SimpleDuctBlock, + SurgeRouter, + SimplePayloadBlock, + PayloadConveyor, + ImpactReactorBlock, + Neoplasia, + DiodeBlock, + HeatConduit, + ContinousTurret, + TractorBeamTurret, + AssemblerModule, + RepairTurret, + FluidBlock, + CanvasBlock, + SwitchLogic, + ProcessorLogic, + PayloadBlock, + LampBlock, + DoorBlock, +} + +pub trait Cast { + fn downcast_ref(state: &State) -> Option<&Self>; + fn downcast_mut(state: &mut State) -> Option<&mut Self>; +} + +macro_rules! stater { + ($($k: ident($v: ty),)+) => { + #[derive(Debug, Clone)] + pub enum State { + $($k($v),)+ + } + + $( + impl From<$v> for State { + fn from(v: $v) -> State { State::$k(v) } + } + + impl Cast for $v { + fn downcast_ref(state: &State) -> Option<&Self> { + match state { + State::$k(v) => Some(v), + _ => None, + } + } + fn downcast_mut(state: &mut State) -> Option<&mut Self> { + match state { + State::$k(v) => Some(v), + _ => None, + } + } + } + )+ + } +} + +stater! { + // TODO deoptionize + String(String), + Item(Option<crate::item::Type>), + Fluid(Option<crate::fluid::Type>), + Image(Image<Vec<u8>, 1>), + Point(Option<(i32, i32)>), + Bool(bool), + Processor(logic::ProcessorState), + Payload(payload::Payload), + Power(Vec<(i16, i16)>), + Color(power::Rgba), + Command(Option<crate::data::command::UnitCommand>), + Unit(Option<crate::unit::Type>), +} + +impl State { + pub fn downcast_ref<T: Cast>(&self) -> Option<&T> { + T::downcast_ref(self) + } + + pub fn downcast_mut<T: Cast>(&mut self) -> Option<&mut T> { + T::downcast_mut(self) + } + + pub fn new<T: Into<Self>>(from: T) -> Self { + from.into() + } +} + +#[enum_dispatch::enum_dispatch(BlockLogicEnum)] +pub trait BlockLogic { + /// mindustry blocks are the same width and height + fn get_size(&self) -> u8; + + fn is_symmetric(&self) -> bool; + + fn create_build_cost(&self) -> Option<ItemStorage>; + + fn data_from_i32(&self, config: i32, pos: GridPos) -> Result<DynData, DataConvertError>; + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError>; + + #[allow(unused_variables)] + fn mirror_state(&self, state: &mut State, horizontally: bool, vertically: bool) {} + + #[allow(unused_variables)] + fn rotate_state(&self, state: &mut State, clockwise: bool) {} + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError>; + + #[allow(unused_variables)] + fn draw( + &self, + name: &str, + state: Option<&State>, + context: Option<&RenderingContext>, + rot: Rotation, + scale: Scale, + ) -> ImageHolder<4> { + unimplemented!("{name}") + } + + #[allow(unused_variables)] + fn read( + &self, + build: &mut Build, + reg: &BlockRegistry, + mapping: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { + Ok(()) + } +} + +// i wish i could derive +macro_rules! impl_block { + () => { + fn get_size(&self) -> u8 { + self.size + } + + fn is_symmetric(&self) -> bool { + self.symmetric + } + + fn create_build_cost(&self) -> Option<$crate::item::storage::ItemStorage> { + if self.build_cost.is_empty() { + None + } else { + let mut storage = crate::item::storage::Storage::new(); + for (ty, cnt) in self.build_cost { + storage.add(*ty, *cnt, u32::MAX); + } + Some(storage) + } + } + }; +} +pub(crate) use impl_block; + +#[derive(Debug, thiserror::Error)] +pub enum DataConvertError { + #[error(transparent)] + Custom(#[from] Box<dyn Error + Sync + Send>), +} + +impl DataConvertError { + pub fn forward<T, E: Error + Sync + Send + 'static>(result: Result<T, E>) -> Result<T, Self> { + match result { + Ok(v) => Ok(v), + Err(e) => Err(Self::Custom(Box::new(e))), + } + } +} + +#[derive(Debug, thiserror::Error)] +pub enum DeserializeError { + #[error(transparent)] + DecompressError(#[from] data::DecompressError), + #[error("expected type {expect:?} but got {have:?}")] + InvalidType { have: DynType, expect: DynType }, + #[error(transparent)] + Custom(#[from] Box<dyn Error + Sync + Send>), +} + +impl DeserializeError { + pub fn forward<T, E: Error + Sync + Send + 'static>(result: Result<T, E>) -> Result<T, Self> { + match result { + Ok(v) => Ok(v), + Err(e) => Err(Self::Custom(Box::new(e))), + } + } +} + +#[derive(Debug, thiserror::Error)] +pub enum SerializeError { + #[error(transparent)] + Custom(#[from] Box<dyn Error + Sync + Send>), + #[error(transparent)] + Compress(#[from] CompressError), +} + +impl SerializeError { + pub fn forward<T, E: Error + Sync + Send + 'static>(result: Result<T, E>) -> Result<T, Self> { + match result { + Ok(v) => Ok(v), + Err(e) => Err(Self::Custom(Box::new(e))), + } + } +} + +/// a block. put it in stuff! +pub struct Block { + image: Option<[Image<&'static [u8], 4>; 3]>, + name: &'static str, + logic: BlockLogicEnum, +} + +impl PartialEq for Block { + fn eq(&self, rhs: &Block) -> bool { + self.name == rhs.name + } +} + +impl Block { + /// create a new block + #[must_use] + #[inline] + pub(crate) const fn new( + name: &'static str, + logic: BlockLogicEnum, + image: Option<[Image<&'static [u8], 4>; 3]>, + ) -> Self { + Self { image, name, logic } + } + + /// this blocks name + /// ``` + /// assert!(mindus::block::distribution::DISTRIBUTOR.name() == "distributor") + /// ``` + #[must_use] + #[inline] + pub const fn name(&self) -> &'static str { + self.name + } + + /// should you send context to [`image`]? + #[must_use] + #[inline] + pub fn wants_context(&self) -> bool { + use BlockLogicEnum::*; + matches!( + self.logic, + ConveyorBlock(..) | DuctBlock(..) | StackConveyor(..) | ConduitBlock(..) + ) + } + + /// draw this block, with this state + #[must_use] + #[inline] + pub fn image( + &self, + state: Option<&State>, + context: Option<&RenderingContext>, + rot: Rotation, + scale: Scale, + ) -> ImageHolder<4> { + if let Some(imgs) = &self.image { + return ImageHolder::from((imgs[scale as usize]).copy()); + } + self.logic.draw(self.name, state, context, rot, scale) + } + + /// size. + #[must_use] + #[inline] + pub fn get_size(&self) -> u8 { + self.logic.get_size() + } + + /// does it matter if its rotated + #[must_use] + #[inline] + pub fn is_symmetric(&self) -> bool { + self.logic.is_symmetric() + } + + /// cost + #[must_use] + #[inline] + pub fn get_build_cost(&self) -> Option<ItemStorage> { + self.logic.create_build_cost() + } + + pub(crate) fn data_from_i32( + &self, + config: i32, + pos: GridPos, + ) -> Result<DynData, DataConvertError> { + self.logic.data_from_i32(config, pos) + } + + pub(crate) fn deserialize_state( + &self, + data: DynData, + ) -> Result<Option<State>, DeserializeError> { + self.logic.deserialize_state(data) + } + + pub(crate) fn mirror_state(&self, state: &mut State, horizontally: bool, vertically: bool) { + self.logic.mirror_state(state, horizontally, vertically); + } + + pub(crate) fn rotate_state(&self, state: &mut State, clockwise: bool) { + self.logic.rotate_state(state, clockwise); + } + + pub(crate) fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + self.logic.serialize_state(state) + } + + #[inline] + pub(crate) fn read( + &self, + build: &mut Build, + reg: &BlockRegistry, + mapping: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { + self.logic.read(build, reg, mapping, buff) + } +} + +impl fmt::Debug for Block { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Block<{:?}>", self.name) + } +} + +impl RegistryEntry for Block { + fn get_name(&self) -> &str { + self.name + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +/// the possible rotation states of a object +#[repr(u8)] +pub enum Rotation { + Up, + Right, + Down, + Left, +} + +impl Rotation { + #[must_use] + /// count rotations + pub const fn count(self) -> u8 { + self as u8 + } + + #[must_use] + /// mask + pub const fn mask(self) -> U4 { + match self { + Rotation::Up => B1000, + Rotation::Right => B0100, + Rotation::Down => B0010, + Rotation::Left => B0001, + } + } + + #[must_use] + /// character of this rot (Right => >, Up => ^, Left => <, Down => v) + pub const fn ch(self) -> char { + match self { + Rotation::Right => '>', + Rotation::Up => '^', + Rotation::Left => '<', + Rotation::Down => 'v', + } + } + + #[must_use] + /// mirror the directions. + pub const fn mirrored(self, horizontally: bool, vertically: bool) -> Self { + match self { + Self::Right => { + if horizontally { + Self::Left + } else { + Self::Right + } + } + Self::Up => { + if vertically { + Self::Down + } else { + Self::Up + } + } + Self::Left => { + if horizontally { + Self::Right + } else { + Self::Left + } + } + Self::Down => { + if vertically { + Self::Up + } else { + Self::Down + } + } + } + } + + /// mirror in place + pub fn mirror(&mut self, horizontally: bool, vertically: bool) { + *self = self.mirrored(horizontally, vertically); + } + + #[must_use] + /// rotate the rotation + pub const fn rotated(self, clockwise: bool) -> Self { + match self { + Self::Right => { + if clockwise { + Self::Down + } else { + Self::Up + } + } + Self::Up => { + if clockwise { + Self::Right + } else { + Self::Left + } + } + Self::Left => { + if clockwise { + Self::Up + } else { + Self::Down + } + } + Self::Down => { + if clockwise { + Self::Left + } else { + Self::Right + } + } + } + } + + /// rotate the rotation in place + pub fn rotate(&mut self, clockwise: bool) { + *self = self.rotated(clockwise); + } + + #[must_use] + /// rotate 180 + pub const fn rotated_180(self) -> Self { + match self { + Self::Right => Self::Left, + Self::Up => Self::Down, + Self::Left => Self::Right, + Self::Down => Self::Up, + } + } + + /// rotate 180 in place + pub fn rotate_180(&mut self) { + *self = self.rotated_180(); + } +} + +impl From<u8> for Rotation { + fn from(val: u8) -> Self { + match val & 3 { + 0 => Self::Right, + 1 => Self::Up, + 2 => Self::Left, + _ => Self::Down, + } + } +} + +impl From<Rotation> for u8 { + fn from(rot: Rotation) -> Self { + match rot { + Rotation::Right => 0, + Rotation::Up => 1, + Rotation::Left => 2, + Rotation::Down => 3, + } + } +} + +pub type BlockRegistry<'l> = crate::registry::Registry<'l, Block>; +pub type RegisterError<'l> = crate::registry::RegisterError<'l, Block>; + +macro_rules! make_register { + ($($field:literal $op:tt $logic:expr;)+) => { paste::paste! { + $( + $crate::block::make_register!(impl $field $op $logic); + )+ + + pub(crate) fn register(reg: &mut $crate::block::BlockRegistry<'_>) { + // get the static we make + $(assert!(reg.register(&[<$field:snake:upper>]).is_ok());)+ + } + }}; + (impl $field: literal => $logic: expr) => { + paste::paste! { pub static [<$field:snake:upper>]: $crate::block::Block = $crate::block::Block::new( + $field, <crate::block::BlockLogicEnum as crate::block::ConstFrom<_>>::fro($logic), None + ); } + }; + (impl $field: literal -> $logic: expr) => { + paste::paste! { pub static [<$field:snake:upper>]: $crate::block::Block = $crate::block::Block::new( + $field, <crate::block::BlockLogicEnum as crate::block::ConstFrom<_>>::fro($logic), Some(crate::data::renderer::load!($field)) + ); } + } +} +pub(crate) use make_register; + +#[must_use] +/// create a block registry +pub fn build_registry() -> BlockRegistry<'static> { + let mut reg = BlockRegistry::default(); + register(&mut reg); + reg +} + +fn register(reg: &mut BlockRegistry<'_>) { + turrets::register(reg); + drills::register(reg); + distribution::register(reg); + storage::register(reg); + liquid::register(reg); + power::register(reg); + defense::register(reg); + production::register(reg); + payload::register(reg); + campaign::register(reg); + logic::register(reg); + walls::register(reg); + environment::register(reg); + units::register(reg); +} diff --git a/src/block/payload.rs b/src/block/payload.rs new file mode 100644 index 0000000..6a8ef11 --- /dev/null +++ b/src/block/payload.rs @@ -0,0 +1,324 @@ +//! payload related bits and bobs +use thiserror::Error; + +use crate::block::content::Type as BlockEnum; +use crate::block::distribution::BridgeBlock; +use crate::block::simple::*; +use crate::block::{self, *}; +use crate::content::{self, Content}; +use crate::data::dynamic::DynType; +use crate::data::ReadError; +use crate::unit; + +use super::BlockRegistry; + +make_simple!(SimplePayloadBlock, |_, n, _, _, r: Rotation, scl| { + match n { + "deconstructor" | "small-deconstructor" | "payload-void" => { + let mut base = load!(from n which is ["deconstructor" | "small-deconstructor" | "payload-void"], scl); + let mut r#in = load!(scl -> match n { + "small-deconstructor" => "factory-in-3", + _ => "factory-in-5", + }); + unsafe { + base.overlay(r#in.rotate(r.rotated(false).count())) + .overlay(&load!(scl -> match n { + "small-deconstructor" => "small-deconstructor-top", + "deconstructor" => "deconstructor-top", + _ => "payload-void-top", + })) + }; + base + } + // "payload-loader" | "payload-unloader" + _ => { + let mut base = load!(from n which is ["payload-loader" | "payload-unloader"], scl); + let mut input = load!("factory-in-3-dark", scl); + let mut output = load!("factory-out-3-dark", scl); + unsafe { + base.overlay(input.rotate(r.rotated(false).count())) + .overlay(output.rotate(r.rotated(false).count())) + .overlay( + &load!(concat "top" => n which is ["payload-loader" | "payload-unloader"], scl), + ) + }; + base + } + } +}); +make_simple!( + PayloadConveyor, + |_, n, _, _, r: Rotation, s| { + let mut base = + load!(from n which is ["payload-conveyor" | "reinforced-payload-conveyor"], s); + unsafe { base.rotate(r.rotated(false).count()) }; + base + }, + read_payload_conveyor +); +// make_simple!(PayloadRouter => read_payload_router); + +make_register! { + "payload-conveyor" => PayloadConveyor::new(3, false, cost!(Copper: 10, Graphite: 10)); + "payload-router" => PayloadBlock::new(3, false, cost!(Copper: 10, Graphite: 15)); + "reinforced-payload-conveyor" => PayloadConveyor::new(3, false, cost!(Tungsten: 10)); + "reinforced-payload-router" => PayloadBlock::new(3, false, cost!(Tungsten: 15)); + "payload-mass-driver" -> BridgeBlock::new(3, true, cost!(Tungsten: 120, Silicon: 120, Graphite: 50), 700, false); + "large-payload-mass-driver" -> BridgeBlock::new(5, true, cost!(Thorium: 200, Tungsten: 200, Silicon: 200, Graphite: 100, Oxide: 30), 1100, false); + "small-deconstructor" => SimplePayloadBlock::new(3, true, cost!(Beryllium: 100, Silicon: 100, Oxide: 40, Graphite: 80)); + "deconstructor" => SimplePayloadBlock::new(5, true, cost!(Beryllium: 250, Oxide: 100, Silicon: 250, Carbide: 250)); + "constructor" => PayloadBlock::new(3, true, cost!(Silicon: 100, Beryllium: 150, Tungsten: 80)); + "large-constructor" => PayloadBlock::new(5, true, cost!(Silicon: 150, Oxide: 150, Tungsten: 200, PhaseFabric: 40)); + "payload-loader" => SimplePayloadBlock::new(3, false, cost!(Graphite: 50, Silicon: 50, Tungsten: 80)); + "payload-unloader" => SimplePayloadBlock::new(3, false, cost!(Graphite: 50, Silicon: 50, Tungsten: 30)); + // sandbox only + "payload-source" => PayloadBlock::new(5, false, &[]); + "payload-void" => SimplePayloadBlock::new(5, true, &[]); +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +/// payload item cfg +pub enum Payload { + Empty, + Block(block::content::Type), + Unit(unit::Type), +} + +/// a payload related block with [item cfg](Payload) +pub struct PayloadBlock { + size: u8, + symmetric: bool, + build_cost: BuildCost, +} + +impl PayloadBlock { + #[must_use] + pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { + assert!(size != 0, "invalid size"); + Self { + size, + symmetric, + build_cost, + } + } + + state_impl!(pub Payload); +} + +impl BlockLogic for PayloadBlock { + impl_block!(); + + fn draw( + &self, + name: &str, + _: Option<&State>, + _: Option<&RenderingContext>, + r: Rotation, + s: Scale, + ) -> ImageHolder<4> { + match name { + "payload-router" | "reinforced-payload-router" => { + let mut base = + load!(from name which is ["payload-router" | "reinforced-payload-router"], s); + unsafe { + base.rotate(r.rotated(false).count()); + base.overlay(& load!(concat "over" => name which is ["payload-router" | "reinforced-payload-router"], s)); + } + base + } + _ => { + let mut base = load!(from name which is ["constructor" | "large-constructor" | "payload-source"], s); + let mut out = load!(s -> match name { + "constructor" => "factory-out-3", + "large-constructor" => "factory-out-5-dark", + _ => "factory-out-5", + }); + unsafe { + out.rotate(r.rotated(false).count()); + base.overlay(&out); + base.overlay(&load!(concat "top" => name which is ["constructor" | "large-constructor" | "payload-source"], s)) + }; + base + } + } + } + + fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { + Ok(DynData::Empty) + } + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { + match data { + DynData::Empty => Ok(Some(Self::create_state(Payload::Empty))), + DynData::Content(content::Type::Block, id) => { + let block = PayloadDeserializeError::forward(block::content::Type::try_from(id))?; + Ok(Some(Self::create_state(Payload::Block(block)))) + } + DynData::Content(content::Type::Unit, id) => { + let unit = PayloadDeserializeError::forward(unit::Type::try_from(id))?; + Ok(Some(Self::create_state(Payload::Unit(unit)))) + } + DynData::Content(have, ..) => Err(DeserializeError::Custom(Box::new( + PayloadDeserializeError::ContentType(have), + ))), + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::Content, + }), + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + match Self::get_state(state) { + Payload::Empty => Ok(DynData::Empty), + Payload::Block(block) => Ok(DynData::Content(content::Type::Block, (*block).into())), + Payload::Unit(unit) => Ok(DynData::Content(content::Type::Unit, (*unit).into())), + } + } +} + +/// format: +/// - call [`read_payload_conveyor`] +/// - t: [`u8`] +/// - sort: [`u16`] +/// - recdir: [`u8`] +fn read_payload_router( + b: &mut Build, + reg: &BlockRegistry, + entity_mapping: &EntityMapping, + buff: &mut DataRead, +) -> Result<(), DataReadError> { + read_payload_conveyor(b, reg, entity_mapping, buff)?; + buff.skip(4) +} + +/// format: +/// - [skip(4)](`DataRead::skip`) +/// - rot: [`f32`] +/// - become [`read_payload`] +fn read_payload_conveyor( + _: &mut Build, + reg: &BlockRegistry, + entity_mapping: &EntityMapping, + buff: &mut DataRead, +) -> Result<(), DataReadError> { + buff.skip(8)?; + read_payload(reg, entity_mapping, buff) +} + +/// format: +/// - iterate [`i16`]..0 +/// - [`u8`], [`i16`], [`i32`] +pub(crate) fn read_payload_seq(buff: &mut DataRead) -> Result<(), DataReadError> { + let amount = (-buff.read_i16()?) as usize; + buff.skip(amount * 7) +} + +/// format: +/// - vector: ([`f32`], [`f32`]) +/// - rotation: [`f32`] +/// - become [`read_payload`] +pub(crate) fn read_payload_block( + reg: &BlockRegistry, + entity_mapping: &EntityMapping, + buff: &mut DataRead, +) -> Result<(), DataReadError> { + buff.skip(12)?; + read_payload(reg, entity_mapping, buff) +} + +/// format: +/// - exists: [`bool`] +/// - if !exists: ok +/// - type: [`u8`] +/// - if type == `1` (payload block): +/// - block: [`u16`] +/// - version: [`u8`] +/// - [`BlockLogic::read`] (recursion :ferrisHmm:), +/// - if type == 2 (paylood unit): +/// - id: [`u8`] +/// - unit read???????? TODO +fn read_payload( + reg: &BlockRegistry, + entity_mapping: &crate::data::map::EntityMapping, + buff: &mut DataRead, +) -> Result<(), DataReadError> { + if !buff.read_bool()? { + return Ok(()); + } + let t = buff.read_u8()?; + const BLOCK: u8 = 1; + const UNIT: u8 = 0; + match t { + BLOCK => { + let b = buff.read_u16()?; + let b = BlockEnum::try_from(b).unwrap_or(BlockEnum::Router); + let block = reg.get(b.get_name()).unwrap(); + block + .logic + .read(&mut Build::new(block), reg, entity_mapping, buff)?; + } + UNIT => { + let u = buff.read_u8()?; + let Some(_u) = entity_mapping.get(&u) else { + return Err(ReadError::Expected("map entry")); + }; + // unit::Type::try_from(u).unwrap_or(unit::Type::Alpha).read(todo!()); + } + _ => return Err(ReadError::Expected("0 | 1")), + } + Ok(()) +} + +#[cfg(test)] +mod tests { + use std::collections::HashMap; + + use crate::registry::Registry; + + use super::*; + #[test] + fn payload_conv() { + let mut reg = Registry::default(); + register(&mut reg); + let mut r = DataRead::new(&[0, 0, 0, 0, 0, 0, 0, 0, 0]); + read_payload_conveyor( + &mut Build::new(&PAYLOAD_CONVEYOR), + ®, + &HashMap::default(), + &mut r, + ) + .unwrap(); + assert!(r.read_bool().is_err()); + let mut r = DataRead::new(&[ + 65, 198, 232, 0, 67, 51, 255, 249, 1, 1, 0, 157, 0, 67, 197, 128, 0, 128, 1, 3, + ]); + read_payload_conveyor( + &mut Build::new(&PAYLOAD_CONVEYOR), + ®, + &HashMap::default(), + &mut r, + ) + .unwrap(); + assert!(r.read_bool().is_err()); + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] +pub enum PayloadDeserializeError { + #[error("expected Unit or Block but got {0:?}")] + ContentType(content::Type), + #[error("payload block not found")] + BlockNotFound(#[from] block::content::TryFromU16Error), + #[error("payload unit not found")] + UnitNotFound(#[from] unit::TryFromU16Error), +} + +impl PayloadDeserializeError { + pub fn forward<T, E: Into<Self>>(result: Result<T, E>) -> Result<T, DeserializeError> { + match result { + Ok(v) => Ok(v), + Err(e) => Err(DeserializeError::Custom(Box::new(e.into()))), + } + } +} diff --git a/src/block/power.rs b/src/block/power.rs new file mode 100644 index 0000000..62f32f8 --- /dev/null +++ b/src/block/power.rs @@ -0,0 +1,251 @@ +//! power connection and generation +use thiserror::Error; + +use crate::block::simple::*; +use crate::block::*; +use crate::data::dynamic::DynType; + +make_simple!(GeneratorBlock => |_, _, _, buff: &mut DataRead| read_generator(buff)); +make_simple!(NuclearGeneratorBlock => |_, _, _, buff: &mut DataRead| read_nuclear(buff)); +make_simple!(ImpactReactorBlock => |_, _, _, buff: &mut DataRead| read_impact(buff)); +make_simple!( + Neoplasia, + |_, _, _, _, rot: Rotation, scl| { + let mut base = load!("neoplasia-reactor", scl); + unsafe { + base.overlay( + load!(scl -> match rot { + Rotation::Up | Rotation::Right => "neoplasia-reactor-top1", + Rotation::Down | Rotation::Left => "neoplasia-reactor-top2", + }) + .rotate(rot.rotated(false).count()), + ) + }; + base + }, + |_, _, _, buff: &mut DataRead| read_heater(buff) +); +make_simple!(DiodeBlock, |_, _, _, _, rot: Rotation, s| { + let mut base = load!("diode", s); + if rot == Rotation::Right { + return base; + } + let mut top = load!("diode-arrow", s); + unsafe { + top.rotate(rot.rotated(false).count()); + base.overlay(&top) + }; + base +}); + +make_register! { + // illuminator == power ????? + "illuminator" -> LampBlock::new(1, true, cost!(Lead: 8, Graphite: 12, Silicon: 8)); + "power-node" -> ConnectorBlock::new(1, true, cost!(Copper: 1, Lead: 3), 10); + "power-node-large" -> ConnectorBlock::new(2, true, cost!(Lead: 10, Titanium: 5, Silicon: 3), 15); + "surge-tower" -> ConnectorBlock::new(2, true, cost!(Lead: 10, Titanium: 7, Silicon: 15, SurgeAlloy: 15), 2); + "diode" => DiodeBlock::new(1, false, cost!(Metaglass: 10, Silicon: 10, Plastanium: 5)); + "battery" -> BasicBlock::new(1, true, cost!(Copper: 5, Lead: 20)); + "battery-large" -> BasicBlock::new(3, true, cost!(Lead: 50, Titanium: 20, Silicon: 30)); + "combustion-generator" -> GeneratorBlock::new(1, true, cost!(Copper: 25, Lead: 15)); + "thermal-generator" -> GeneratorBlock::new(2, true, cost!(Copper: 40, Lead: 50, Metaglass: 40, Graphite: 35, Silicon: 35)); + "steam-generator" -> GeneratorBlock::new(2, true, cost!(Copper: 35, Lead: 40, Graphite: 25, Silicon: 30)); + "differential-generator" -> GeneratorBlock::new(3, true, cost!(Copper: 70, Lead: 100, Metaglass: 50, Titanium: 50, Silicon: 65)); + "rtg-generator" -> GeneratorBlock::new(2, true, cost!(Lead: 100, Thorium: 50, Silicon: 75, Plastanium: 75, PhaseFabric: 25)); + "solar-panel" -> GeneratorBlock::new(1, true, cost!(Lead: 10, Silicon: 15)); + "solar-panel-large" -> GeneratorBlock::new(3, true, cost!(Lead: 80, Silicon: 110, PhaseFabric: 15)); + "thorium-reactor" -> NuclearGeneratorBlock::new(3, true, cost!(Lead: 300, Metaglass: 50, Graphite: 150, Thorium: 150, Silicon: 200)); + "impact-reactor" -> ImpactReactorBlock::new(4, true, + cost!(Lead: 500, Metaglass: 250, Graphite: 400, Thorium: 100, Silicon: 300, SurgeAlloy: 250)); + "beam-node" -> ConnectorBlock::new(1, true, cost!(Beryllium: 8), 4); + "beam-tower" -> ConnectorBlock::new(3, true, cost!(Beryllium: 30, Oxide: 10, Silicon: 10), 12); + "turbine-condenser" -> GeneratorBlock::new(3, true, cost!(Beryllium: 60)); + "chemical-combustion-chamber" -> GeneratorBlock::new(3, true, cost!(Graphite: 40, Tungsten: 40, Oxide: 40, Silicon: 30)); + "pyrolysis-generator" -> GeneratorBlock::new(3, true, cost!(Graphite: 50, Carbide: 50, Oxide: 60, Silicon: 50)); + "flux-reactor" -> GeneratorBlock::new(5, true, cost!(Graphite: 300, Carbide: 200, Oxide: 100, Silicon: 600, SurgeAlloy: 300)); + "neoplasia-reactor" => Neoplasia::new(5, true, cost!(Tungsten: 1000, Carbide: 300, Oxide: 150, Silicon: 500, PhaseFabric: 300, SurgeAlloy: 200)); + // editor only + "beam-link" -> ConnectorBlock::new(3, true, &[], 12); + // sandbox only + "power-source" -> ConnectorBlock::new(1, true, &[], 100); + "power-void" -> GeneratorBlock::new(1, true, &[]); +} + +pub struct ConnectorBlock { + size: u8, + symmetric: bool, + build_cost: BuildCost, + pub max: u8, +} + +impl ConnectorBlock { + #[must_use] + pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost, max: u8) -> Self { + assert!(size != 0, "invalid size"); + assert!( + !(max == 0 || max > i8::MAX as u8), + "invalid maximum link count" + ); + Self { + size, + symmetric, + build_cost, + max, + } + } + state_impl!(pub Vec<(i16, i16)>); +} + +impl BlockLogic for ConnectorBlock { + impl_block!(); + + fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { + Ok(DynData::Empty) + } + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { + match data { + DynData::Empty => Ok(Some(Self::create_state(Vec::new()))), + DynData::Point2Array(s) => Ok(Some(Self::create_state(s))), + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::Boolean, + }), + } + } + + fn mirror_state(&self, state: &mut State, horizontally: bool, vertically: bool) { + for (dx, dy) in &mut *Self::get_state_mut(state) { + if horizontally { + *dx = -*dx; + } + if vertically { + *dy = -*dy; + } + } + } + + fn rotate_state(&self, state: &mut State, clockwise: bool) { + for (dx, dy) in &mut *Self::get_state_mut(state) { + let (cdx, cdy) = (*dx, *dy); + *dx = if clockwise { cdy } else { -cdy }; + *dy = if clockwise { -cdx } else { cdx }; + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + Ok(DynData::Point2Array(Self::get_state(state).clone())) + } +} + +#[derive(Debug, Error)] +pub enum ConnectorDeserializeError { + #[error("too many links ({have} but only {max} allowed)")] + LinkCount { have: usize, max: u8 }, +} + +impl ConnectorDeserializeError { + pub fn forward<T, E: Into<Self>>(result: Result<T, E>) -> Result<T, DeserializeError> { + match result { + Ok(v) => Ok(v), + Err(e) => Err(DeserializeError::Custom(Box::new(e.into()))), + } + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct Rgba(u8, u8, u8, u8); + +impl From<u32> for Rgba { + fn from(value: u32) -> Self { + Self( + (value >> 24) as u8, + (value >> 16) as u8, + (value >> 8) as u8, + value as u8, + ) + } +} + +impl From<Rgba> for u32 { + fn from(value: Rgba) -> Self { + (u32::from(value.0) << 24) + | (u32::from(value.1) << 16) + | (u32::from(value.2) << 8) + | u32::from(value.3) + } +} + +pub struct LampBlock { + size: u8, + symmetric: bool, + build_cost: BuildCost, +} + +impl LampBlock { + #[must_use] + pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { + assert!(size != 0, "invalid size"); + Self { + size, + symmetric, + build_cost, + } + } + + state_impl!(pub Rgba); +} + +impl BlockLogic for LampBlock { + impl_block!(); + + fn data_from_i32(&self, config: i32, _: GridPos) -> Result<DynData, DataConvertError> { + Ok(DynData::Int(config)) + } + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { + match data { + DynData::Int(rgba) => Ok(Some(Self::create_state(Rgba::from(rgba as u32)))), + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::Int, + }), + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + let state = Self::get_state(state); + Ok(DynData::Int(u32::from(*state) as i32)) + } +} + +/// format: +/// - production efficiency: [`f32`] +/// - generate time: [`f32`] +fn read_generator(buff: &mut DataRead) -> Result<(), DataReadError> { + buff.skip(8) +} + +/// format: +/// - call [`read_generator`] +/// - heat: [`f32`] +fn read_nuclear(buff: &mut DataRead) -> Result<(), DataReadError> { + read_generator(buff)?; + buff.skip(4) +} + +/// format: +/// - call [`read_generator`] +/// - warmup: [`f32`] +fn read_impact(buff: &mut DataRead) -> Result<(), DataReadError> { + read_generator(buff)?; + buff.skip(4) +} + +/// format: +/// - call [`read_generator`] +/// - heat: [`f32`] +fn read_heater(buff: &mut DataRead) -> Result<(), DataReadError> { + read_generator(buff)?; + buff.skip(4) +} diff --git a/src/block/production.rs b/src/block/production.rs new file mode 100644 index 0000000..cd48482 --- /dev/null +++ b/src/block/production.rs @@ -0,0 +1,120 @@ +//! the industry part of mindustry +use crate::block::simple::*; +use crate::block::*; +use crate::data::DataRead; + +make_register! { + "cultivator" -> ProductionBlock::new(2, true, cost!(Copper: 25, Lead: 25, Silicon: 10)); + "graphite-press" -> ProductionBlock::new(2, true, cost!(Copper: 75, Lead: 30)); + "multi-press" -> ProductionBlock::new(3, true, cost!(Lead: 100, Graphite: 50, Titanium: 100, Silicon: 25)); + "silicon-smelter" -> ProductionBlock::new(2, true, cost!(Copper: 30, Lead: 25)); + "silicon-crucible" -> ProductionBlock::new(3, true, cost!(Metaglass: 80, Titanium: 120, Silicon: 60, Plastanium: 35)); + "kiln" -> ProductionBlock::new(2, true, cost!(Copper: 60, Lead: 30, Graphite: 30)); + "plastanium-compressor" -> ProductionBlock::new(2, true, cost!(Lead: 115, Graphite: 60, Titanium: 80, Silicon: 80)); + "phase-weaver" -> ProductionBlock::new(2, true, cost!(Lead: 120, Thorium: 75, Silicon: 130)); + "surge-smelter" -> ProductionBlock::new(3, true, cost!(Lead: 80, Thorium: 70, Silicon: 80)); + "cryofluid-mixer" -> ProductionBlock::new(2, true, cost!(Lead: 65, Thorium: 60, Silicon: 40)); + "pyratite-mixer" -> ProductionBlock::new(2, true, cost!(Copper: 50, Lead: 25)); + "blast-mixer" -> ProductionBlock::new(2, true, cost!(Lead: 30, Thorium: 20)); + "melter" -> ProductionBlock::new(1, true, cost!(Copper: 30, Lead: 35, Graphite: 45)); + "separator" -> SeparatorBlock::new(2, true, cost!(Copper: 30, Titanium: 25)); + "disassembler" -> SeparatorBlock::new(3, true, cost!(Titanium: 100, Thorium: 80, Silicon: 150, Plastanium: 40)); + "spore-press" -> ProductionBlock::new(2, true, cost!(Lead: 35, Silicon: 30)); + "pulverizer" -> ProductionBlock::new(1, true, cost!(Copper: 30, Lead: 25)); + "coal-centrifuge" -> ProductionBlock::new(2, true, cost!(Lead: 30, Graphite: 40, Titanium: 20)); + "incinerator" -> BasicBlock::new(1, true, cost!(Lead: 15, Graphite: 5)); + "silicon-arc-furnace" -> ProductionBlock::new(3, true, cost!(Beryllium: 70, Graphite: 80)); + "electrolyzer" => ProductionBlock::new(3, true, cost!(Silicon: 50, Graphite: 40, Beryllium: 130, Tungsten: 80)); + "atmospheric-concentrator" -> ProductionBlock::new(3, true, cost!(Oxide: 60, Beryllium: 180, Silicon: 150)); + "oxidation-chamber" => HeatCrafter::new(3, true, cost!(Tungsten: 120, Graphite: 80, Silicon: 100, Beryllium: 120)); + "electric-heater" => HeatCrafter::new(2, false, cost!(Tungsten: 30, Oxide: 30)); + "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)); + "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)); + // slag centrifuge + "surge-crucible" -> ProductionBlock::new(3, true, cost!(Silicon: 100, Graphite: 80, Tungsten: 80, Oxide: 80)); + "cyanogen-synthesizer" -> ProductionBlock::new(3, true, cost!(Carbide: 50, Silicon: 80, Beryllium: 90)); + "phase-synthesizer" -> ProductionBlock::new(3, true, cost!(Carbide: 90, Silicon: 100, Thorium: 100, Tungsten: 200)); + // heat reactor + // sandbox only + "heat-source" => HeatCrafter::new(1, false, &[]); +} + +// format: call [`read_production_block`], seed: [`i32`] +make_simple!(SeparatorBlock => |_, _, _, buff: &mut DataRead| buff.skip(12)); + +make_simple!( + ProductionBlock, + |_, _, _, _, r: Rotation, s| { + // electrolyzer exclusive + // ozone <- e(^) -> hydrogen + let mut base = load!("electrolyzer", s); + unsafe { + base.overlay( + load!(s -> match r { + Rotation::Up | Rotation::Left => "electrolyzer-hydrogen-output1" + Rotation::Down | Rotation::Right => "electrolyzer-hydrogen-output2" + }) + .rotate(r.count()), + ); + base.overlay( + load!(s -> match r { + Rotation::Down | Rotation::Right => "electrolyzer-ozone-output1" + Rotation::Up | Rotation::Left => "electrolyzer-ozone-output2" + }) + .rotate(r.mirrored(true, true).count()), + ); + } + base + }, + |b: &mut Build<'_>, _, _, buff: &mut DataRead| { + // format: + // - progress: `f32` + // - warmup: `f32` + // (cultivator) + // `f32` + buff.skip(8 + if b.name() == "cultivator" { 4 } else { 0 }) + } +); + +make_simple!( + HeatCrafter, + |_, n, _, _, r: Rotation, s| { + let mut base = load!(from n which is ["phase-heater" | "electric-heater" | "oxidation-chamber" | "slag-heater" | "heat-source"], s); + unsafe { + base.overlay(match r { + Rotation::Up | Rotation::Right => load!(concat "top1" => n which is ["phase-heater" | "electric-heater" | "oxidation-chamber" | "slag-heater" | "heat-source"], s), + Rotation::Down | Rotation::Left => load!(concat "top2" => n which is ["phase-heater" | "electric-heater" | "oxidation-chamber" | "slag-heater" | "heat-source"], s) + }.rotate(r.rotated(false).count())) + }; + base + }, + |_, _, _, buff: &mut DataRead| { + // format: + // - progress: `f32` + // - warmup: `f32` + // - heat: f32 + buff.skip(12)?; + Ok(()) + } +); +make_simple!(HeatConduit, |_, n, _, _, r: Rotation, s| { + let mut base = load!(from n which is ["heat-router" | "heat-redirector"], s); + unsafe { + base.overlay( + match r { + Rotation::Up | Rotation::Right => { + load!(concat "top1" => n which is ["heat-router" | "heat-redirector"], s) + } + Rotation::Down | Rotation::Left => { + load!(concat "top2" => n which is ["heat-router" | "heat-redirector"], s) + } + } + .rotate(r.rotated(false).count()), + ) + }; + base +}); diff --git a/mindus/src/block/simple.rs b/src/block/simple.rs index 602f34d..5c4c326 100644 --- a/mindus/src/block/simple.rs +++ b/src/block/simple.rs @@ -54,13 +54,13 @@ macro_rules! make_simple { &self, _: i32, _: crate::data::GridPos, - ) -> Result<crate::data::dynamic::DynData, crate::block::DataConvertError> { - Ok(crate::data::dynamic::DynData::Empty) + ) -> Result<crate::DynData, crate::block::DataConvertError> { + Ok(crate::DynData::Empty) } fn deserialize_state( &self, - _: crate::data::dynamic::DynData, + _: crate::DynData, ) -> Result<Option<crate::block::State>, crate::block::DeserializeError> { Ok(None) } @@ -76,8 +76,8 @@ macro_rules! make_simple { fn serialize_state( &self, _: &crate::block::State, - ) -> Result<crate::data::dynamic::DynData, crate::block::SerializeError> { - Ok(crate::data::dynamic::DynData::Empty) + ) -> Result<crate::DynData, crate::block::SerializeError> { + Ok(crate::DynData::Empty) } fn draw( @@ -88,20 +88,24 @@ macro_rules! make_simple { rot: crate::block::Rotation, scale: crate::data::renderer::Scale, ) -> crate::data::renderer::ImageHolder<4> { + #[allow(clippy::redundant_closure_call)] $draw(self, name, state, context, rot, scale) } fn read( &self, build: &mut crate::data::map::Build, + reg: &crate::block::BlockRegistry, + entity_mapping: &crate::data::map::EntityMapping, buff: &mut crate::data::DataRead, ) -> Result<(), crate::data::ReadError> { - $read(build, buff) + #[allow(clippy::redundant_closure_call)] + $read(build, reg, entity_mapping, buff) } } }; ($name: ident, $draw: expr) => { - crate::block::simple::make_simple!($name, $draw, |_, _| Ok(())); + crate::block::simple::make_simple!($name, $draw, |_, _, _, _| Ok(())); }; ($name: ident, $draw: expr, $read: expr) => { crate::block::simple::make_simple!($name, $draw, $read); @@ -113,7 +117,11 @@ macro_rules! make_simple { crate::block::simple::make_simple!($name, |_, _, _, _, _, scl| $draw(scl), $read); }; ($name: ident / $draw: expr) => { - crate::block::simple::make_simple!($name, |_, _, _, _, _, scl| $draw(scl), |_, _| Ok(())); + crate::block::simple::make_simple!( + $name, + |_, _, _, _, _, scl| $draw(scl), + |_, _, _, _| Ok(()) + ); }; ($name: ident) => { crate::block::simple::make_simple!($name, |_, n, _, _, _, _| unimplemented!("{n}")); diff --git a/src/block/storage.rs b/src/block/storage.rs new file mode 100644 index 0000000..c28b7bd --- /dev/null +++ b/src/block/storage.rs @@ -0,0 +1,16 @@ +//! cores, vaults, containers +use crate::block::make_register; +use crate::block::simple::*; + +make_register! { + "core-shard" -> BasicBlock::new(3, true, cost!(Copper: 1000, Lead: 800)); + "core-foundation" -> BasicBlock::new(4, true, cost!(Copper: 3000, Lead: 3000, Silicon: 2000)); + "core-nucleus" -> BasicBlock::new(5, true, cost!(Copper: 8000, Lead: 8000, Thorium: 4000, Silicon: 5000)); + "core-bastion" -> BasicBlock::new(4, true, cost!(Graphite: 1000, Silicon: 1000, Beryllium: 800)); + "core-citadel" -> BasicBlock::new(5, true, cost!(Silicon: 4000, Beryllium: 4000, Tungsten: 3000, Oxide: 1000)); + "core-acropolis" -> BasicBlock::new(6, true, cost!(Beryllium: 6000, Silicon: 5000, Tungsten: 5000, Carbide: 3000, Oxide: 3000)); + "container" -> BasicBlock::new(2, true, cost!(Titanium: 100)); + "vault" -> BasicBlock::new(3, true, cost!(Titanium: 250, Thorium: 125)); + "reinforced-container" -> BasicBlock::new(2, true, cost!(Tungsten: 30, Graphite: 40)); + "reinforced-vault" -> BasicBlock::new(3, true, cost!(Tungsten: 125, Thorium: 70, Beryllium: 100)); +} diff --git a/src/block/turrets.rs b/src/block/turrets.rs new file mode 100644 index 0000000..3e65ebe --- /dev/null +++ b/src/block/turrets.rs @@ -0,0 +1,82 @@ +//! idk why its not in the [`crate::block::defense`] module +use super::simple::make_simple; +use crate::block::make_register; +use crate::block::simple::cost; +use crate::data::{DataRead, ReadError}; + +make_register! { + "duo" -> ItemTurret::new(1, true, cost!(Copper: 35)); + "scatter" -> ItemTurret::new(2, true, cost!(Copper: 85, Lead: 45)); + "scorch" -> ItemTurret::new(1, true, cost!(Copper: 25, Graphite: 22)); + "hail" -> ItemTurret::new(1, true, cost!(Copper: 40, Graphite: 17)); + "wave" -> Turret::new(2, true, cost!(Copper: 25, Lead: 75, Metaglass: 45)); + "tsunami" -> Turret::new(3, true, cost!(Lead: 400, Metaglass: 100, Titanium: 250, Thorium: 100)); + "lancer" -> Turret::new(2, true, cost!(Copper: 60, Lead: 70, Titanium: 30, Silicon: 60)); + "arc" -> Turret::new(1, true, cost!(Copper: 50, Lead: 50)); + "parallax" -> TractorBeamTurret::new(2, true, cost!(Graphite: 30, Titanium: 90, Silicon: 120)); + "swarmer" -> ItemTurret::new(2, true, cost!(Graphite: 35, Titanium: 35, Silicon: 30, Plastanium: 45)); + "salvo" -> ItemTurret::new(2, true, cost!(Copper: 100, Graphite: 80, Titanium: 50)); + "segment" -> PointDefenseTurret::new(2, true, cost!(Titanium: 40, Thorium: 80, Silicon: 130, PhaseFabric: 40)); + "fuse" -> ItemTurret::new(3, true, cost!(Copper: 225, Graphite: 225, Thorium: 100)); + "ripple" -> ItemTurret::new(3, true, cost!(Copper: 150, Graphite: 135, Titanium: 60)); + "cyclone" -> ItemTurret::new(3, true, cost!(Copper: 200, Titanium: 125, Plastanium: 80)); + "foreshadow" -> ItemTurret::new(4, true, cost!(Copper: 1000, Metaglass: 600, Silicon: 600, Plastanium: 200, SurgeAlloy: 300)); + "spectre" -> ItemTurret::new(4, true, cost!(Copper: 900, Graphite: 300, Thorium: 250, Plastanium: 175, SurgeAlloy: 250)); + "meltdown" -> Turret::new(4, true, cost!(Copper: 1200, Lead: 350, Graphite: 300, Silicon: 325, SurgeAlloy: 325)); + "breach" -> ItemTurret::new(3, true, cost!(Beryllium: 150, Silicon: 150, Graphite: 250)); + "diffuse" -> ItemTurret::new(3, true, cost!(Beryllium: 150, Silicon: 200, Graphite: 200, Tungsten: 50)); + "sublimate" -> ContinousTurret::new(3, true, cost!(Tungsten: 150, Silicon: 200, Oxide: 40, Beryllium: 400)); + "titan" -> ItemTurret::new(4, true, cost!(Tungsten: 250, Silicon: 300, Thorium: 400)); + "disperse" -> ItemTurret::new(4, true, cost!(Thorium: 50, Oxide: 150, Silicon: 200, Beryllium: 350)); + "afflict" -> Turret::new(4, true, cost!(SurgeAlloy: 100, Silicon: 200, Graphite: 250, Oxide: 40)); + "lustre" -> ContinousTurret::new(4, true, cost!(Silicon: 250, Graphite: 200, Oxide: 50, Carbide: 90)); + "scathe" -> ItemTurret::new(4, true, cost!(Oxide: 200, SurgeAlloy: 400, Silicon: 800, Carbide: 500, PhaseFabric: 300)); + "malign" -> Turret::new(5, true, cost!(Carbide: 400, Beryllium: 2000, Silicon: 800, Graphite: 800, PhaseFabric: 300)); + "smite" -> ItemTurret::new(5, true, cost!(Oxide: 200, SurgeAlloy: 400, Silicon: 800, Carbide: 500, PhaseFabric: 300)); +} + +make_simple!(Turret => |_, _, _, buff: &mut DataRead| read_turret(buff)); +make_simple!(PointDefenseTurret => |_, _, _, buff: &mut DataRead| read_point_defense_turret(buff)); +make_simple!(ContinousTurret => |_, _, _, buff: &mut DataRead| read_continous_turret(buff)); +make_simple!(TractorBeamTurret => |_, _, _, buff: &mut DataRead| read_tractor_beam_turret(buff)); +make_simple!(ItemTurret => |_, _, _, buff: &mut DataRead| read_item_turret(buff)); + +/// format: +/// - call [`read_turret`] +/// - iterate [`u8`] +/// - item: [`u16`] as [`Item`](crate::item::Type) +/// - amount: [`u16`] +fn read_item_turret(buff: &mut DataRead) -> Result<(), ReadError> { + read_turret(buff)?; + for _ in 0..buff.read_u8()? { + buff.skip(4)?; + } + Ok(()) +} + +/// format: +/// - reload: f32 +/// - rotation: f32 +fn read_turret(buff: &mut DataRead) -> Result<(), ReadError> { + buff.skip(8) +} + +/// format: +/// - rotation: [`f32`] +fn read_point_defense_turret(buff: &mut DataRead) -> Result<(), ReadError> { + buff.skip(4) +} + +/// format: +/// - call [`read_turret`] +/// - last length: [`f32`] +fn read_continous_turret(buff: &mut DataRead) -> Result<(), ReadError> { + read_turret(buff)?; + buff.skip(4) +} + +/// format: +/// - rotation: [`f32`] +fn read_tractor_beam_turret(buff: &mut DataRead) -> Result<(), ReadError> { + buff.skip(4) +} diff --git a/src/block/units.rs b/src/block/units.rs new file mode 100644 index 0000000..83b39af --- /dev/null +++ b/src/block/units.rs @@ -0,0 +1,380 @@ +//! unit creation related blocks +use thiserror::Error; + +use super::payload::{read_payload_block, read_payload_seq}; +use crate::block::simple::*; +use crate::block::*; +use crate::data::command::UnitCommand; +use crate::data::dynamic::DynType; +use crate::unit; + +// fn is_pay(b: &str) -> bool { +// matches!( +// b, +// "ground-factory" +// | "air-factory" +// | "naval-factory" +// | "additive-reconstructor" +// | "multiplicative-reconstructor" +// | "exponential-reconstructor" +// | "tank-fabricator" +// | "ship-fabricator" +// | "mech-fabricator" +// | "tank-refabricator" +// | "ship-refabricator" +// | "payload-conveyor" +// | "payload-router" +// | "reinforced-payload-conveyor" +// | "reinforced-payload-router" +// | "payload-mass-driver" +// | "large-payload-mass-driver" +// | "constructor" +// | "large-constructor" +// | "payload-source" +// ) +// } + +make_simple!( + AssemblerBlock, + |_, name, _, _, rot: Rotation, s| { + let mut base = + load!(from name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s); + unsafe { + base.overlay( + match rot { + Rotation::Up | Rotation::Right => load!(concat "side1" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s), + Rotation::Down | Rotation::Left => load!(concat "side2" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s) + } + .rotate(rot.rotated(false).count()) + ); + base.overlay(&load!(concat "top" => name which is ["tank-assembler" | "ship-assembler" | "mech-assembler"], s)) + }; + base + }, + |_, reg, map, buff| read_assembler(reg, map, buff) +); + +/// format: +/// - call [`read_payload_block`] +/// - progress: [`f32`] +/// - iterate [`u8`] +/// - read: [`i32`] +/// - call [`read_payload_seq`] +/// - point: ([`f32`], [`f32`]) (maybe [`NaN`](f32::NAN)) +fn read_assembler( + reg: &BlockRegistry, + map: &EntityMapping, + buff: &mut DataRead, +) -> Result<(), DataReadError> { + read_payload_block(reg, map, buff)?; + buff.skip(4)?; + let n = buff.read_u8()? as usize; + buff.skip(n * 4)?; + read_payload_seq(buff)?; + buff.skip(8) +} + +make_simple!( + AssemblerModule, + |_, _, _, _, rot: Rotation, scl| { + let mut base = load!("basic-assembler-module", scl); + unsafe { + base.overlay( + load!(scl -> match rot { + Rotation::Up | Rotation::Right => "basic-assembler-module-side1", + _ => "basic-assembler-module-side2", + }) + .rotate(rot.rotated(false).count()), + ) + }; + base + }, + |_, reg, map, buff| read_payload_block(reg, map, buff) +); + +make_simple!( + RepairTurret => |_, _, _, buff: &mut DataRead| { + buff.skip(4) // rotation: [`f32`] + } +); + +const GROUND_UNITS: &[unit::Type] = &[unit::Type::Dagger, unit::Type::Crawler, unit::Type::Nova]; +const AIR_UNITS: &[unit::Type] = &[unit::Type::Flare, unit::Type::Mono]; +const NAVAL_UNITS: &[unit::Type] = &[unit::Type::Risso, unit::Type::Retusa]; + +make_register! { + "ground-factory" => UnitFactory::new(3, false, cost!(Copper: 50, Lead: 120, Silicon: 80), GROUND_UNITS); + "air-factory" => UnitFactory::new(3, false, cost!(Copper: 60, Lead: 70), AIR_UNITS); + "naval-factory" => UnitFactory::new(3, false, cost!(Copper: 150, Lead: 130, Metaglass: 120), NAVAL_UNITS); + "additive-reconstructor" => ConstructorBlock::new(3, false, cost!(Copper: 200, Lead: 120, Silicon: 90)); + "multiplicative-reconstructor" => ConstructorBlock::new(5, false, cost!(Lead: 650, Titanium: 350, Thorium: 650, Silicon: 450)); + "exponential-reconstructor" => ConstructorBlock::new(7, false, + cost!(Lead: 2000, Titanium: 2000, Thorium: 750, Silicon: 1000, Plastanium: 450, PhaseFabric: 600)); + "tetrative-reconstructor" => ConstructorBlock::new(9, false, + cost!(Lead: 4000, Thorium: 1000, Silicon: 3000, Plastanium: 600, PhaseFabric: 600, SurgeAlloy: 800)); + "repair-point" -> RepairTurret::new(1, true, cost!(Copper: 30, Lead: 30, Silicon: 20)); + "repair-turret" -> RepairTurret::new(2, true, cost!(Thorium: 80, Silicon: 90, Plastanium: 60)); + "tank-fabricator" => UnitFactory::new(3, true, cost!(Silicon: 200, Beryllium: 150), &[unit::Type::Stell]); + "ship-fabricator" => UnitFactory::new(3, true, cost!(Silicon: 250, Beryllium: 200), &[unit::Type::Elude]); + "mech-fabricator" => UnitFactory::new(3, true, cost!(Silicon: 200, Graphite: 300, Tungsten: 60), &[unit::Type::Merui]); + "tank-refabricator" => ConstructorBlock::new(3, true, cost!(Beryllium: 200, Tungsten: 80, Silicon: 100)); + "mech-refabricator" => ConstructorBlock::new(3, true, cost!(Beryllium: 250, Tungsten: 120, Silicon: 150)); + "ship-refabricator" => ConstructorBlock::new(3, true, cost!(Beryllium: 200, Tungsten: 100, Silicon: 150, Oxide: 40)); + "prime-refabricator" => ConstructorBlock::new(5, true, cost!(Thorium: 250, Oxide: 200, Tungsten: 200, Silicon: 400)); + "tank-assembler" => AssemblerBlock::new(5, true, cost!(Thorium: 500, Oxide: 150, Carbide: 80, Silicon: 500)); + "ship-assembler" => AssemblerBlock::new(5, true, cost!(Carbide: 100, Oxide: 200, Tungsten: 500, Silicon: 800, Thorium: 400)); + "mech-assembler" => AssemblerBlock::new(5, true, cost!(Carbide: 200, Thorium: 600, Oxide: 200, Tungsten: 500, Silicon: 900)); // smh collaris + "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)); + +} + +pub struct ConstructorBlock { + size: u8, + symmetric: bool, + build_cost: BuildCost, +} + +impl ConstructorBlock { + #[must_use] + pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { + assert!(size != 0, "invalid size"); + Self { + size, + symmetric, + build_cost, + } + } + + state_impl!(pub Option<UnitCommand>); +} + +impl BlockLogic for ConstructorBlock { + impl_block!(); + + fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { + Ok(DynData::Empty) + } + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { + match data { + DynData::Empty => Ok(Some(Self::create_state(None))), + DynData::UnitCommand(u) => Ok(Some(Self::create_state(Some(u)))), + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::UnitCommand, + }), + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + Ok(Self::get_state(state).map_or(DynData::Empty, DynData::UnitCommand)) + } + + fn draw( + &self, + name: &str, + _: Option<&State>, + _: Option<&RenderingContext>, + rot: Rotation, + s: Scale, + ) -> ImageHolder<4> { + let mut base = load!(from name which is ["additive-reconstructor" | "multiplicative-reconstructor" | "exponential-reconstructor" | "tetrative-reconstructor" | "tank-refabricator" | "mech-refabricator" | "ship-refabricator" | "prime-refabricator"], s); + let times = rot.rotated(false).count(); + let mut out = load!(s -> match name { + "additive-reconstructor" => "factory-out-3", + "multiplicative-reconstructor" => "factory-out-5", + "tank-refabricator" | "mech-refabricator" | "ship-refabricator" => + "factory-out-3-dark", + "exponential-reconstructor" => "factory-out-7", + "prime-refabricator" => "factory-out-5-dark", + "tetrative-reconstructor" => "factory-out-9", + }); + unsafe { base.overlay(out.rotate(times)) }; + + let mut r#in = load!(s -> match name { + "additive-reconstructor" => "factory-in-3", + "multiplicative-reconstructor" => "factory-in-5", + "tank-refabricator" | "mech-refabricator" | "ship-refabricator" => + "factory-in-3-dark", + "exponential-reconstructor" => "factory-in-7", + "prime-refabricator" => "factory-in-5-dark", + "tetrative-reconstructor" => "factory-in-9", + }); + unsafe { base.overlay(r#in.rotate(times)) }; + + // TODO: the context cross is too small + // for i in 0..4u8 { + // if let Some((b, rot)) = dbg!(ctx.cross[i as usize]) { + // if rot.mirrored(true, true) != ctx.rotation && match rot { + // Rotation::Up => i == 3, + // Rotation::Right => i == 4, + // Rotation::Down => i == 0, + // Rotation::Left => i == 2, + // } && is_pay(b.name()) + // { + // let r = unsafe { std::mem::transmute::<u8, Rotation>(i) } + // .mirrored(true, true) + // .rotated(false); + // let mut input = input.clone(); + // input.rotate(r.count()); + // base.overlay(&input); + // } + // } + // } + + unsafe { + base.overlay(&load!(concat "top" => name which is ["additive-reconstructor" | "multiplicative-reconstructor" | "exponential-reconstructor" | "tetrative-reconstructor" | "tank-refabricator" | "mech-refabricator" | "ship-refabricator" | "prime-refabricator"], s)) + }; + base + } + + /// format: + /// - call [`read_payload_block`] + /// - progress: [`f32`] + /// - point: ([`f32`], [`f32`]) (maybe [`NaN`](f32::NAN)) + /// - command: [`DynData::UnitCommand`] + fn read( + &self, + _: &mut Build, + reg: &BlockRegistry, + map: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { + read_payload_block(reg, map, buff)?; + buff.skip(12)?; + // TODO uncomment when read_payload_block impl finished + // b.state = self.deserialize_state(DynSerializer.deserialize(buff).unwrap()).unwrap(); + Ok(()) + } +} + +pub struct UnitFactory { + size: u8, + symmetric: bool, + build_cost: BuildCost, + valid: &'static [unit::Type], +} + +impl UnitFactory { + #[must_use] + pub const fn new( + size: u8, + symmetric: bool, + build_cost: BuildCost, + valid: &'static [unit::Type], + ) -> Self { + assert!(size != 0, "invalid size"); + assert!(!valid.is_empty(), "no valid units"); + assert!(valid.len() <= i32::MAX as usize, "too many valid units"); + Self { + size, + symmetric, + build_cost, + valid, + } + } + + state_impl!(pub Option<unit::Type>); +} + +impl BlockLogic for UnitFactory { + impl_block!(); + + fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { + Ok(DynData::Int(-1)) + } + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { + match data { + DynData::Empty => Ok(Some(Self::create_state(None))), + DynData::Int(idx) => { + if idx == -1 { + Ok(Some(Self::create_state(None))) + } else if idx >= 0 && idx < self.valid.len() as i32 { + Ok(Some(Self::create_state(Some(self.valid[idx as usize])))) + } else { + Err(DeserializeError::Custom(Box::new( + AssemblerDeserializeError { + idx, + count: self.valid.len() as i32, + }, + ))) + } + } + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::Int, + }), + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + if let Some(state) = Self::get_state(state) { + for (i, curr) in self.valid.iter().enumerate() { + if curr == state { + return Ok(DynData::Int(i as i32)); + } + } + Err(SerializeError::Custom(Box::new(AssemblerSerializeError( + *state, + )))) + } else { + Ok(DynData::Int(-1)) + } + } + + fn draw( + &self, + name: &str, + _: Option<&State>, + _: Option<&RenderingContext>, + rot: Rotation, + s: Scale, + ) -> ImageHolder<4> { + let mut base = load!(from name which is ["ground-factory" | "air-factory" | "naval-factory" | "tank-fabricator" | "ship-fabricator" | "mech-fabricator"], s); + unsafe { + base.overlay( + load!(s -> match name { + "ground-factory" | "air-factory" | "naval-factory" => "factory-out-3", + _ => "factory-out-3-dark", + }) + .rotate(rot.rotated(false).count()), + ) + .overlay(&load!(s -> match name { + "ground-factory" | "air-factory" | "naval-factory" => "factory-top-3", + "tank-fabricator" => "tank-fabricator-top", + "ship-fabricator" => "ship-fabricator-top", + "mech-fabricator" => "mech-fabricator-top", + })) + }; + base + } + + /// format: + /// - call [`read_payload_block`] + /// - progress: [`f32`] + /// - plan: [`u16`] + /// - point: ([`f32`], [`f32`]) (maybe [`NaN`](f32::NAN)) + fn read( + &self, + _: &mut Build, + reg: &BlockRegistry, + mapping: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { + read_payload_block(reg, mapping, buff)?; + buff.skip(14) + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] +#[error("invalid unit index ({idx}, valid: {count})")] +pub struct AssemblerDeserializeError { + pub idx: i32, + pub count: i32, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)] +#[error("invalid unit {0:?}")] +pub struct AssemblerSerializeError(unit::Type); diff --git a/src/block/walls.rs b/src/block/walls.rs new file mode 100644 index 0000000..4eaad5c --- /dev/null +++ b/src/block/walls.rs @@ -0,0 +1,118 @@ +//! walls +use crate::block::simple::*; +use crate::block::*; +use crate::data::dynamic::DynType; +use crate::data::renderer::load; + +make_simple!(WallBlock, |_, _, _, _, _, s| { + let mut base = load!("thruster", s); + unsafe { base.overlay(&load!("thruster-top", s)) }; + base +}); + +make_register! { + "copper-wall" -> WallBlock::new(1, true, cost!(Copper: 6)); + "copper-wall-large" -> WallBlock::new(2, true, cost!(Copper: 6 * 4)); + "titanium-wall" -> WallBlock::new(1, true, cost!(Titanium: 6)); + "titanium-wall-large" -> WallBlock::new(2, true, cost!(Titanium: 6 * 4)); + "plastanium-wall" -> WallBlock::new(1, true, cost!(Metaglass: 2, Plastanium: 5)); + "plastanium-wall-large" -> WallBlock::new(2, true, cost!(Metaglass: 2 * 4, Plastanium: 5 * 4)); + "thorium-wall" -> WallBlock::new(1, true, cost!(Thorium: 6)); + "thorium-wall-large" -> WallBlock::new(2, true, cost!(Thorium: 6 * 4)); + "phase-wall" -> WallBlock::new(1, true, cost!(PhaseFabric: 6)); + "phase-wall-large" -> WallBlock::new(2, true, cost!(PhaseFabric: 6 * 4)); + "surge-wall" -> WallBlock::new(1, true, cost!(SurgeAlloy: 6)); + "surge-wall-large" -> WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4)); + "door" => DoorBlock::new(1, true, cost!(Titanium: 6, Silicon: 4)); + "door-large" => DoorBlock::new(2, true, cost!(Titanium: 6 * 4, Silicon: 4 * 4)); + "tungsten-wall" -> WallBlock::new(1, true, cost!(Tungsten: 6)); + "tungsten-wall-large" -> WallBlock::new(2, true, cost!(Tungsten: 6 * 4)); + "blast-door" -> DoorBlock::new(2, true, cost!(Tungsten: 24, Silicon: 24)); + "reinforced-surge-wall" -> WallBlock::new(1, true, cost!(SurgeAlloy: 6, Tungsten: 2)); + "reinforced-surge-wall-large" -> WallBlock::new(2, true, cost!(SurgeAlloy: 6 * 4, Tungsten: 2 * 4)); + "carbide-wall" -> WallBlock::new(1, true, cost!(Thorium: 6, Carbide: 6)); + "carbide-wall-large" -> WallBlock::new(2, true, cost!(Thorium: 6 * 4, Carbide: 6 * 4)); + "shielded-wall" -> WallBlock::new(2, true, cost!(PhaseFabric: 20, SurgeAlloy: 12, Beryllium: 12)); + "beryllium-wall" -> WallBlock::new(1, true, cost!(Beryllium: 6)); + "beryllium-wall-large" -> WallBlock::new(2, true, cost!(Beryllium: 6 * 4)); + // sandbox only + "scrap-wall" -> WallBlock::new(1, true, cost!(Scrap: 6)); + "scrap-wall-large" -> WallBlock::new(2, true, cost!(Scrap: 24)); + "scrap-wall-huge" -> WallBlock::new(3, true, cost!(Scrap: 54)); + "scrap-wall-gigantic" -> WallBlock::new(4, true, cost!(Scrap: 96)); + "thruster" => WallBlock::new(4, false, cost!(Scrap: 96)); +} + +pub struct DoorBlock { + size: u8, + symmetric: bool, + build_cost: BuildCost, +} + +impl DoorBlock { + #[must_use] + pub const fn new(size: u8, symmetric: bool, build_cost: BuildCost) -> Self { + assert!(size != 0, "invalid size"); + Self { + size, + symmetric, + build_cost, + } + } + + state_impl!(pub bool); +} + +impl BlockLogic for DoorBlock { + impl_block!(); + + fn draw( + &self, + name: &str, + state: Option<&State>, + _: Option<&RenderingContext>, + _: Rotation, + s: Scale, + ) -> ImageHolder<4> { + if let Some(state) = state { + if *Self::get_state(state) { + return load!(s -> match name { + "door" => "door-open", + "blast-door" => "blast-door-open", + _ => "door-large-open", + }); + }; + } + load!(from name which is ["door" | "blast-door" | "door-large"], s) + } + + fn data_from_i32(&self, _: i32, _: GridPos) -> Result<DynData, DataConvertError> { + Ok(DynData::Boolean(false)) + } + + fn deserialize_state(&self, data: DynData) -> Result<Option<State>, DeserializeError> { + match data { + DynData::Boolean(opened) => Ok(Some(Self::create_state(opened))), + _ => Err(DeserializeError::InvalidType { + have: data.get_type(), + expect: DynType::Boolean, + }), + } + } + + fn serialize_state(&self, state: &State) -> Result<DynData, SerializeError> { + let state = Self::get_state(state); + Ok(DynData::Boolean(*state)) + } + + fn read( + &self, + build: &mut Build, + _: &BlockRegistry, + _: &EntityMapping, + buff: &mut DataRead, + ) -> Result<(), DataReadError> { + build.state = Some(Self::create_state(buff.read_bool()?)); + Ok(()) + } +} diff --git a/src/content.rs b/src/content.rs new file mode 100644 index 0000000..6c2872c --- /dev/null +++ b/src/content.rs @@ -0,0 +1,179 @@ +//! contains types of types +use std::error::Error; + +macro_rules! numeric_enum { + ($vis:vis enum $tname:ident for $numeric:ty | $error:ident {$($name:ident $(= $val:literal)?),* $(,)?}) => + { + crate::content::numeric_enum!($vis enum $tname for $numeric | $error* {$($name $(= $val)?),*}); + + impl std::fmt::Display for $error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "no variant of {} for value {}", stringify!($tname), self.0) + } + } + + impl std::error::Error for $error {} + }; + ($vis:vis enum $tname:ident for $numeric:ty | $error:ident* {$($name:ident $(= $val:literal)?),* $(,)?}) => + { + #[repr($numeric)] + #[derive(Copy, Clone, Debug, Eq, Ord, PartialEq, PartialOrd, Hash)] + $vis enum $tname { $($name $(= $val)?,)+ } + + #[derive(Copy, Clone, Debug, Eq, PartialEq)] + $vis struct $error($vis $numeric); + + impl TryFrom<$numeric> for $tname { + type Error = $error; + + #[allow(non_upper_case_globals)] + fn try_from(value: $numeric) -> Result<Self, $error> { + $(const $name: $numeric = $tname::$name as $numeric;)+ + match value { + $($name => Ok(Self::$name),)+ + _ => Err($error(value)), + } + } + } + + impl From<$tname> for $numeric { fn from(value: $tname) -> $numeric { value as $numeric } } + }; +} + +pub(crate) use numeric_enum; + +macro_rules! content_enum { + ($vis:vis enum $tname:ident / $ctype:ident for u16 | $error:ident {$($val:literal),* $(,)?}) => + { + paste::paste! { + $crate::content::numeric_enum!($vis enum $tname for u16 | $error* { + $([<$val:camel>]),*, + }); + + impl $crate::content::Content for $tname { + fn get_type(&self) -> $crate::content::Type { + $crate::content::Type::$ctype + } + + fn get_id(&self) -> u16 { + *self as u16 + } + + fn get_name(&self) -> &'static str { + match self { + $(Self::[<$val:camel>] => $val,)* + } + } + } + + impl std::fmt::Display for $error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "no content of type {} for value {}", stringify!($ctype), self.0) + } + } + + impl std::fmt::Display for $tname { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + $(Self::[<$val:camel>] => f.write_str(strconv::kebab2title!($val)),)* + } + } + } + + impl std::error::Error for $error {} + } + }; +} +pub(crate) use content_enum; + +macro_rules! color_content_enum { + ($vis:vis enum $tname:ident / $ctype:ident for u16 | $error:ident {$($val:literal: $col:literal),* $(,)?}) => + { + paste::paste! { + $crate::content::content_enum!($vis enum $tname / $ctype for u16 | $error { + $($val),*, + }); + + impl Type { + #[must_use] + pub const fn color(&self) -> (u8, u8, u8) { + match &self { + $(Self::[<$val:camel>] => { + let v = color_hex::color_from_hex!($col); + (v[0], v[1], v[2]) + },)* + } + } + } + }} +} +pub(crate) use color_content_enum; + +numeric_enum! { + pub enum Type for u8 | TryFromU8Error + { + Item = 0, + Block = 1, + // Mech = 2, + Bullet = 3, + Fluid = 4, + Modifier = 5, + Unit = 6, + Weather = 7, + // Effect = 8, + Sector = 9, + // Loadout = 10, + // TypeId = 11, + // Error = 12, + Planet = 13, + // Ammo = 14, + Team = 15, + } +} + +macro_rules! gen_by_id { + ($target:path, $id:expr) => { + match <$target>::try_from($id) { + Ok(v) => Ok(Box::new(v)), + Err(e) => Err(Box::new(e)), + } + }; +} + +impl Type { + pub fn get(self, id: u16) -> Result<Box<dyn Content>, Box<dyn Error>> { + match self { + Self::Item => gen_by_id!(crate::item::Type, id), + Self::Block => gen_by_id!(crate::block::content::Type, id), + Self::Fluid => gen_by_id!(crate::fluid::Type, id), + Self::Modifier => gen_by_id!(crate::modifier::Type, id), + Self::Unit => gen_by_id!(crate::unit::Type, id), + Self::Team => gen_by_id!(crate::team::Team, id), + _ => Ok(Box::new(Generic(self, id))), + } + } +} + +pub trait Content { + fn get_type(&self) -> Type; + + fn get_id(&self) -> u16; + + fn get_name(&self) -> &str; +} + +struct Generic(Type, u16); + +impl Content for Generic { + fn get_type(&self) -> Type { + self.0 + } + + fn get_id(&self) -> u16 { + self.1 + } + + fn get_name(&self) -> &str { + "<unknown>" + } +} diff --git a/mindus/src/data/autotile.rs b/src/data/autotile.rs index ef73554..92ef1b4 100644 --- a/mindus/src/data/autotile.rs +++ b/src/data/autotile.rs @@ -1,6 +1,6 @@ -use super::GridPos; use super::renderer::*; -use crate::block::{Block, Rotation, content::Type}; +use super::GridPos; +use crate::block::{Block, Rotation}; use bobbin_bits::U4; #[cfg(test)] @@ -24,7 +24,10 @@ macro_rules! conv { None }; ($dir:tt) => { - Some((&crate::block::CONVEYOR, crate::data::autotile::dir!($dir))) + Some(( + &crate::block::distribution::CONVEYOR, + crate::data::autotile::dir!($dir), + )) }; } #[cfg(test)] @@ -46,18 +49,16 @@ pub(crate) use define; #[cfg(test)] pub(crate) use dir; -pub type Cross = [Option<(&'static Block, Rotation)>; 4]; -pub type Corners = [Option<(&'static Block, Rotation)>; 4]; +pub type Cross<'l> = [Option<(&'l Block, Rotation)>; 4]; /// holds the 4 bordering blocks #[derive(Copy, Clone)] -pub struct RenderingContext { - pub cross: Cross, - pub corners: Corners, +pub struct RenderingContext<'l> { + pub cross: Cross<'l>, pub position: PositionContext, } /// holds positions -#[derive(Copy, Clone, Eq, PartialEq, Default)] +#[derive(Copy, Clone, Eq, PartialEq)] pub struct PositionContext { pub position: GridPos, pub width: usize, @@ -75,7 +76,7 @@ impl std::fmt::Debug for PositionContext { } #[cfg(test)] -fn print_crosses(v: Vec<Cross>, height: usize) -> String { +fn print_crosses(v: Vec<Cross<'_>>, height: usize) -> String { let mut s = String::new(); for c in v.chunks(height) { for c in c { @@ -91,7 +92,7 @@ fn print_crosses(v: Vec<Cross>, height: usize) -> String { s } -pub fn tile(ctx: &RenderingContext, name: &str, rot: Rotation, s: Scale) -> ImageHolder<4> { +pub fn tile(ctx: &RenderingContext<'_>, name: &str, rot: Rotation, s: Scale) -> ImageHolder<4> { mask2tile(mask(ctx, rot, name), rot, name, s) } @@ -113,9 +114,9 @@ pub fn mask2tile(mask: U4, rot: Rotation, name: &str, scale: Scale) -> ImageHold }, // from below B0010 => match rot { - Rotation::Left => p!("1-2"), // ┐ - Rotation::Right => p!("1-2-h"), // ┌ - Rotation::Up => p!("0-3"), // │ + Rotation::Left => p!("1-2"), // ┐ + Rotation::Right => p!("1-1"), // ┌ + Rotation::Up => p!("0-3"), // │ Rotation::Down => unreachable!(), }, // from bottom + left @@ -223,64 +224,24 @@ pub fn mask(ctx: &RenderingContext, rot: Rotation, n: &str) -> U4 { U4::from(x) } -pub fn nbors(corners: [Option<Type>; 4], cross: [Option<Type>; 4], t: Type) -> u8 { - let x = [ - cross[1], corners[3], cross[0], corners[2], cross[3], corners[0], cross[2], corners[1], - ]; - - use std::simd::prelude::*; - u8x8::from_array(x.map(|x| (x == Some(t)) as u8)) - .simd_eq(u8x8::splat(1)) - .to_bitmask() as u8 -} - -macro_rules! g { - ($name:literal, $($i:literal,)+) => { paste::paste! { [ - $(load!([<$name _ $i>]),)+ - ] }}; -} - -pub fn select(n: &str, mask: u8) -> [Image<&'static [u8], 4>; 3] { - macro_rules! autotiled { - ($($name:literal)+) => {{ paste::paste! { $(const [<$name:snake:upper>]: [[Image<&[u8], 4>; 3]; 256] = g![$name, -39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, -38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, -39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, -38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, - 3, 4, 3, 4, 15, 40, 15, 20, 3, 4, 3, 4, 15, 40, 15, 20, - 5, 28, 5, 28, 29, 10, 29, 23, 5, 28, 5, 28, 31, 11, 31, 32, - 3, 4, 3, 4, 15, 40, 15, 20, 3, 4, 3, 4, 15, 40, 15, 20, - 2, 30, 2, 30, 9, 46, 9, 22, 2, 30, 2, 30, 14, 44, 14, 6, -39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, -38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, -39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, -38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, - 3, 0, 3, 0, 15, 42, 15, 12, 3, 0, 3, 0, 15, 42, 15, 12, - 5, 8, 5, 8, 29, 35, 29, 33, 5, 8, 5, 8, 31, 34, 31, 7, - 3, 0, 3, 0, 15, 42, 15, 12, 3, 0, 3, 0, 15, 42, 15, 12, - 2, 1, 2, 1, 9, 45, 9, 19, 2, 1, 2, 1, 14, 18, 14, 13,];)+ match n { - $($name => { [<$name:snake:upper>][mask as usize] },)+ - x => unreachable!("{x}") - }}}}; -} - autotiled!("colored-floor" "colored-wall" - "metal-tiles-1" "metal-tiles-2" "metal-tiles-3" "metal-tiles-4" "metal-tiles-5""metal-tiles-6" "metal-tiles-7" "metal-tiles-8" "metal-tiles-9" "metal-tiles-10" "metal-tiles-11" "metal-tiles-12" "metal-tiles-13" - "metal-wall-1" "metal-wall-2" "metal-wall-3" - ) -} - pub trait RotationState { fn get_rotation(&self) -> Option<Rotation>; } -pub trait BlockState { - fn get_block(&self) -> Option<&'static Block>; +pub trait BlockState<'l> { + fn get_block(&'l self) -> Option<&'l Block>; +} +pub trait Crossable { + fn cross(&self, j: usize, c: &PositionContext) -> Cross; } #[test] fn test_cross() { + let mut reg = crate::block::BlockRegistry::default(); + crate::block::distribution::register(&mut reg); + let mut ss = super::schematic::SchematicSerializer(®); macro_rules! test { ($schem: literal => $($a:tt,$b:tt,$c:tt,$d:tt)*) => { - let s = crate::Schematic::deserialize_base64($schem).unwrap(); + let s = ss.deserialize_base64($schem).unwrap(); let mut c = vec![]; println!("{:#?}", s.blocks); for (position, _) in s.block_iter() { @@ -289,7 +250,7 @@ fn test_cross() { width: s.width, height: s.height, }; - c.push(s.cross(&pctx).0); + c.push(s.cross(&pctx)); } let n = s.tags.get("name").map_or("<unknown>", |x| &x); let cc: Vec<Cross> = vec![ @@ -401,7 +362,6 @@ fn test_mask() { width: 10, height: 10, }, - corners: Default::default(), cross: $cross, }, dir!($rot), diff --git a/mindus/src/data/base64.rs b/src/data/base64.rs index 303e9e0..303e9e0 100644 --- a/mindus/src/data/base64.rs +++ b/src/data/base64.rs diff --git a/src/data/command.rs b/src/data/command.rs new file mode 100644 index 0000000..7d5298c --- /dev/null +++ b/src/data/command.rs @@ -0,0 +1,7 @@ +use crate::content::numeric_enum; + +numeric_enum! { + pub enum UnitCommand for u8 | TryFromU8Error { + Move, Repair, Rebuild, Assist, Mine, Boost, + } +} diff --git a/mindus/src/data/dynamic.rs b/src/data/dynamic.rs index de8e511..344144b 100644 --- a/mindus/src/data/dynamic.rs +++ b/src/data/dynamic.rs @@ -3,7 +3,8 @@ use thiserror::Error; use crate::content; use crate::data::command::{self, UnitCommand}; -use crate::data::{self, DataRead, DataWrite, GridPos, Serializable}; +use crate::data::{self, DataRead, DataWrite, GridPos, Serializer}; +use crate::logic::LogicField; use crate::team::Team; macro_rules! datamaker { @@ -29,31 +30,6 @@ macro_rules! datamaker { } } )+ - - - #[derive(Clone, Copy, Debug, Eq, PartialEq)] - pub enum DynType { - Content, - Point2, - Vec2, - TechNode, - Empty, - $($k,)+ - } - - impl DynData { - #[must_use] - pub const fn get_type(&self) -> DynType { - match self { - Self::Empty => DynType::Empty, - Self::Point2(..) => DynType::Point2, - Self::Vec2(..) => DynType::Vec2, - Self::TechNode(..) => DynType::TechNode, - Self::Content(..) => DynType::Content, - $(Self::$k(..) => DynType::$k,)+ - } - } - } } } } @@ -67,6 +43,7 @@ datamaker! { Boolean(bool), Double(f64), Building(GridPos), + LogicField(LogicField), ByteArray(Vec<u8>), UnitCommand(UnitCommand), BoolArray(Vec<bool>), @@ -75,11 +52,67 @@ datamaker! { Team(Team), } -impl Serializable for DynData { +impl DynData { + #[must_use] + pub const fn get_type(&self) -> DynType { + match self { + Self::Empty => DynType::Empty, + Self::Int(..) => DynType::Int, + Self::Long(..) => DynType::Long, + Self::Float(..) => DynType::Float, + Self::String(..) => DynType::String, + Self::Content(..) => DynType::Content, + Self::IntArray(..) => DynType::IntArray, + Self::Point2(..) => DynType::Point2, + Self::Point2Array(..) => DynType::Point2Array, + Self::TechNode(..) => DynType::TechNode, + Self::Boolean(..) => DynType::Boolean, + Self::Double(..) => DynType::Double, + Self::Building(..) => DynType::Building, + Self::LogicField(..) => DynType::LogicField, + Self::ByteArray(..) => DynType::ByteArray, + Self::UnitCommand(..) => DynType::UnitCommand, + Self::BoolArray(..) => DynType::BoolArray, + Self::Unit(..) => DynType::Unit, + Self::Vec2Array(..) => DynType::Vec2Array, + Self::Vec2(..) => DynType::Vec2, + Self::Team(..) => DynType::Team, + } + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum DynType { + Empty, + Int, + Long, + Float, + String, + Content, + IntArray, + Point2, + Point2Array, + TechNode, + Boolean, + Double, + Building, + LogicField, + ByteArray, + UnitCommand, + BoolArray, + Unit, + Vec2Array, + Vec2, + Team, +} + +pub struct DynSerializer; + +impl Serializer<DynData> for DynSerializer { type ReadError = ReadError; type WriteError = WriteError; - fn deserialize(buff: &mut DataRead<'_>) -> Result<DynData, Self::ReadError> { + fn deserialize(&mut self, buff: &mut DataRead<'_>) -> Result<DynData, Self::ReadError> { match buff.read_u8()? { 0 => Ok(DynData::Empty), 1 => Ok(DynData::from(buff.read_i32()?)), @@ -127,6 +160,7 @@ impl Serializable for DynData { 10 => Ok(DynData::from(buff.read_bool()?)), 11 => Ok(DynData::from(buff.read_f64()?)), 12 => Ok(DynData::from(GridPos::from(buff.read_u32()?))), + 13 => Ok(DynData::from(LogicField::try_from(buff.read_u8()?)?)), 14 => { let len = buff.read_i32()?; let Ok(len) = usize::try_from(len) else { @@ -141,9 +175,10 @@ impl Serializable for DynData { let Ok(len) = usize::try_from(len) else { return Err(ReadError::BoolArrayLen(len)); }; - let mut result = vec![false; len]; - for item in result.iter_mut() { - *item = buff.read_bool()?; + let mut result = vec![]; + result.reserve(len); + for _ in 0..len { + result.push(buff.read_bool()?); } Ok(DynData::from(result)) } @@ -168,8 +203,12 @@ impl Serializable for DynData { } } - fn serialize(&self, buff: &mut DataWrite<'_>) -> Result<(), Self::WriteError> { - match self { + fn serialize( + &mut self, + buff: &mut DataWrite<'_>, + data: &DynData, + ) -> Result<(), Self::WriteError> { + match data { DynData::Empty => { buff.write_u8(0)?; Ok(()) @@ -255,6 +294,11 @@ impl Serializable for DynData { buff.write_u32(u32::from(*pos))?; Ok(()) } + DynData::LogicField(fld) => { + buff.write_u8(13)?; + buff.write_u8(u8::from(*fld))?; + Ok(()) + } DynData::ByteArray(arr) => { if arr.len() > i32::MAX as usize { return Err(WriteError::ByteArrayLen(arr.len())); @@ -324,6 +368,8 @@ pub enum ReadError { IntArrayLen(i16), #[error("point2 array too long ({0})")] Point2ArrayLen(i8), + #[error("invalid logic field ({0})")] + LogicField(#[from] crate::logic::TryFromU8Error), #[error("byte array too long ({0})")] ByteArrayLen(i32), #[error("unit command not found")] @@ -353,7 +399,7 @@ pub enum WriteError { #[cfg(test)] mod test { use super::*; - use crate::team::Team; + use crate::team::{CRUX, DERELICT, SHARDED}; macro_rules! _zero { ($tt:tt) => { @@ -370,7 +416,7 @@ mod test { let mut writer = DataWrite::default(); for (i, d) in input.iter().enumerate() { - assert_eq!(d.serialize(&mut writer), Ok(())); + assert_eq!(DynSerializer.serialize(&mut writer, d), Ok(())); positions[i] = writer.get_written().len(); } let written = writer.get_written(); @@ -378,7 +424,7 @@ mod test { let mut reader = DataRead::new(written); for (i, original) in input.iter().enumerate() { - match DynData::deserialize(&mut reader) + match DynSerializer.deserialize(&mut reader) { Ok(read) => assert_eq!(*original, read, "serialization of {original:?} became {read:?}"), e => assert!(false, "could not re-read {original:?} (at {i}), got {e:?}"), @@ -463,6 +509,12 @@ mod test { DynData::Building(GridPos(4444, 0xFE98)) ); make_dyn_test!( + reparse_logic, + DynData::LogicField(LogicField::Enabled), + DynData::LogicField(LogicField::Shoot), + DynData::LogicField(LogicField::Color) + ); + make_dyn_test!( reparse_byte_array, DynData::ByteArray(b"c\x00nstruct \xADditio\nal pylons".to_vec()), DynData::ByteArray(b"\x00\x01\xFE\xFF".to_vec()) @@ -491,8 +543,8 @@ mod test { ); make_dyn_test!( reparse_team, - DynData::Team(Team::SHARDED), - DynData::Team(Team::CRUX), - DynData::Team(Team::DERELICT) + DynData::Team(SHARDED), + DynData::Team(CRUX), + DynData::Team(DERELICT) ); } diff --git a/src/data/map.rs b/src/data/map.rs new file mode 100644 index 0000000..636e3f3 --- /dev/null +++ b/src/data/map.rs @@ -0,0 +1,696 @@ +//! the map module +//! ### format +//! note: utf = `len<u16>` + `utf8(read(len))` +//! +//! note: each section has a `u32` denoting its length +//! +//! key: `: T` and `x<T>` both mean read T, `iterate T` means iterate `read_T()` times +//! +//! ZLIB compressed stream contains: +//! - header: 4b = `MSCH` +//! - version: `u32` (should be 7) +//! - tag section `<u32>` +//! - 1 byte of idk (skip) +//! - string map (`u16` for map len, iterate each, read `utf`) +//! - content header section `<u32>`: +//! - iterate `i8` (should = `8`)' +//! - the type: `i8` (0: item, block: 1, liquid: 4, status: 5, unit: 6, weather: 7, sector: 9, planet: 13//! - item count: `u16` (item: 22, block: 412, liquid: 11, status: 21, unit: 66, weather: 6, sector: 35, planet: 7) +//! - these types all have their own modules: [`item`], [`content`], [`fluid`], [`modifier`], [`mod@unit`], [`weather`], [`sector`], [`planet`] +//! - iterate `u16` +//! - name: `utf` +//! - map section `<u32>` +//! - width: `u16`, height: `u16` +//! - floor and tiles: +//! - for `i` in `w * h` +//! - `x = i % w`, `y = i / w` +//! - floor id: `u16` +//! - overlay id: `u16` +//! - consecutives: `u8` +//! - iterate `(i + 1)..(i + 1 + consecutives)` +//! - `x = j % w`, `y = j / w` +//! - i += consecutives +//! - blocks +//! - for `i` in `w * h` +//! - block id: `u16` +//! - packed?: `i8` +//! - entity = `(packed & 1) not 0` +//! - data = `(packed & 2) not 0` +//! - if entity: central: `bool` +//! - if entity: +//! - if central: +//! - chunk len: `u16` +//! - if block == building: +//! - revision: `i8` +//! - [`read`] +//! - else skip `chunk len` +//! - or data +//! - data: `i8` +//! - else +//! - consecutives: `u8` +//! - iterate `(i + 1)..(i + 1 + consecutives)` +//! - same block +//! - i += consecutives +//! - entities section `<u32>` +//! - entity mapping +//! - iterate `u16` +//! - id: `i16`, name: `utf` +//! - team build plans +//! - for t in `teams<u32>` +//! - team = `team#<u32>` +//! - iterate `plans<u32>` +//! - x: `u16`, y: `u16`, rot: `u16`, id: `u16` +//! - o: `DynData` (refer to [`DynSerializer`]) +//! - world entities +//! - iterate `u32` +//! - len: `u16` +//! - type: `u8` +//! - if !mapping\[type\] +//! - skip(len - 1) +//! - continue +//! - id: `u32` +//! - entity read +use std::collections::HashMap; +use std::ops::{Index, IndexMut}; +use thiserror::Error; + +use crate::block::content::Type as BlockEnum; +use crate::block::{Block, BlockRegistry, Rotation, State}; +use crate::data::dynamic::DynSerializer; +use crate::data::renderer::*; +use crate::data::DataRead; +use crate::fluid::Type as Fluid; +use crate::item::{storage::Storage, Type as Item}; +use crate::team::{self, Team}; +#[cfg(doc)] +use crate::{block::content, data::*, fluid, item, modifier, unit}; + +use super::Serializer; +use crate::content::Content; +use crate::utils::image::ImageUtils; + +/// a tile in a map +#[derive(Clone)] +pub struct Tile<'l> { + pub floor: BlockEnum, + pub ore: BlockEnum, + build: Option<Build<'l>>, +} + +macro_rules! lo { + ($v:expr => [$(|)? $($k:literal $(|)?)+], $scale: ident) => { paste::paste! { + match $v { + $(BlockEnum::[<$k:camel>] => load!($k, $scale),)+ + n => unreachable!("{n:?}"), + } + } }; +} + +pub type EntityMapping = HashMap<u8, Box<dyn Content>>; +impl<'l> Tile<'l> { + #[must_use] + pub const fn new(floor: BlockEnum, ore: BlockEnum) -> Self { + Self { + floor, + ore, + build: None, + } + } + + fn set_block(&mut self, block: &'l Block) { + self.build = Some(Build { + block, + state: None, + items: Storage::new(), + liquids: Storage::new(), + rotation: Rotation::Up, + team: crate::team::SHARDED, + data: 0, + }); + } + + #[must_use] + pub const fn build(&self) -> Option<&Build<'l>> { + self.build.as_ref() + } + + /// size of this tile + /// + /// ._. + /// + /// dont think about it too much + #[must_use] + #[inline] + pub fn size(&self) -> u8 { + self.build.as_ref().map_or(1, |v| v.block.get_size()) + } + + #[inline] + pub(crate) fn floor(&self, s: Scale) -> ImageHolder<4> { + lo!(self.floor => [ + | "darksand" + | "sand-floor" + | "dacite" + | "dirt" + | "arkycite-floor" + | "basalt" + | "moss" + | "mud" + | "grass" + | "ice-snow" | "snow" | "salt" | "ice" + | "hotrock" | "char" | "magmarock" + | "shale" + | "metal-floor" | "metal-floor-2" | "metal-floor-3" | "metal-floor-4" | "metal-floor-5" | "metal-floor-damaged" + | "dark-panel-1" | "dark-panel-2" | "dark-panel-3" | "dark-panel-4" | "dark-panel-5" | "dark-panel-6" + | "darksand-tainted-water" | "darksand-water" | "deep-tainted-water" | "deep-water" | "sand-water" | "shallow-water" | "tainted-water" + | "tar" | "pooled-cryofluid" | "molten-slag" + | "space" + | "stone" + | "bluemat" + | "ferric-craters" + | "beryllic-stone" + | "rhyolite" | "rough-rhyolite" | "rhyolite-crater" | "rhyolite-vent" + | "core-zone" + | "crater-stone" + | "redmat" + | "red-ice" + | "spore-moss" + | "regolith" + | "ferric-stone" + | "arkyic-stone" | "arkyic-vent" + | "yellow-stone" | "yellow-stone-plates" | "yellow-stone-vent" + | "red-stone" | "red-stone-vent" | "dense-red-stone" + | "carbon-stone" | "carbon-vent" + | "crystal-floor" | "crystalline-stone" | "crystalline-vent" + | "empty"], s) + } + + #[must_use] + #[inline] + pub(crate) fn ore(&self, s: Scale) -> ImageHolder<4> { + lo!(self.ore => ["ore-copper" | "ore-beryllium" | "ore-lead" | "ore-scrap" | "ore-coal" | "ore-thorium" | "ore-titanium" | "ore-tungsten" | "pebbles" | "tendrils" | "ore-wall-tungsten" | "ore-wall-beryllium" | "ore-wall-thorium" | "spawn" | "ore-crystal-thorium"], s) + } + + #[must_use] + #[inline] + pub fn has_ore(&self) -> bool { + self.ore != BlockEnum::Air + } + + /// Draw the floor of this tile + #[must_use] + pub fn floor_image(&self, s: Scale) -> ImageHolder<4> { + let mut floor = self.floor(s); + if self.has_ore() { + unsafe { floor.overlay(&self.ore(s)) }; + } + floor + } + + /// Draw this tiles build. + #[must_use] + #[inline] + pub fn build_image(&self, context: Option<&RenderingContext>, s: Scale) -> ImageHolder<4> { + // building covers floore + let Some(b) = &self.build else { + unreachable!(); + }; + b.image(context, s) + } +} + +impl std::fmt::Debug for Tile<'_> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "Tile@{}{}{}", + self.floor.get_name(), + if self.ore != BlockEnum::Air { + format!("+{}", self.ore.get_name()) + } else { + String::new() + }, + if let Some(build) = &self.build { + format!(":{}", build.block.name()) + } else { + String::new() + } + ) + } +} + +impl<'l> BlockState<'l> for Tile<'l> { + fn get_block(&self) -> Option<&'l Block> { + Some(self.build()?.block) + } +} + +impl RotationState for Tile<'_> { + fn get_rotation(&self) -> Option<Rotation> { + Some(self.build()?.rotation) + } +} + +impl RotationState for Option<Tile<'_>> { + fn get_rotation(&self) -> Option<Rotation> { + self.as_ref().unwrap().get_rotation() + } +} + +impl<'l> BlockState<'l> for Option<Tile<'_>> { + fn get_block(&'l self) -> Option<&'l Block> { + self.as_ref().unwrap().get_block() + } +} + +/// a build on a tile in a map +#[derive(Clone)] +pub struct Build<'l> { + pub block: &'l Block, + pub items: Storage<Item>, + pub liquids: Storage<Fluid>, + pub state: Option<State>, + // pub health: f32, + pub rotation: Rotation, + pub team: Team, + pub data: i8, +} + +impl std::fmt::Debug for Build<'_> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "Build<{block}>", block = self.block.name(),) + } +} + +impl<'l> Build<'l> { + #[must_use] + pub fn new(block: &'l Block) -> Build<'l> { + Self { + block, + items: Storage::default(), + liquids: Storage::default(), + state: None, + rotation: Rotation::Up, + team: team::SHARDED, + data: 0, + } + } + + fn image(&self, context: Option<&RenderingContext>, s: Scale) -> ImageHolder<4> { + self.block + .image(self.state.as_ref(), context, self.rotation, s) + } + + #[must_use] + pub const fn name(&self) -> &str { + self.block.name() + } + + pub fn read( + &mut self, + buff: &mut DataRead<'_>, + reg: &BlockRegistry, + map: &EntityMapping, + ) -> Result<(), ReadError> { + // health + let _ = buff.read_f32()?; + let rot = buff.read_i8()? as i16; + // team + let _ = buff.read_i8()?; + self.rotation = Rotation::try_from((rot & 127) as u8).unwrap_or(Rotation::Up); + let mut mask = 0; + let mut version = 0; + if rot & 128 != 0 { + version = buff.read_u8()?; + if version < 3 { + return Err(ReadError::Version(version)); + } + buff.skip(1)?; + mask = buff.read_u8()?; + } + + if mask & 1 != 0 { + read_items(buff, &mut self.items)?; + } + if mask & 2 != 0 { + read_power(buff)?; + } + if mask & 4 != 0 { + read_liquids(buff, &mut self.liquids)?; + } + // "efficiency"? + buff.skip(2)?; + if version == 4 { + // visible flags for fog + buff.skip(4)?; + } + // "overridden by subclasses" + self.block.read(self, reg, map, buff)?; + // implementation not complete, simply error, causing the remaining bytes in the chunk to be skipped (TODO finish impl) + Err(ReadError::Version(0x0)) + // Ok(()) + } +} + +/// format: +/// - iterate [`u16`] +/// - item: [`u16`] as [`Item`] +/// - amount: [`u32`] +/// +fn read_items(from: &mut DataRead, to: &mut Storage<Item>) -> Result<(), ReadError> { + to.clear(); + for _ in 0..from.read_u16()? { + let item = from.read_u16()?; + let amount = from.read_u32()?; + if let Ok(item) = Item::try_from(item) { + to.set(item, amount); + } + } + Ok(()) +} + +/// format: +/// - iterate [`u16`] +/// - liquid: [`u16`] as [`Fluid`] +/// - amount: [`f32`] +fn read_liquids(from: &mut DataRead, to: &mut Storage<Fluid>) -> Result<(), ReadError> { + to.clear(); + for _ in 0..from.read_u16()? { + let fluid = from.read_u16()?; + let amount = from.read_f32()?; + if let Ok(fluid) = Fluid::try_from(fluid) { + to.set(fluid, (amount * 100.0) as u32); + } + } + Ok(()) +} + +/// format: +/// - iterate [`u16`] +/// - link: [`i32`] +/// - status: [`f32`] +fn read_power(from: &mut DataRead) -> Result<(), ReadError> { + let n = from.read_u16()? as usize; + from.skip((n + 1) * 4)?; + Ok(()) +} + +#[test] +fn test_read_items() { + let mut s = Storage::new(); + read_items( + &mut DataRead::new(&[ + 0, 6, 0, 0, 0, 0, 2, 187, 0, 1, 0, 0, 1, 154, 0, 2, 0, 0, 15, 160, 0, 3, 0, 0, 0, 235, + 0, 6, 0, 0, 1, 46, 0, 12, 0, 0, 1, 81, 255, 255, + ]), + &mut s, + ) + .unwrap(); + assert!(s.get_total() == 5983); +} + +#[test] +fn test_read_liquids() { + let mut s = Storage::new(); + read_liquids( + &mut DataRead::new(&[0, 1, 0, 0, 67, 111, 247, 126, 255, 255]), + &mut s, + ) + .unwrap(); + assert!(s.get(Fluid::Water) == 23996); +} + +/// a map. +/// ## Does not support serialization yet! +#[derive(Debug)] +pub struct Map<'l> { + pub width: usize, + pub height: usize, + pub tags: HashMap<String, String>, + /// row major 2d array + /// ```rs + /// (0, 0), (1, 0), (2, 0) + /// (0, 1), (1, 1), (2, 1) + /// (0, 2), (1, 2), (2, 2) + /// ``` + pub tiles: Vec<Tile<'l>>, +} + +macro_rules! cond { + ($cond: expr, $do: expr) => { + if $cond { + None + } else { + $do + } + }; +} + +impl<'l> Crossable for Map<'l> { + // N + // cond!(pos.position.1 >= (pos.height - 1) as u16, get(j + 1)), + // // E + // cond!( + // pos.position.0 >= (pos.height - 1) as u16, + // get(j + pos.height) + // ), + // // S + // cond!( + // pos.position.1 == 0 || pos.position.1 >= pos.height as u16, + // cond!(pos.position.1 >= (pos.height - 1), get(j + 1)), + // // E + // cond!(pos.position.0 >= (pos.height - 1), get(j + pos.height)), + // // S + // cond!( + // pos.position.1 == 0 || pos.position.1 >= pos.height, + // get(j - 1) + // ), + // // W + // cond!(j < pos.height, get(j - pos.height)), + fn cross(&self, j: usize, c: &PositionContext) -> Cross { + let get = |i| { + let b = &self[i]; + Some((b.get_block()?, b.get_rotation()?)) + }; + [ + cond![ + c.position.1 == 0 || c.position.1 >= c.height, + get(j + self.height) + ], + cond![c.position.0 >= (c.height - 1), get(j + 1)], + cond![c.position.1 >= (c.height - 1), get(j - self.width)], + cond![j < c.height, get(j - 1)], + ] + } +} + +impl<'l> Map<'l> { + #[must_use] + pub fn new(width: usize, height: usize, tags: HashMap<String, String>) -> Self { + Self { + tiles: vec![Tile::new(BlockEnum::Air, BlockEnum::Air); width * height], + height, + width, + tags, + } + } +} + +impl<'l> Index<usize> for Map<'l> { + type Output = Tile<'l>; + fn index(&self, index: usize) -> &Self::Output { + &self.tiles[index] + } +} + +impl<'l> IndexMut<usize> for Map<'l> { + fn index_mut(&mut self, index: usize) -> &mut Self::Output { + &mut self.tiles[index] + } +} + +const MAP_HEADER: [u8; 4] = [b'M', b'S', b'A', b'V']; + +/// error occurring when reading a map fails +#[derive(Debug, Error)] +pub enum ReadError { + #[error("failed to read from buffer")] + Read(#[from] super::ReadError), + #[error(transparent)] + Decompress(#[from] super::DecompressError), + #[error("incorrect header ({0:?})")] + Header([u8; 4]), + #[error("unsupported version ({0})")] + Version(u8), + #[error("unknown block {0:?}")] + NoSuchBlock(String), + #[error("failed to read block data")] + ReadState(#[from] super::dynamic::ReadError), +} + +/// serde map +pub struct MapSerializer<'l>(pub &'l BlockRegistry<'l>); +impl<'l> Serializer<Map<'l>> for MapSerializer<'l> { + type ReadError = ReadError; + type WriteError = (); + /// deserialize a map + /// + /// notes: + /// - does not deserialize data + /// - does not deserialize entities + fn deserialize(&mut self, buff: &mut DataRead<'_>) -> Result<Map<'l>, Self::ReadError> { + let buff = buff.deflate()?; + let mut buff = DataRead::new(&buff); + { + let mut b = [0; 4]; + buff.read_bytes(&mut b)?; + if b != MAP_HEADER { + return Err(ReadError::Header(b)); + } + } + let version = buff.read_u32()?; + if version != 7 { + return Err(ReadError::Version(version.try_into().unwrap_or(0))); + } + let mut tags = HashMap::new(); + buff.read_chunk(true, |buff| { + buff.skip(1)?; + for _ in 0..buff.read_u8()? { + let key = buff.read_utf()?; + let value = buff.read_utf()?; + tags.insert(key.to_owned(), value.to_owned()); + } + Ok::<(), super::ReadError>(()) + })?; + // we skip the content header (just keep the respective modules updated) + buff.skip_chunk()?; + // map section + let mut w = 0; + let mut h = 0; + let mut m = None; + buff.read_chunk(true, |buff| { + w = buff.read_u16()? as usize; + h = buff.read_u16()? as usize; + let mut map = Map::new(w, h, tags); + let count = w * h; + let mut i = 0; + while i < count { + let floor_id = buff.read_u16()?; + let overlay_id = buff.read_u16()?; + let floor = BlockEnum::try_from(floor_id).unwrap_or(BlockEnum::Stone); + let ore = BlockEnum::try_from(overlay_id).unwrap_or(BlockEnum::Air); + map[i] = Tile::new(floor, ore); + let consecutives = buff.read_u8()? as usize; + if consecutives > 0 { + for i in (i + 1)..(i + 1 + consecutives) { + map[i] = Tile::new(floor, ore); + } + i += consecutives; + } + i += 1; + } + let mut i = 0usize; + while i < count { + let block_id = buff.read_u16()?; + let packed = buff.read_u8()?; + let entity = (packed & 1) != 0; + let data = (packed & 2) != 0; + let central = if entity { buff.read_bool()? } else { false }; + let block = BlockEnum::try_from(block_id) + .map_err(|_| ReadError::NoSuchBlock(block_id.to_string()))?; + let block = if block == BlockEnum::Air { + None + } else { + Some( + self.0 + .get(block.get_name()) + .ok_or_else(|| ReadError::NoSuchBlock(block.to_string()))?, + ) + }; + if central { + if let Some(block) = block { + map[i].set_block(block); + } + } + if entity { + if central { + let mut output = [0u8; 2]; + output.copy_from_slice(&buff.data[..2]); + let _ = buff.read_chunk(false, |buff| { + #[cfg(debug_assertions)] + println!("reading {:?}", map[i].build.as_ref().unwrap()); + let _ = buff.read_i8()?; + + map[i] + .build + .as_mut() + .unwrap() + // map not initialized yet + .read(buff, self.0, &HashMap::new())?; + Ok::<(), ReadError>(()) + }); + } + } else if data { + if let Some(block) = block { + map[i].set_block(block); + } + map[i].build.as_mut().unwrap().data = buff.read_i8()?; + } else { + let consecutives = buff.read_u8()? as usize; + for i in i..=i + consecutives { + if let Some(block) = block { + map.tiles[i].set_block(block); + } + } + i += consecutives; + } + i += 1; + } + m = Some(map); + Ok::<(), ReadError>(()) + })?; + let mut mapping = EntityMapping::new(); + buff.read_chunk(true, |buff| { + // read entity mapping (SaveVersion.java#436) + for _ in 0..buff.read_u16()? { + let id = buff.read_u16()? as u8; + let nam = buff.read_utf()?; + dbg!(nam); + mapping.insert(id, Box::new(Item::Copper)); + // mapping.push(content::Type::get_name(nam)); + } + // read team block plans (ghosts) (SaveVersion.java#389) + for _ in 0..buff.read_u32()? { + buff.skip(4)?; + for _ in 0..buff.read_u32()? { + buff.skip(8usize)?; + let _ = DynSerializer::deserialize(&mut DynSerializer, buff)?; + } + } + // read world entities (#412). eg units + for _ in 0..buff.read_u32()? { + let len = buff.read_u16()? as usize; + let ty = buff.read_u8()?; + if !mapping.contains_key(&ty) { + buff.skip(len - 1)?; + continue; + } + let _id = buff.read_u32()?; + // TODO + } + Ok::<(), ReadError>(()) + })?; + // skip custom chunks + buff.skip_chunk()?; + Ok(m.unwrap()) + } + + /// serialize a map (todo) + /// panics: always + fn serialize( + &mut self, + _: &mut super::DataWrite<'_>, + _: &Map<'_>, + ) -> Result<(), Self::WriteError> { + todo!() + } +} diff --git a/src/data/mod.rs b/src/data/mod.rs new file mode 100644 index 0000000..0583ea4 --- /dev/null +++ b/src/data/mod.rs @@ -0,0 +1,530 @@ +//! all the IO +use flate2::{ + Compress, CompressError as CError, Compression, Decompress, DecompressError as DError, + FlushCompress, FlushDecompress, Status, +}; +use std::collections::HashMap; +use std::error::Error; +use std::fmt; +use std::str::Utf8Error; +use thiserror::Error; + +pub(crate) mod autotile; +mod base64; +pub mod command; +pub mod dynamic; +pub mod map; +pub mod planet; +pub mod renderer; +pub mod schematic; +pub mod sector; +pub mod weather; + +#[derive(Debug)] +pub struct DataRead<'d> { + pub(crate) data: &'d [u8], + // used with read_chunk + read: usize, +} + +impl fmt::Display for DataRead<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", String::from_utf8_lossy(self.data)) + } +} + +macro_rules! make_read { + ($name:ident, $type:ty) => { + pub fn $name(&mut self) -> Result<$type, ReadError> { + const LEN: usize = std::mem::size_of::<$type>(); + if self.data.len() < LEN { + return Err(ReadError::Underflow { + need: LEN, + have: self.data.len(), + }); + } + let mut output = [0u8; LEN]; + output.copy_from_slice(&self.data[..LEN]); + self.data = &self.data[LEN..]; + self.read += LEN; + Ok(<$type>::from_be_bytes(output)) + } + }; +} + +impl<'d> DataRead<'d> { + #[must_use] + pub const fn new(data: &'d [u8]) -> Self { + Self { data, read: 0 } + } + + pub fn read_bool(&mut self) -> Result<bool, ReadError> { + Ok(self.read_u8()? != 0) + } + + make_read!(read_u8, u8); + make_read!(read_i8, i8); + make_read!(read_u16, u16); + make_read!(read_i16, i16); + make_read!(read_u32, u32); + make_read!(read_i32, i32); + make_read!(read_f32, f32); + make_read!(read_u64, u64); + make_read!(read_i64, i64); + make_read!(read_f64, f64); + + pub fn read_utf(&mut self) -> Result<&'d str, ReadError> { + if self.data.len() < 2 { + return Err(ReadError::Underflow { + need: 2, + have: self.data.len(), + }); + } + let len = self.read_u16()?; + let end = len as usize; + if self.data.len() < end { + return Err(ReadError::Underflow { + need: end, + have: self.data.len(), + }); + } + let result = std::str::from_utf8(&self.data[..end])?; + self.data = &self.data[end..]; + self.read += end; + Ok(result) + } + + pub fn read_bytes(&mut self, dst: &mut [u8]) -> Result<(), ReadError> { + if self.data.len() < dst.len() { + return Err(ReadError::Underflow { + need: dst.len(), + have: self.data.len(), + }); + } + dst.copy_from_slice(&self.data[..dst.len()]); + self.data = &self.data[dst.len()..]; + self.read += dst.len(); + Ok(()) + } + + pub fn skip(&mut self, n: usize) -> Result<(), ReadError> { + if self.data.len() < n { + return Err(ReadError::Underflow { + need: n, + have: self.data.len(), + }); + } + self.data = &self.data[n..]; + self.read += n; + Ok(()) + } + + pub fn skip_chunk(&mut self) -> Result<usize, ReadError> { + let len = self.read_u32()? as usize; + self.skip(len)?; + Ok(len) + } + + pub fn read_chunk<E>( + &mut self, + big: bool, + f: impl FnOnce(&mut DataRead) -> Result<(), E>, + ) -> Result<(), E> + where + E: Error + From<ReadError>, + { + let len = if big { + self.read_u32()? as usize + } else { + self.read_u16()? as usize + }; + self.read = 0; + let r = f(self); + match r { + Err(e) => { + // skip this chunk + assert!( + len >= self.read, + "overread; supposed to read {len}; read {}", + self.read + ); + let n = len - self.read; + if n != 0 { + #[cfg(debug_assertions)] + println!( + "supposed to read {len}; read {} - skipping excess", + self.read + ); + self.skip(n)?; + }; + Err(e) + } + Ok(_) => Ok(()), + } + } + + pub fn read_vec(&mut self, dst: &mut Vec<u8>, len: usize) -> Result<(), ReadError> { + if self.data.len() < len { + return Err(ReadError::Underflow { + need: len, + have: self.data.len(), + }); + } + dst.extend_from_slice(&self.data[..len]); + self.data = &self.data[len..]; + self.read += len; + Ok(()) + } + + pub fn read_map(&mut self, dst: &mut HashMap<String, String>) -> Result<(), ReadError> { + let n = self.read_u8()?; + for _ in 0..n { + let key = self.read_utf()?; + let value = self.read_utf()?; + dst.insert(key.to_owned(), value.to_owned()); + } + Ok(()) + } + + pub fn deflate(&mut self) -> Result<Vec<u8>, DecompressError> { + let mut dec = Decompress::new(true); + let mut raw = Vec::<u8>::new(); + raw.reserve(1024); + loop { + let t_in = dec.total_in(); + let t_out = dec.total_out(); + let res = dec.decompress_vec(self.data, &mut raw, FlushDecompress::Finish)?; + if dec.total_in() > t_in { + // we have to advance input every time, decompress_vec only knows the output position + self.data = &self.data[(dec.total_in() - t_in) as usize..]; + } + match res { + // there's no more input (and the flush mode says so), we need to reserve additional space + Status::Ok | Status::BufError => (), + // input was already at the end, so this is referring to the output + Status::StreamEnd => break, + } + if dec.total_in() == t_in && dec.total_out() == t_out { + // protect against looping forever + return Err(DecompressError::DecompressStall); + } + raw.reserve(1024); + } + assert_eq!(dec.total_out() as usize, raw.len()); + self.read = 0; + Ok(raw) + } +} + +#[derive(Debug, Error)] +pub enum DecompressError { + #[error("zlib decompression failed")] + Decompress(#[from] DError), + #[error("decompressor stalled before completion")] + DecompressStall, +} + +#[derive(Debug, Error)] +pub enum ReadError { + #[error("buffer underflow (expected {need} but got {have})")] + Underflow { need: usize, have: usize }, + #[error("expected {0}")] + Expected(&'static str), + #[error("malformed utf8 in string")] + Utf8 { + #[from] + source: Utf8Error, + }, +} + +impl PartialEq for ReadError { + fn eq(&self, _: &Self) -> bool { + false + } +} + +enum WriteBuff<'d> { + // unlike the DataRead want to access the written region after + Ref { raw: &'d mut [u8], pos: usize }, + Vec(Vec<u8>), +} + +impl<'d> WriteBuff<'d> { + fn check_capacity(&self, need: usize) -> Result<(), WriteError> { + match self { + Self::Ref { raw, pos } if raw.len() - pos < need => Err(WriteError::Overflow { + need, + have: raw.len() - pos, + }), + _ => Ok(()), + } + } + + fn write(&mut self, data: &[u8]) { + match self { + Self::Ref { raw, pos } => { + let end = *pos + data.len(); + raw[*pos..end].copy_from_slice(data); + *pos += data.len(); + } + Self::Vec(v) => v.extend_from_slice(data), + } + } +} + +pub struct DataWrite<'d> { + data: WriteBuff<'d>, +} + +macro_rules! make_write { + ($name:ident, $type:ty) => { + pub fn $name(&mut self, val: $type) -> Result<(), WriteError> { + const LEN: usize = std::mem::size_of::<$type>(); + self.data.check_capacity(LEN)?; + self.data.write(&<$type>::to_be_bytes(val)); + Ok(()) + } + }; +} + +impl<'d> DataWrite<'d> { + pub fn write_bool(&mut self, val: bool) -> Result<(), WriteError> { + self.write_u8(u8::from(val)) + } + + make_write!(write_u8, u8); + make_write!(write_i8, i8); + make_write!(write_u16, u16); + make_write!(write_i16, i16); + make_write!(write_u32, u32); + make_write!(write_i32, i32); + make_write!(write_f32, f32); + make_write!(write_u64, u64); + make_write!(write_i64, i64); + make_write!(write_f64, f64); + + pub fn write_utf(&mut self, val: &str) -> Result<(), WriteError> { + if val.len() > u16::MAX as usize { + return Err(WriteError::TooLong { len: val.len() }); + } + self.data.check_capacity(2 + val.len())?; + self.data.write(&u16::to_be_bytes(val.len() as u16)); + self.data.write(val.as_bytes()); + Ok(()) + } + + pub fn write_bytes(&mut self, val: &[u8]) -> Result<(), WriteError> { + self.data.check_capacity(val.len())?; + self.data.write(val); + Ok(()) + } + + #[must_use] + pub const fn is_owned(&self) -> bool { + matches!(self.data, WriteBuff::Vec(..)) + } + + #[must_use] + pub fn get_written(&self) -> &[u8] { + match &self.data { + WriteBuff::Ref { raw, pos } => &raw[..*pos], + WriteBuff::Vec(v) => v, + } + } + + /// eat this datawrite + /// + /// panics if ref write buffer + #[must_use] + pub fn consume(self) -> Vec<u8> { + match self.data { + WriteBuff::Vec(v) => v, + WriteBuff::Ref { .. } => unreachable!(), + } + } + + pub fn inflate(self, to: &mut DataWrite) -> Result<(), CompressError> { + // compress into the provided buffer + let WriteBuff::Vec(raw) = self.data else { + unreachable!("write buffer not owned") + }; + let mut comp = Compress::new(Compression::default(), true); + // compress the immediate buffer into a temp buffer to copy it to buff? no thanks + match to.data { + WriteBuff::Ref { + raw: ref mut dst, + ref mut pos, + } => { + match comp.compress(&raw, &mut dst[*pos..], FlushCompress::Finish)? { + // there's no more input (and the flush mode says so), but we can't resize the output + Status::Ok | Status::BufError => { + return Err(CompressError::CompressEof( + raw.len() - comp.total_in() as usize, + )) + } + Status::StreamEnd => (), + } + } + WriteBuff::Vec(ref mut dst) => { + let mut input = raw.as_ref(); + dst.reserve(1024); + loop { + let t_in = comp.total_in(); + let t_out = comp.total_out(); + let res = comp.compress_vec(input, dst, FlushCompress::Finish)?; + if comp.total_in() > t_in { + // we have to advance input every time, compress_vec only knows the output position + input = &input[(comp.total_in() - t_in) as usize..]; + } + match res { + // there's no more input (and the flush mode says so), we need to reserve additional space + Status::Ok | Status::BufError => (), + // input was already at the end, so this is referring to the output + Status::StreamEnd => break, + } + if comp.total_in() == t_in && comp.total_out() == t_out { + // protect against looping forever + return Err(CompressError::CompressStall); + } + dst.reserve(1024); + } + } + } + assert_eq!(comp.total_in() as usize, raw.len()); + Ok(()) + } +} + +impl Default for DataWrite<'static> { + fn default() -> Self { + Self { + data: WriteBuff::Vec(Vec::new()), + } + } +} + +#[derive(Debug, Error)] +pub enum CompressError { + #[error(transparent)] + Compress(#[from] CError), + #[error("compression overflow with {0} bytes of input remaining")] + CompressEof(usize), + #[error("compressor stalled before completion")] + CompressStall, +} + +#[derive(Debug, Error)] +pub enum WriteError { + #[error("buffer overflow (expected {need} but got {have})")] + Overflow { need: usize, have: usize }, + #[error("string too long ({len} bytes of {})", u16::MAX)] + TooLong { len: usize }, +} + +impl PartialEq for WriteError { + fn eq(&self, _: &Self) -> bool { + false + } +} + +impl<'d> From<&'d mut [u8]> for DataWrite<'d> { + fn from(value: &'d mut [u8]) -> Self { + Self { + data: WriteBuff::Ref { raw: value, pos: 0 }, + } + } +} + +impl From<Vec<u8>> for DataWrite<'static> { + fn from(value: Vec<u8>) -> Self { + Self { + data: WriteBuff::Vec(value), + } + } +} + +impl<'d> TryFrom<DataWrite<'d>> for Vec<u8> { + type Error = (); + + fn try_from(value: DataWrite<'d>) -> Result<Self, Self::Error> { + match value.data { + WriteBuff::Vec(v) => Ok(v), + WriteBuff::Ref { .. } => Err(()), + } + } +} +/// basic serialization/deserialization functions +pub trait Serializer<D> { + type ReadError; + type WriteError; + + fn deserialize(&mut self, buff: &mut DataRead<'_>) -> Result<D, Self::ReadError>; + + fn serialize(&mut self, buff: &mut DataWrite<'_>, data: &D) -> Result<(), Self::WriteError>; +} + +#[derive(Clone, Copy, Eq, PartialEq)] +pub struct GridPos(pub usize, pub usize); + +impl From<u32> for GridPos { + fn from(value: u32) -> Self { + GridPos((value >> 16) as u16 as usize, value as u16 as usize) + } +} + +impl From<GridPos> for u32 { + /// ``` + /// # use mindus::data::GridPos; + /// assert_eq!(GridPos::from(u32::from(GridPos(1000, 5))), GridPos(1000, 5)); + /// ``` + fn from(value: GridPos) -> Self { + ((value.0 << 16) | value.1) as u32 + } +} + +impl fmt::Debug for GridPos { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "({0}, {1})", self.0, self.1) + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn read() { + let mut read = DataRead::new("Thé qûick ઉrown fox 🦘 over\0\rthe lazy dog.".as_bytes()); + assert_eq!(read.read_u8(), Ok(84)); + assert_eq!(read.read_i8(), Ok(104)); + assert_eq!(read.read_i8(), Ok(-61)); + assert_eq!(read.read_u16(), Ok(43296)); + assert_eq!(read.read_i16(), Ok(29123)); + assert_eq!(read.read_i16(), Ok(-17559)); + assert_eq!(read.read_i32(), Ok(1_667_965_152)); + assert_eq!(read.read_i32(), Ok(-1_433_832_849)); + assert_eq!(read.read_i64(), Ok(8_605_851_562_280_493_296)); + assert_eq!(read.read_i64(), Ok(-6_942_694_510_468_635_278)); + assert_eq!(read.read_utf(), Ok("the lazy dog.")); + } + + #[test] + fn write() { + let mut write = DataWrite::default(); + assert_eq!(write.write_u8(84), Ok(())); + assert_eq!(write.write_i8(104), Ok(())); + assert_eq!(write.write_i8(-61), Ok(())); + assert_eq!(write.write_u16(43296), Ok(())); + assert_eq!(write.write_i16(29123), Ok(())); + assert_eq!(write.write_i16(-17559), Ok(())); + assert_eq!(write.write_i32(1_667_965_152), Ok(())); + assert_eq!(write.write_i32(-1_433_832_849), Ok(())); + assert_eq!(write.write_i64(8_605_851_562_280_493_296), Ok(())); + assert_eq!(write.write_i64(-6_942_694_510_468_635_278), Ok(())); + assert_eq!(write.write_utf("the lazy dog."), Ok(())); + assert_eq!( + write.get_written(), + "Thé qûick ઉrown fox 🦘 over\0\rthe lazy dog.".as_bytes() + ); + } +} diff --git a/mindus/src/data/planet.rs b/src/data/planet.rs index ff20bcd..ff20bcd 100644 --- a/mindus/src/data/planet.rs +++ b/src/data/planet.rs diff --git a/src/data/renderer.rs b/src/data/renderer.rs new file mode 100644 index 0000000..4bbcbe7 --- /dev/null +++ b/src/data/renderer.rs @@ -0,0 +1,296 @@ +//! schematic drawing +pub(crate) use super::autotile::*; +use super::schematic::Schematic; +use super::GridPos; +use crate::block::Rotation; +pub(crate) use crate::utils::{Image, ImageHolder, ImageUtils, Overlay, Repeat}; +use crate::Map; +include!(concat!(env!("OUT_DIR"), "/full.rs")); +include!(concat!(env!("OUT_DIR"), "/quar.rs")); +include!(concat!(env!("OUT_DIR"), "/eigh.rs")); + +#[derive(Debug, Copy, Clone)] +#[repr(u8)] +pub enum Scale { + Full, + // Half, + Quarter, + Eigth, +} + +impl Scale { + #[must_use] + pub const fn px(self) -> u8 { + match self { + Self::Full => 32, + Self::Quarter => 32 / 4, + Self::Eigth => 32 / 8, + } + } +} + +impl std::ops::Mul<u32> for Scale { + type Output = u32; + fn mul(self, rhs: u32) -> u32 { + self.px() as u32 * rhs + } +} + +#[macro_export] +macro_rules! load { + ("empty", $scale:expr) => { + ImageHolder::from(match $scale { + $crate::data::renderer::Scale::Quarter => &$crate::data::renderer::quar::EMPTY, + $crate::data::renderer::Scale::Eigth => &$crate::data::renderer::eigh::EMPTY, + $crate::data::renderer::Scale::Full => &$crate::data::renderer::full::EMPTY, + }.copy()) + }; + ($name:literal, $scale:expr) => { paste::paste! { + ImageHolder::from(match $scale { + $crate::data::renderer::Scale::Quarter => &$crate::data::renderer::quar::[<$name:snake:upper>], + $crate::data::renderer::Scale::Eigth => &$crate::data::renderer::eigh::[<$name:snake:upper>], + $crate::data::renderer::Scale::Full => &$crate::data::renderer::full::[<$name:snake:upper>], + }.copy()) + } }; + ($name: literal) => { paste::paste! { + [$crate::data::renderer::full::[<$name:snake:upper>].copy(), $crate::data::renderer::quar::[<$name:snake:upper>].copy(), $crate::data::renderer::eigh::[<$name:snake:upper>].copy()] + } }; + (from $v:ident which is [$($k:literal $(|)?)+], $scale: ident) => { + $crate::data::renderer::load!($scale -> match $v { + $($k => $k,)+ + }) + }; + // turn load!(s -> match x { "v" => "y" }) into match x { "v" => load!("y", s) } + ($scale:ident -> match $v:ident { $($k:pat => $nam:literal $(,)?)+ }) => { + match $v { + $($k => $crate::data::renderer::load!($nam, $scale),)+ + #[allow(unreachable_patterns)] + n => unreachable!("{n:?}"), + } + }; + (concat $x:literal => $v:ident which is [$($k:literal $(|)?)+], $scale: ident) => { paste::paste! { + match $v { + $($k => + ImageHolder::from(match $scale { + $crate::data::renderer::Scale::Quarter => &$crate::data::renderer::quar::[<$k:snake:upper _ $x:snake:upper>], + $crate::data::renderer::Scale::Eigth => &$crate::data::renderer::eigh::[<$k:snake:upper _ $x:snake:upper>], + $crate::data::renderer::Scale::Full => &$crate::data::renderer::full::[<$k:snake:upper _ $x:snake:upper>], + }.copy()), + )+ + #[allow(unreachable_patterns)] + n => unreachable!("{n:?}"), + } + } }; +} +pub(crate) use load; + +/// trait for renderable objects +pub trait Renderable { + /// create a picture + #[must_use = "i did so much work for you"] + fn render(&self) -> Image<Vec<u8>, 3>; +} + +impl Renderable for Schematic<'_> { + /// creates a picture of a schematic. Bridges and node connections are not drawn. + /// ``` + /// use mindus::*; + /// let mut s = Schematic::new(2, 3); + /// s.put(0, 0, &block::distribution::DISTRIBUTOR); + /// s.put(0, 2, &block::distribution::ROUTER); + /// s.put(1, 2, &block::walls::COPPER_WALL); + /// let output /*: Image */ = s.render(); + /// ``` + fn render(&self) -> Image<Vec<u8>, 3> { + // fill background + // SAFETY: metal-floor is 32x32, the output is a multiple of 32 + let mut bg = unsafe { + load!("metal-floor", Scale::Full).borrow().repeated( + ((self.width + 2) * 32) as u32, + ((self.height + 2) * 32) as u32, + ) + }; + let mut canvas = Image::alloc( + ((self.width + 2) * 32) as u32, + ((self.height + 2) * 32) as u32, + ); + for (GridPos(x, y), tile) in self.block_iter() { + let ctx = if tile.block.wants_context() { + let pctx = PositionContext { + position: GridPos(x, y), + width: self.width, + height: self.height, + }; + Some(RenderingContext { + cross: self.cross(&pctx), + position: pctx, + }) + } else { + None + }; + let x = x as u32 - ((tile.block.get_size() - 1) / 2) as u32; + let y = self.height as u32 - y as u32 - ((tile.block.get_size() / 2) + 1) as u32; + unsafe { + canvas.as_mut().overlay_at( + &tile + .image( + ctx.as_ref(), + tile.get_rotation().unwrap_or(Rotation::Up), + Scale::Full, + ) + .borrow(), + (x + 1) * 32, + (y + 1) * 32, + ) + }; + } + canvas.as_mut().shadow(); + for x in 0..canvas.width() { + for y in 0..canvas.height() { + // canvas has a shadow + let p2 = unsafe { canvas.pixel(x, y) }; + let p = unsafe { bg.pixel_mut(x, y) }; + crate::utils::image::blend(p.try_into().unwrap(), p2); + } + } + bg.remove_channel() + } +} + +impl Renderable for Map<'_> { + /// Draws a map + fn render(&self) -> Image<Vec<u8>, 3> { + let scale = if self.width + self.height < 2000 { + Scale::Quarter + } else { + Scale::Eigth + }; + // todo combine these (beware of floor drawing atop buildings) (planned solution:? ptr blocks) + let mut floor: Image<_, 3> = + Image::alloc(scale * self.width as u32, scale * self.height as u32); + let mut top: Image<_, 4> = + Image::alloc(scale * self.width as u32, scale * self.height as u32); + rayon::join( + || { + for y in 0..self.height { + for x in 0..self.width { + // Map::new() allocates w*h items + let j = x + self.width * y; + let tile = unsafe { self.tiles.get_unchecked(j) }; + let y = self.height - y - 1; + // draw the floor first. + // println!("draw {tile:?} ({x}, {y})"); + unsafe { + floor.as_mut().overlay_at( + &tile.floor(scale).borrow(), + scale * x as u32, + scale * y as u32, + ) + }; + if tile.has_ore() { + unsafe { + floor.as_mut().overlay_at( + &tile.ore(scale).borrow(), + scale * x as u32, + scale * y as u32, + ) + }; + } + } + } + }, + || { + for y in 0..self.height { + for x in 0..self.width { + // Map::new() allocates w*h items + let j = x + self.width * y; + let tile = unsafe { self.tiles.get_unchecked(j) }; + let y = self.height - y - 1; + // println!("draw {tile:?} ({x}, {y})"); + if let Some(build) = tile.build() { + let s = build.block.get_size(); + let x = x + - (match s { + 1 | 2 => 0, + 3 | 4 => 1, + 5 | 6 => 2, + 7 | 8 => 3, + 9 => 4, + // SAFETY: no block too big + _ => unsafe { std::hint::unreachable_unchecked() }, + }) as usize; + let y = y + - (match s { + 1 => 0, + 2 | 3 => 1, + 4 | 5 => 2, + 6 | 7 => 3, + 8 | 9 => 4, + // SAFETY: no block too big + _ => unsafe { std::hint::unreachable_unchecked() }, + }) as usize; + let ctx = if build.block.wants_context() { + let pctx = PositionContext { + position: GridPos(x, y), + width: self.width, + height: self.height, + }; + let rctx = RenderingContext { + cross: self.cross(j, &pctx), + position: pctx, + }; + Some(rctx) + } else { + None + }; + unsafe { + top.as_mut().overlay_at( + &tile.build_image(ctx.as_ref(), scale).borrow(), + scale * x as u32, + scale * y as u32, + ) + }; + } + } + } + }, + ); + unsafe { floor.as_mut().overlay_at(&top.as_ref(), 0, 0) }; + floor + } +} + +#[test] +fn all_blocks() { + use crate::block::content::Type; + use crate::content::Content; + let reg = crate::block::build_registry(); + for t in 19..Type::WorldMessage as u16 { + let t = Type::try_from(t).unwrap(); + if matches!(t, |Type::Empty| Type::SlagCentrifuge + | Type::HeatReactor + | Type::LegacyMechPad + | Type::LegacyUnitFactory + | Type::LegacyUnitFactoryAir + | Type::LegacyUnitFactoryGround + | Type::CommandCenter) + { + continue; + } + let name = dbg!(t.get_name()); + let t = reg.get(name).unwrap(); + let _ = t.image( + None, + Some(&RenderingContext { + cross: [None; 4], + position: PositionContext { + position: GridPos(0, 0), + width: 5, + height: 5, + }, + }), + Rotation::Up, + Scale::Quarter, + ); + } +} diff --git a/mindus/src/data/schematic.rs b/src/data/schematic.rs index 55baf3f..31888c2 100644 --- a/mindus/src/data/schematic.rs +++ b/src/data/schematic.rs @@ -1,49 +1,47 @@ //! schematic parsing -use fimg::DynImage; -use std::collections::HashMap; use std::collections::hash_map::Entry; +use std::collections::HashMap; use std::fmt::{self, Write}; use thiserror::Error; -use crate::block::ratios::{Io, IoBuilder}; -use crate::block::{self, BLOCK_REGISTRY, Block, Rotation, State}; +use crate::block::{self, Block, BlockRegistry, Rotation, State}; use crate::data::base64; -use crate::data::dynamic::{self, DynData}; +use crate::data::dynamic::{self, DynData, DynSerializer}; use crate::data::renderer::*; -use crate::data::{self, DataRead, DataWrite, GridPos, Serializable}; +use crate::data::{self, DataRead, DataWrite, GridPos, Serializer}; use crate::item::storage::ItemStorage; -use crate::utils::Cow; +use crate::registry::RegistryEntry; use crate::utils::array::Array2D; /// biggest schematic -pub const MAX_DIMENSION: usize = 1024; +pub const MAX_DIMENSION: usize = 256; /// most possible blocks -pub const MAX_BLOCKS: u32 = 1024 * 1024; +pub const MAX_BLOCKS: u32 = 256 * 256; /// a placement in a schematic -#[derive(Clone, Hash)] -pub struct Placement { - pub block: &'static Block, +#[derive(Clone)] +pub struct Placement<'l> { + pub block: &'l Block, pub rot: Rotation, state: Option<State>, } -impl PartialEq for Placement { - fn eq(&self, rhs: &Placement) -> bool { +impl PartialEq for Placement<'_> { + fn eq(&self, rhs: &Placement<'_>) -> bool { self.block == rhs.block && self.rot == rhs.rot } } -impl fmt::Debug for Placement { +impl fmt::Debug for Placement<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> { write!(f, "P<{}[*{}]>", self.block.name(), self.rot.ch()) } } -impl Placement { +impl<'l> Placement<'l> { /// make a placement from a block #[must_use] - pub const fn new(block: &'static Block) -> Self { + pub const fn new(block: &'l Block) -> Self { Self { block, rot: Rotation::Up, @@ -63,13 +61,16 @@ impl Placement { } /// draws this placement in particular + /// + /// # Safety + /// UB if called before [`warmup`](crate::warmup) #[must_use] pub fn image( &self, context: Option<&RenderingContext>, rot: Rotation, s: Scale, - ) -> DynImage<Cow> { + ) -> ImageHolder<4> { self.block.image(self.get_state(), context, rot, s) } @@ -85,49 +86,48 @@ impl Placement { } } -impl BlockState for Placement { - fn get_block(&self) -> Option<&'static Block> { +impl<'l> BlockState<'l> for Placement<'l> { + fn get_block(&self) -> Option<&'l Block> { Some(self.block) } } -impl RotationState for Placement { +impl RotationState for Placement<'_> { fn get_rotation(&self) -> Option<Rotation> { Some(self.rot) } } -impl BlockState for Option<Placement> { - fn get_block(&self) -> Option<&'static Block> { - Some(self.as_ref()?.block) +impl<'l> BlockState<'l> for Option<Placement<'l>> { + fn get_block(&self) -> Option<&'l Block> { + let Some(p) = self else { + return None; + }; + Some(p.block) } } -impl RotationState for Option<Placement> { +impl RotationState for Option<Placement<'_>> { fn get_rotation(&self) -> Option<Rotation> { - Some(self.as_ref()?.rot) + let Some(p) = self else { + return None; + }; + Some(p.rot) } } #[derive(Clone, Debug)] /// a schematic. -pub struct Schematic { +pub struct Schematic<'l> { pub width: usize, pub height: usize, pub tags: HashMap<String, String>, /// schems can have holes, so [Option] is used. - pub blocks: Array2D<Option<Placement>>, -} -impl core::hash::Hash for Schematic { - fn hash<H: std::hash::Hasher>(&self, state: &mut H) { - self.width.hash(state); - self.height.hash(state); - self.blocks.hash(state); - } + pub blocks: Array2D<Option<Placement<'l>>>, } -impl PartialEq for Schematic { - fn eq(&self, rhs: &Schematic) -> bool { +impl<'l> PartialEq for Schematic<'l> { + fn eq(&self, rhs: &Schematic<'l>) -> bool { self.width == rhs.width && self.height == rhs.height && self.blocks == rhs.blocks @@ -135,9 +135,23 @@ impl PartialEq for Schematic { } } -impl Schematic { +impl<'l> Schematic<'l> { + #[must_use] + /// create a new schematic, panicking if too big + /// ``` + /// # use mindus::Schematic; + /// let s = Schematic::new(5, 5); + /// ``` + pub fn new(width: usize, height: usize) -> Self { + match Self::try_new(width, height) { + Ok(s) => s, + Err(NewError::Width(w)) => panic!("invalid schematic width ({w})"), + Err(NewError::Height(h)) => panic!("invalid schematic height ({h})"), + } + } + /// the area around a point - pub(crate) fn cross(&self, c: &PositionContext) -> (Cross, Corners) { + pub(crate) fn cross(&self, c: &PositionContext) -> Cross { let get = |x, y| { let b = self.get(x?, y?).ok()??; Some((b.get_block()?, b.get_rotation()?)) @@ -147,57 +161,43 @@ impl Schematic { Some($x) }; ($a:expr => $b:expr) => { - if $a < $b { None } else { Some($a - $b) } + if $a < $b { + None + } else { + Some($a - $b) + } }; } - ( - [ - get(s!(c.position.0), s!(c.position.1 + 1)), - get(s!(c.position.0 + 1), s!(c.position.1)), - get(s!(c.position.0), s!(c.position.1 => 1)), - get(s!(c.position.0 => 1), s!(c.position.1)), - ], - [ - get(s!(c.position.0 => 1), s!(c.position.1 => 1)), - get(s!(c.position.0 => 1), s!(c.position.1 + 1)), - get(s!(c.position.0 + 1), s!(c.position.1 => 1)), - get(s!(c.position.0 + 1), s!(c.position.1 + 1)), - ], - ) - } - - /// Ratios of this schematic. - /// ``` - /// # #![feature(const_trait_impl)] - /// # use mindus::Schematic; - /// # use mindus::block::ratios::ratios; - /// assert_eq!(Schematic::deserialize_base64("bXNjaAF4nEWMSw7CMAxEh9REVSqx5hKcCLFISxaR0o9Sg8rtSTpFePPkmWfDwTWQyY8B5z75VdE9wzrkuGicJwA2+T6kFeb+aNDtym2MW8i4LJ/sNWo4dje8ksa31zmXuyv+Y4BTgRD2iIi9M+xM7WrUgnoNhYpQESpCxfKLrUo9FsISLX6vKgwhhCVK+wX5/BtM").unwrap().ratios(), - /// ratios![[Coal: 5.25, Lead: 10.5, Sand: 10.5, Water: 180] => [BlastCompound: 5.25, SporePod: 0.75]]); - /// ``` - pub fn ratios(&self) -> Io { - let mut io = IoBuilder::default(); - for p in self.blocks.iter().filter_map(|o| o.as_ref()) { - io += p.block.io(p.state.as_ref()); - } - io.into() + [ + get(s!(c.position.0), s!(c.position.1 + 1)), + get(s!(c.position.0 + 1), s!(c.position.1)), + get(s!(c.position.0), s!(c.position.1 => 1)), + get(s!(c.position.0 => 1), s!(c.position.1)), + ] } - /// create a new schematic + /// create a new schematic, erroring if too big /// ``` /// # use mindus::Schematic; - /// let s = Schematic::new(5, 5); + /// assert!(Schematic::try_new(500, 500).is_err() == true); /// ``` - pub fn new(width: usize, height: usize) -> Self { + pub fn try_new(width: usize, height: usize) -> Result<Self, NewError> { + if width > MAX_DIMENSION { + return Err(NewError::Width(width)); + } + if height > MAX_DIMENSION { + return Err(NewError::Height(height)); + } let mut tags = HashMap::<String, String>::new(); tags.insert("name".to_string(), String::new()); tags.insert("description".to_string(), String::new()); tags.insert("labels".to_string(), "[]".to_string()); - Self { + Ok(Self { width, height, tags, blocks: Array2D::new(None, width, height), - } + }) } // #[must_use] @@ -235,14 +235,13 @@ impl Schematic { /// ``` /// # use mindus::Schematic; /// # use mindus::block::Rotation; - /// # use mindus::block::DUO; /// /// let mut s = Schematic::new(5, 5); /// assert!(s.get(0, 0).unwrap().is_none()); - /// s.put(0, 0, &DUO); + /// s.put(0, 0, &mindus::block::turrets::DUO); /// assert!(s.get(0, 0).unwrap().is_some()); /// ``` - pub fn get(&self, x: usize, y: usize) -> Result<Option<&Placement>, PosError> { + pub fn get(&self, x: usize, y: usize) -> Result<Option<&Placement<'l>>, PosError> { if x >= self.width || y >= self.height { return Err(PosError { x, @@ -255,7 +254,7 @@ impl Schematic { } /// gets a block, mutably - pub fn get_mut(&mut self, x: usize, y: usize) -> Result<Option<&mut Placement>, PosError> { + pub fn get_mut(&mut self, x: usize, y: usize) -> Result<Option<&mut Placement<'l>>, PosError> { if x >= self.width || y >= self.height { return Err(PosError { x, @@ -270,13 +269,12 @@ impl Schematic { /// put a block in (same as [`Schematic::set`], but less arguments and builder-ness). panics!!! /// ``` /// # use mindus::Schematic; - /// # use mindus::block::ROUTER; /// /// let mut s = Schematic::new(5, 5); - /// s.put(0, 0, &ROUTER); + /// s.put(0, 0, &mindus::block::distribution::ROUTER); /// assert!(s.get(0, 0).unwrap().is_some() == true); /// ``` - pub fn put(&mut self, x: usize, y: usize, block: &'static Block) -> &mut Self { + pub fn put(&mut self, x: usize, y: usize, block: &'l Block) -> &mut Self { self.set(x, y, block, DynData::Empty, Rotation::Up).unwrap(); self } @@ -284,19 +282,18 @@ impl Schematic { /// set a block /// ``` /// # use mindus::Schematic; - /// # use mindus::data::dynamic::DynData; + /// # use mindus::DynData; /// # use mindus::block::Rotation; - /// # use mindus::block::ROUTER; /// /// let mut s = Schematic::new(5, 5); - /// s.set(0, 0, &ROUTER, DynData::Empty, Rotation::Right); + /// s.set(0, 0, &mindus::block::distribution::ROUTER, DynData::Empty, Rotation::Right); /// assert!(s.get(0, 0).unwrap().is_some() == true); /// ``` pub fn set( &mut self, x: usize, y: usize, - block: &'static Block, + block: &'l Block, data: DynData, rot: Rotation, ) -> Result<(), PlaceError> { @@ -329,16 +326,17 @@ impl Schematic { /// take out a block /// ``` /// # use mindus::Schematic; - /// # use mindus::block::DUO; + /// # use mindus::DynData; + /// # use mindus::block::Rotation; /// /// let mut s = Schematic::new(5, 5); - /// s.put(0, 0, &DUO); + /// s.put(0, 0, &mindus::block::turrets::DUO); /// assert!(s.get(0, 0).unwrap().is_some() == true); /// assert!(s.take(0, 0).unwrap().is_some() == true); /// assert!(s.get(0, 0).unwrap().is_none() == true); /// ``` - pub fn take(&mut self, x: usize, y: usize) -> Result<Option<Placement>, PosError> { + pub fn take(&mut self, x: usize, y: usize) -> Result<Option<Placement<'l>>, PosError> { if x >= self.width || y >= self.height { return Err(PosError { x, @@ -352,11 +350,13 @@ impl Schematic { } /// iterate over all the blocks - pub fn block_iter(&self) -> impl Iterator<Item = (GridPos, &Placement)> { - self.blocks - .iter() - .enumerate() - .filter_map(|(i, p)| Some((GridPos(i / self.height, i % self.height), p.as_ref()?))) + pub fn block_iter(&self) -> impl Iterator<Item = (GridPos, &Placement<'_>)> { + self.blocks.iter().enumerate().filter_map(|(i, p)| { + let Some(p) = p else { + return None; + }; + Some((GridPos(i / self.height, i % self.height), p)) + }) } #[must_use] @@ -364,11 +364,11 @@ impl Schematic { /// returns (cost, `is_sandbox`) /// ``` /// # use mindus::Schematic; + /// # use mindus::DynData; /// # use mindus::block::Rotation; - /// # use mindus::block::CYCLONE; /// /// let mut s = Schematic::new(5, 5); - /// s.put(1, 1, &CYCLONE); + /// s.put(1, 1, &mindus::block::turrets::CYCLONE); /// assert_eq!(s.compute_total_cost().0.get_total(), 405); /// ``` pub fn compute_total_cost(&self) -> (ItemStorage, bool) { @@ -473,10 +473,13 @@ impl fmt::Display for TruncatedError { const SCHEMATIC_HEADER: u32 = ((b'm' as u32) << 24) | ((b's' as u32) << 16) | ((b'c' as u32) << 8) | (b'h' as u32); -impl Serializable for Schematic { +/// `serde_schematic` +pub struct SchematicSerializer<'l>(pub &'l BlockRegistry<'l>); + +impl<'l> Serializer<Schematic<'l>> for SchematicSerializer<'l> { type ReadError = ReadError; type WriteError = WriteError; - fn deserialize(buff: &mut DataRead<'_>) -> Result<Schematic, Self::ReadError> { + fn deserialize(&mut self, buff: &mut DataRead<'_>) -> Result<Schematic<'l>, Self::ReadError> { let hdr = buff.read_u32()?; if hdr != SCHEMATIC_HEADER { return Err(ReadError::Header(hdr)); @@ -498,16 +501,14 @@ impl Serializable for Schematic { if num_table < 0 { return Err(ReadError::TableSize(num_table)); } - let mut block_table = Vec::with_capacity(num_table as usize); + let mut block_table = Vec::new(); + block_table.reserve(num_table as usize); for _ in 0..num_table { let name = buff.read_utf()?; - block_table.push( - BLOCK_REGISTRY - .get(name) - .copied() - // wont get rendered - .unwrap_or(&crate::block::METAL_FLOOR), - ); + match self.0.get(name) { + None => return Err(ReadError::NoSuchBlock(name.to_owned())), + Some(b) => block_table.push(b), + } } let num_blocks = buff.read_i32()?; if num_blocks < 0 || num_blocks as u32 > MAX_BLOCKS { @@ -523,7 +524,7 @@ impl Serializable for Schematic { let config = if version < 1 { block.data_from_i32(buff.read_i32()?, pos)? } else { - DynData::deserialize(&mut buff)? + DynSerializer.deserialize(&mut buff)? }; let rot = Rotation::from(buff.read_u8()?); schematic.set(pos.0, pos.1, block, config, rot)?; @@ -531,20 +532,24 @@ impl Serializable for Schematic { Ok(schematic) } - fn serialize(&self, buff: &mut DataWrite<'_>) -> Result<(), Self::WriteError> { + fn serialize( + &mut self, + buff: &mut DataWrite<'_>, + data: &Schematic, + ) -> Result<(), Self::WriteError> { // write the header first just in case buff.write_u32(SCHEMATIC_HEADER)?; buff.write_u8(1)?; let mut rbuff = DataWrite::default(); // don't have to check dimensions because they're already limited to MAX_DIMENSION - rbuff.write_i16(self.width as i16)?; - rbuff.write_i16(self.height as i16)?; - if self.tags.len() > u8::MAX as usize { - return Err(WriteError::TagCount(self.tags.len())); + rbuff.write_i16(data.width as i16)?; + rbuff.write_i16(data.height as i16)?; + if data.tags.len() > u8::MAX as usize { + return Err(WriteError::TagCount(data.tags.len())); } - rbuff.write_u8(self.tags.len() as u8)?; - for (k, v) in &self.tags { + rbuff.write_u8(data.tags.len() as u8)?; + for (k, v) in &data.tags { rbuff.write_utf(k)?; rbuff.write_utf(v)?; } @@ -552,11 +557,11 @@ impl Serializable for Schematic { let mut block_map = HashMap::new(); let mut block_table = Vec::new(); let mut block_count = 0i32; - for curr in self.blocks.iter().filter_map(|b| b.as_ref()) { + for curr in data.blocks.iter().filter_map(|b| b.as_ref()) { block_count += 1; - if let Entry::Vacant(e) = block_map.entry(curr.block.name()) { + if let Entry::Vacant(e) = block_map.entry(curr.block.get_name()) { e.insert(block_table.len() as u32); - block_table.push(curr.block.name()); + block_table.push(curr.block.get_name()); } } if block_table.len() > i8::MAX as usize { @@ -569,14 +574,14 @@ impl Serializable for Schematic { } // don't have to check data.blocks.len() because dimensions don't allow exceeding MAX_BLOCKS rbuff.write_i32(block_count)?; - for (pos, curr) in self.block_iter() { - rbuff.write_i8(block_map[curr.block.name()] as i8)?; + for (pos, curr) in data.block_iter() { + rbuff.write_i8(block_map[curr.block.get_name()] as i8)?; rbuff.write_u32(pos.into())?; let data = match curr.state { None => DynData::Empty, Some(ref s) => curr.block.serialize_state(s)?, }; - data.serialize(&mut rbuff)?; + DynSerializer.serialize(&mut rbuff, &data)?; rbuff.write_u8(curr.rot.into())?; } rbuff.inflate(buff)?; @@ -628,24 +633,26 @@ pub enum WriteError { Compress(#[from] super::CompressError), } -impl Schematic { +impl<'l> SchematicSerializer<'l> { /// deserializes a schematic from base64 /// ``` /// # use mindus::*; /// let string = "bXNjaAF4nGNgZmBmZmDJS8xNZeBOyslPzlYAkwzcKanFyUWZBSWZ+XkMDAxsOYlJqTnFDEzRsYwMfAWJlTn5iSm6RfmlJalFQGlGEGJkZWSYxQAAcBkUPA=="; - /// let s = Schematic::deserialize_base64(string).unwrap(); + /// let reg = build_registry(); + /// let mut ss = SchematicSerializer(®); + /// let s = ss.deserialize_base64(string).unwrap(); /// assert!(s.get(1, 1).unwrap().unwrap().block.name() == "payload-router"); /// ``` - pub fn deserialize_base64(data: &str) -> Result<Schematic, R64Error> { + pub fn deserialize_base64(&mut self, data: &str) -> Result<Schematic<'l>, R64Error> { let mut buff = vec![0; data.len() / 4 * 3 + 1]; let n_out = base64::decode(data.as_bytes(), buff.as_mut())?; - Ok(Self::deserialize(&mut DataRead::new(&buff[..n_out]))?) + Ok(self.deserialize(&mut DataRead::new(&buff[..n_out]))?) } /// serialize a schematic to base64 - pub fn serialize_base64(&self) -> Result<String, W64Error> { + pub fn serialize_base64(&mut self, data: &Schematic<'l>) -> Result<String, W64Error> { let mut buff = DataWrite::default(); - self.serialize(&mut buff)?; + self.serialize(&mut buff, data)?; let buff = buff.get_written(); // round up because of padding let mut text = vec![0; 4 * (buff.len() / 3 + usize::from(buff.len() % 3 != 0))]; @@ -699,12 +706,14 @@ mod test { ($name:ident, $($val:expr);+;) => { #[test] fn $name() { + let reg = crate::block::build_registry(); + let mut ser = SchematicSerializer(®); $( - let parsed = unwrap_pretty(Schematic::deserialize_base64($val)); + let parsed = unwrap_pretty(ser.deserialize_base64($val)); println!("\x1b[38;5;2mdeserialized\x1b[0m {}", parsed.tags.get("name").unwrap()); - let unparsed = unwrap_pretty(parsed.serialize_base64()); + let unparsed = unwrap_pretty(ser.serialize_base64(&parsed)); println!("\x1b[38;5;2mserialized\x1b[0m {}", parsed.tags.get("name").unwrap()); - let parsed2 = unwrap_pretty(Schematic::deserialize_base64(&unparsed)); + let parsed2 = unwrap_pretty(ser.deserialize_base64(&unparsed)); println!("\x1b[38;5;2mredeserialized\x1b[0m {}", parsed.tags.get("name").unwrap()); if parsed != parsed2 { #[cfg(feature = "bin")] @@ -746,7 +755,7 @@ mod test { None }; } - use crate::block::*; + use crate::block::all::*; let mut s = Schematic::new(3, 3); s.put(0, 0, &DISTRIBUTOR) .put(0, 1, &JUNCTION) @@ -762,7 +771,10 @@ mod test { pair!(2, 0, ROUTER); pair!( ); ]; - let s = Schematic::deserialize_base64("bXNjaAF4nDXKywqAIBQA0fFRBH1itDC7C8E01IT+vgia1VkMFmOwyR3C0N0VG/Mu1ZdwtpATMEa3SazoZdVMPqcudy7/DJovpV4peAAt0xF6").unwrap(); + let reg = crate::block::build_registry(); + let mut s = SchematicSerializer(®); + + let s = s.deserialize_base64("bXNjaAF4nDXKywqAIBQA0fFRBH1itDC7C8E01IT+vgia1VkMFmOwyR3C0N0VG/Mu1ZdwtpATMEa3SazoZdVMPqcudy7/DJovpV4peAAt0xF6").unwrap(); let mut it = s.block_iter(); test_iter![it, pair!(0, 0, CONVEYOR); diff --git a/mindus/src/data/sector.rs b/src/data/sector.rs index ac8c471..ac8c471 100644 --- a/mindus/src/data/sector.rs +++ b/src/data/sector.rs diff --git a/mindus/src/data/weather.rs b/src/data/weather.rs index 8df9f59..8df9f59 100644 --- a/mindus/src/data/weather.rs +++ b/src/data/weather.rs diff --git a/src/exe/draw.rs b/src/exe/draw.rs new file mode 100644 index 0000000..964bcac --- /dev/null +++ b/src/exe/draw.rs @@ -0,0 +1,24 @@ +use mindus::build_registry; +use mindus::Renderable; +use mindus::SchematicSerializer; +use std::env::Args; + +use crate::print_err; + +pub fn main(args: Args) { + let reg = build_registry(); + let mut ss = SchematicSerializer(®); + + // process schematics from command line + for curr in args { + match ss.deserialize_base64(&curr) { + Ok(s) => { + s.render().save("x.png"); + } + // continue processing literals & maybe interactive mode + Err(e) => { + print_err!(e, "Could not read schematic"); + } + } + } +} diff --git a/src/exe/map.rs b/src/exe/map.rs new file mode 100644 index 0000000..cbb6477 --- /dev/null +++ b/src/exe/map.rs @@ -0,0 +1,48 @@ +use mindus::data::DataRead; +use mindus::{build_registry, Renderable}; +use mindus::{MapSerializer, Serializer}; +use std::env::Args; +use std::time::Instant; + +use super::print_err; +pub fn main(args: Args) { + let reg = build_registry(); + let mut ms = MapSerializer(®); + let runs = std::env::var("RUNS").map_or(10u8, |x| x.parse().unwrap_or(10u8)); + + // process schematics from command line + println!("starting timing"); + let then = Instant::now(); + for curr in args { + let Ok(s) = std::fs::read(curr) else { + continue; + }; + let starting_deser = Instant::now(); + match ms.deserialize(&mut DataRead::new(&s)) { + Err(e) => print_err!(e, "fail"), + Ok(m) => { + let deser_took = starting_deser.elapsed(); + if let Ok(v) = std::env::var("SAVE") { + if v == "1" { + m.render().save("x.png"); + continue; + } + } + let starting_render = Instant::now(); + for _ in 0..runs { + drop(m.render()); + } + let renders_took = starting_render.elapsed(); + let took = then.elapsed(); + println!( + "μ total: {:.2}s ({} runs) (deser: {}ms, render: {:.2}s) on map {}", + took.as_secs_f32() / runs as f32, + runs, + deser_took.as_millis(), + renders_took.as_secs_f32() / runs as f32, + m.tags.get("mapname").unwrap(), + ); + } + } + } +} diff --git a/mindus/src/exe/mod.rs b/src/exe/mod.rs index aa49f29..aa49f29 100644 --- a/mindus/src/exe/mod.rs +++ b/src/exe/mod.rs diff --git a/mindus/src/fluid.rs b/src/fluid/mod.rs index 7437744..7437744 100644 --- a/mindus/src/fluid.rs +++ b/src/fluid/mod.rs diff --git a/mindus/src/item/mod.rs b/src/item/mod.rs index 5d29176..5d29176 100644 --- a/mindus/src/item/mod.rs +++ b/src/item/mod.rs diff --git a/src/item/storage.rs b/src/item/storage.rs new file mode 100644 index 0000000..ec7f219 --- /dev/null +++ b/src/item/storage.rs @@ -0,0 +1,425 @@ +use std::fmt; +use std::iter::{Enumerate, FusedIterator}; +use std::marker::PhantomData; +use std::slice; + +use crate::item; + +#[derive(Clone, Debug, Eq)] +/// stores data +pub struct Storage<T> { + base: Vec<u32>, + total: u64, + holds: PhantomData<T>, +} + +pub type ItemStorage = Storage<item::Type>; + +impl<T> Default for Storage<T> { + fn default() -> Self { + Self { + base: Vec::default(), + total: 0, + holds: PhantomData, + } + } +} + +impl<T> Storage<T> +where + u16: From<T>, +{ + #[must_use] + /// create a new storage + /// + /// ``` + /// # use mindus::item::storage::ItemStorage; + /// // ItemStorage is a alias to Storage<Item> + /// let s = ItemStorage::new(); + /// ``` + pub fn new() -> Self { + Self::default() + } + + #[must_use] + /// total items + pub const fn get_total(&self) -> u64 { + self.total + } + + #[must_use] + /// check if its empty + /// + /// ``` + /// # use mindus::item::storage::ItemStorage; + /// # use mindus::item; + /// + /// let mut s = ItemStorage::new(); + /// assert!(s.is_empty()); + /// s.set(item::Type::Copper, 500); + /// assert!(!s.is_empty()); + /// s.sub(item::Type::Copper, 500, 0); + /// assert!(s.is_empty()); + /// ``` + pub const fn is_empty(&self) -> bool { + self.total == 0 + } + + /// get item count of certain element + /// + /// ``` + /// # use mindus::item::storage::ItemStorage; + /// # use mindus::item; + /// + /// let mut s = ItemStorage::new(); + /// assert!(s.get(item::Type::Coal) == 0); + /// s.set(item::Type::Coal, 500); + /// assert!(s.get(item::Type::Titanium) == 0); + /// assert!(s.get(item::Type::Coal) == 500); + /// s.sub(item::Type::Coal, 500, 0); + /// assert!(s.get(item::Type::Coal) == 0); + /// ``` + #[must_use] + pub fn get(&self, ty: T) -> u32 { + self.base.get(u16::from(ty) as usize).copied().unwrap_or(0) + } + /// set item count of certain element + /// + /// ``` + /// # use mindus::item::storage::ItemStorage; + /// # use mindus::item; + /// + /// let mut s = ItemStorage::new(); + /// s.set(item::Type::Coal, 500); + /// s.set(item::Type::Copper, 500); + /// assert!(s.get(item::Type::Copper) == 500); + /// ``` + pub fn set(&mut self, ty: T, count: u32) -> u32 { + let idx = u16::from(ty) as usize; + match self.base.get_mut(idx) { + None => { + self.base.resize(idx + 1, 0); + self.base[idx] = count; + self.total += u64::from(count); + 0 + } + Some(curr) => { + let prev = *curr; + self.total = self.total - u64::from(prev) + u64::from(count); + *curr = count; + prev + } + } + } + + /// add to a certain elements item count, capping. + /// + /// ``` + /// # use mindus::item::storage::ItemStorage; + /// # use mindus::item; + /// + /// let mut s = ItemStorage::new(); + /// s.add(item::Type::Coal, 500, 500); + /// assert!(s.get(item::Type::Coal) == 500); + /// s.add(item::Type::Coal, 500, 10000); + /// assert!(s.get(item::Type::Coal) == 1000); + /// s.add(item::Type::Coal, 500, 1250); + /// assert!(s.get(item::Type::Coal) == 1250); + /// ``` + pub fn add(&mut self, ty: T, add: u32, max: u32) -> (u32, u32) { + let idx = u16::from(ty) as usize; + match self.base.get_mut(idx) { + None => { + let actual = add.min(max); + self.base.resize(idx + 1, 0); + self.base[idx] = actual; + self.total += u64::from(add); + (actual, actual) + } + Some(curr) => { + if *curr < max { + let actual = add.min(max - *curr); + *curr += actual; + self.total += u64::from(actual); + (actual, *curr) + } else { + (0, *curr) + } + } + } + } + + /// like [`Storage::add`] but fails + pub fn try_add(&mut self, ty: T, add: u32, max: u32) -> Result<(u32, u32), TryAddError> { + let idx = u16::from(ty) as usize; + match self.base.get_mut(idx) { + None => { + if add <= max { + self.base.resize(idx + 1, 0); + self.base[idx] = add; + self.total += u64::from(add); + Ok((add, add)) + } else { + Err(TryAddError { have: 0, add, max }) + } + } + Some(curr) => { + if *curr <= max && max - *curr <= add { + *curr += add; + self.total += u64::from(add); + Ok((add, *curr)) + } else { + Err(TryAddError { + have: *curr, + add, + max, + }) + } + } + } + } + + pub fn sub(&mut self, ty: T, sub: u32, min: u32) -> (u32, u32) { + match self.base.get_mut(u16::from(ty) as usize) { + None => (0, 0), + Some(curr) => { + if *curr > min { + let actual = sub.min(*curr - min); + *curr -= actual; + self.total -= u64::from(actual); + (actual, *curr) + } else { + (0, *curr) + } + } + } + } + + pub fn try_sub(&mut self, ty: T, sub: u32, min: u32) -> Result<(u32, u32), TrySubError> { + let idx = u16::from(ty) as usize; + match self.base.get_mut(idx) { + None => Err(TrySubError { have: 0, sub, min }), + Some(curr) => { + if *curr >= min && *curr - min >= sub { + *curr -= sub; + self.total -= u64::from(sub); + Ok((sub, *curr)) + } else { + Err(TrySubError { + have: *curr, + sub, + min, + }) + } + } + } + } + + pub fn add_all(&mut self, other: &Storage<T>, max_each: u32) -> (u64, u64) { + let mut added = 0u64; + if max_each > 0 && other.total > 0 { + let mut iter = other.base.iter().enumerate(); + // resize our vector only once and if necessary + let (last, add_last) = iter.rfind(|(_, n)| **n != 0).unwrap(); + if self.base.len() <= last { + self.base.resize(last + 1, 0); + } + // process items by increasing ID + for (idx, add) in iter { + let curr = self.base[idx]; + if curr < max_each { + let actual = (*add).min(max_each - curr); + self.base[idx] += actual; + added += u64::from(actual); + } + } + // process the final element (which we've retrieved first) + let curr = self.base[last]; + if curr < max_each { + let actual = (*add_last).min(max_each - curr); + self.base[last] += actual; + added += u64::from(actual); + } + // update total + self.total += added; + } + (added, self.total) + } + + pub fn pull_all(&mut self, other: &mut Storage<T>, max_each: u32) -> (u64, u64, u64) { + let mut added = 0u64; + if max_each > 0 && other.total > 0 { + let mut iter = other.base.iter_mut().enumerate(); + // resize our vector only once and if necessary + let (last, add_last) = iter.rfind(|(_, n)| **n != 0).unwrap(); + if self.base.len() <= last { + self.base.resize(last + 1, 0); + } + // process items by increasing ID + for (idx, add) in iter { + let curr = self.base[idx]; + if curr < max_each { + let actual = (*add).min(max_each - curr); + self.base[idx] += actual; + *add -= actual; + added += u64::from(actual); + } + } + // process the final element (which we've retrieved first) + let curr = self.base[last]; + if curr < max_each { + let actual = (*add_last).min(max_each - curr); + self.base[last] += actual; + *add_last -= actual; + added += u64::from(actual); + } + // update totals + self.total += added; + other.total -= added; + } + (added, self.total, other.total) + } + + pub fn sub_all(&mut self, other: &Storage<T>, min_each: u32) -> (u64, u64) { + let mut subbed = 0u64; + if self.total > 0 && other.total > 0 { + // no need for resizing, we only remove + // process items by increasing ID + for (idx, sub) in other.base.iter().enumerate() { + if let Some(curr) = self.base.get(idx) { + if *curr > min_each { + let actual = (*sub).min(*curr - min_each); + self.base[idx] -= actual; + subbed += u64::from(actual); + } + } else { + break; + } + } + // update total + self.total -= subbed; + } + (subbed, self.total) + } + + pub fn diff_all(&mut self, other: &mut Storage<T>, min_each: u32) -> (u64, u64, u64) { + let mut subbed = 0u64; + if self.total > 0 && other.total > 0 { + // no need for resizing, we only remove + // consider only indexes present in both + let end = self.base.len().min(other.base.len()); + let lhs = &mut self.base[..end]; + let rhs = &mut other.base[..end]; + // process items by increasing ID + for (l, r) in lhs.iter_mut().zip(rhs) { + if *l > min_each && *r > min_each { + let actual = (*l - min_each).min(*r - min_each); + *l -= actual; + *r -= actual; + subbed -= u64::from(actual); + } + } + // update totals + self.total -= subbed; + other.total -= subbed; + } + (subbed, self.total, other.total) + } + + #[must_use] + pub fn iter(&self) -> Iter<'_> { + Iter { + base: self.base.iter().enumerate(), + all: true, + } + } + + #[must_use] + pub fn iter_nonzero(&self) -> Iter<'_> { + Iter { + base: self.base.iter().enumerate(), + all: false, + } + } + + pub fn clear(&mut self) { + self.base.clear(); + } +} + +// manual because padding with zeros doesn't affect equality +impl<T> PartialEq for Storage<T> { + fn eq(&self, other: &Self) -> bool { + let mut li = self.base.iter().fuse(); + let mut ri = other.base.iter().fuse(); + loop { + match (li.next(), ri.next()) { + (None, None) => return true, + (l, r) => { + if l.unwrap_or(&0) != r.unwrap_or(&0) { + return false; + } + } + } + } + } +} + +impl<T> fmt::Display for Storage<T> +where + u16: From<T>, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut iter = self.iter_nonzero(); + if let Some((ty, cnt)) = iter.next() { + write!(f, "{cnt} {ty}")?; + for (ty, cnt) in iter { + write!(f, ", {cnt} {ty}")?; + } + } + Ok(()) + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, thiserror::Error)] +#[error("adding {add} to current {have} would exceed {max}")] +pub struct TryAddError { + pub have: u32, + pub add: u32, + pub max: u32, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, thiserror::Error)] +#[error("removing {sub} from current {have} would drop below {min}")] +pub struct TrySubError { + pub have: u32, + pub sub: u32, + pub min: u32, +} + +#[derive(Clone, Debug)] +pub struct Iter<'l> { + base: Enumerate<slice::Iter<'l, u32>>, + all: bool, +} + +impl<'l> Iterator for Iter<'l> { + type Item = (item::Type, u32); + + fn next(&mut self) -> Option<Self::Item> { + for (idx, cnt) in self.base.by_ref() { + if *cnt > 0 || self.all { + if let Ok(ty) = item::Type::try_from(idx as u16) { + return Some((ty, *cnt)); + } + } + } + None + } + + fn size_hint(&self) -> (usize, Option<usize>) { + (0, self.base.size_hint().1) + } +} + +impl<'l> FusedIterator for Iter<'l> where Enumerate<slice::Iter<'l, u32>>: FusedIterator {} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..1a8c302 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,32 @@ +//! crate for dealing with mindustry +#![feature( + array_chunks, + const_trait_impl, + unchecked_math, + slice_as_chunks, + slice_swap_unchecked, + let_chains +)] +#![allow(clippy::missing_safety_doc, clippy::missing_const_for_fn, clippy::perf)] +pub mod block; +mod content; +pub mod data; +pub mod fluid; +pub mod item; +mod logic; +pub mod modifier; +mod registry; +mod team; +pub mod unit; +mod utils; +#[doc(inline)] +pub use { + block::build_registry, + data::{ + dynamic::DynData, + map::{Map, MapSerializer}, + renderer::Renderable, + schematic::{Schematic, SchematicSerializer}, + Serializer, + }, +}; diff --git a/src/logic/mod.rs b/src/logic/mod.rs new file mode 100644 index 0000000..b5e7cc6 --- /dev/null +++ b/src/logic/mod.rs @@ -0,0 +1,76 @@ +use crate::content::numeric_enum; + +numeric_enum! { + pub enum LogicField for u8 | TryFromU8Error + { + TotalItems, FirstItem, TotalLiquids, TotalPower, ItemCapacity, LiquidCapacity, PowerCapacity, PowerNetCapacity, PowerNetStored, PowerNetIn, + PowerNetOut, Ammo, AmmoCapacity, Health, MaxHealth, Heat, Efficiency, Progress, Timescale, Rotation, PosX, PosY, ShootX, ShootY, Size, Dead, Range, + Shooting, Boosting, MineX, MineY, Mining, Speed, Team, Type, Flag, Controlled, Controller, Name, PayloadCount, PayloadType, Enabled, Shoot, ShootP, + Config, Color + } +} + +impl LogicField { + #[must_use] + pub const fn is_readable(self) -> bool { + use LogicField::{ + Ammo, AmmoCapacity, Boosting, Color, Controlled, Controller, Dead, Efficiency, Enabled, + FirstItem, Flag, Health, Heat, ItemCapacity, LiquidCapacity, MaxHealth, MineX, MineY, + Mining, Name, PayloadCount, PayloadType, PosX, PosY, PowerCapacity, PowerNetCapacity, + PowerNetIn, PowerNetOut, PowerNetStored, Progress, Range, Rotation, ShootX, ShootY, + Shooting, Size, Speed, Team, Timescale, TotalItems, TotalLiquids, TotalPower, Type, + }; + matches!( + self, + TotalItems + | FirstItem + | TotalLiquids + | TotalPower + | ItemCapacity + | LiquidCapacity + | PowerCapacity + | PowerNetCapacity + | PowerNetStored + | PowerNetIn + | PowerNetOut + | Ammo + | AmmoCapacity + | Health + | MaxHealth + | Heat + | Efficiency + | Progress + | Timescale + | Rotation + | PosX + | PosY + | ShootX + | ShootY + | Size + | Dead + | Range + | Shooting + | Boosting + | MineX + | MineY + | Mining + | Speed + | Team + | Type + | Flag + | Controlled + | Controller + | Name + | PayloadCount + | PayloadType + | Enabled + | Color + ) + } + + #[must_use] + pub const fn is_writable(self) -> bool { + use LogicField::{Color, Config, Enabled, Shoot, ShootP}; + matches!(self, Enabled | Shoot | ShootP | Config | Color) + } +} diff --git a/mindus/src/modifier.rs b/src/modifier.rs index 7f9777e..bf1d867 100644 --- a/mindus/src/modifier.rs +++ b/src/modifier.rs @@ -28,9 +28,3 @@ content_enum! { "invincible", } } - -impl Default for Type { - fn default() -> Self { - Self::None - } -} diff --git a/src/registry.rs b/src/registry.rs new file mode 100644 index 0000000..9603f59 --- /dev/null +++ b/src/registry.rs @@ -0,0 +1,51 @@ +use std::any::type_name; +use std::collections::hash_map::Entry; +use std::collections::HashMap; +use std::error::Error; +use std::fmt; + +pub trait RegistryEntry { + fn get_name(&self) -> &str; +} + +pub struct Registry<'l, E: RegistryEntry + fmt::Debug + 'static> { + by_name: HashMap<&'l str, &'l E>, +} + +impl<'l, E: RegistryEntry + fmt::Debug + 'static> Default for Registry<'l, E> { + fn default() -> Self { + Self { + by_name: HashMap::new(), + } + } +} + +impl<'l, E: RegistryEntry + fmt::Debug + 'static> Registry<'l, E> { + pub fn register(&mut self, val: &'l E) -> Result<&'l E, RegisterError<'l, E>> { + match self.by_name.entry(val.get_name()) { + Entry::Occupied(e) => Err(RegisterError(e.get())), + Entry::Vacant(e) => Ok(e.insert(val)), + } + } + + #[must_use] + pub fn get(&self, name: &str) -> Option<&'l E> { + self.by_name.get(name).copied() + } +} + +#[derive(Clone, Copy, Debug)] +pub struct RegisterError<'l, E: RegistryEntry + fmt::Debug + 'static>(pub &'l E); + +impl<'l, E: RegistryEntry + fmt::Debug + 'static> fmt::Display for RegisterError<'l, E> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "{} {:?} already exists", + type_name::<E>(), + self.0.get_name() + ) + } +} + +impl<'l, E: RegistryEntry + fmt::Debug + 'static> Error for RegisterError<'l, E> {} diff --git a/mindus/src/team.rs b/src/team.rs index 70fa3b7..35a651f 100644 --- a/mindus/src/team.rs +++ b/src/team.rs @@ -1,10 +1,8 @@ use std::fmt; -use atools::Chunked; - use crate::content::{Content, Type}; -#[derive(Clone, Copy, Debug, Eq, Ord, PartialOrd, Default, PartialEq)] +#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)] pub struct Team(u8); impl Team { @@ -109,16 +107,30 @@ impl Content for Team { } impl Team { - pub const fn color(self) -> [u8; 3] { - static COLORS: [[u8; 3]; 256] = include_bytes!("colors").chunked::<3>(); - COLORS[self.0 as usize] + pub const fn color(self) -> (u8, u8, u8) { + macro_rules! h { + ($x:literal) => {{ + let v = color_hex::color_from_hex!($x); + (v[0], v[1], v[2]) + }}; + } + match self { + SHARDED => h!("ffd37f"), + DERELICT => h!("4d4e58"), + CRUX => h!("f25555"), + MALIS => h!("a27ce5"), + GREEN => h!("54d67d"), + BLUE => h!("6c87fd"), + NEOPLASTIC => h!("e05438"), + _ => h!("a9a9a9"), + } } - - pub const DERELICT: Team = Team(0); - pub const SHARDED: Team = Team(1); - pub const CRUX: Team = Team(2); - pub const MALIS: Team = Team(3); - pub const GREEN: Team = Team(4); - pub const BLUE: Team = Team(5); - pub const NEOPLASTIC: Team = Team(6); } + +pub const DERELICT: Team = Team(0); +pub const SHARDED: Team = Team(1); +pub const CRUX: Team = Team(2); +pub const MALIS: Team = Team(3); +pub const GREEN: Team = Team(4); +pub const BLUE: Team = Team(5); +pub const NEOPLASTIC: Team = Team(6); diff --git a/src/unit/mod.rs b/src/unit/mod.rs new file mode 100644 index 0000000..603b376 --- /dev/null +++ b/src/unit/mod.rs @@ -0,0 +1,75 @@ +//! units +//! +//! [source](https://github.com/Anuken/Mindustry/blob/master/core/src/mindustry/content/UnitTypes.java) +use crate::content::content_enum; + +content_enum! { + pub enum Type / Unit for u16 | TryFromU16Error + { + "dagger", + "mace", + "fortress", + "scepter", + "reign", + "nova", + "pulsar", + "quasar", + "vela", + "corvus", + "crawler", + "atrax", + "spiroct", + "arkyid", + "toxopid", + "flare", + "horizon", + "zenith", + "antumbra", + "eclipse", + "mono", + "poly", + "mega", + "quad", + "oct", + "risso", + "minke", + "bryde", + "sei", + "omura", + "retusa", + "oxynoe", + "cyerce", + "aegires", + "navanax", + "alpha", + "beta", + "gamma", + "stell", + "locus", + "precept", + "vanquish", + "conquer", + "merui", + "cleroi", + "anthicus", + "anthicus-missile", + "tecta", + "collaris", + "elude", + "avert", + "obviate", + "quell", + "quell-missile", + "disrupt", + "disrupt-missile", + "renale", + "latum", + "evoke", + "incite", + "emanate", + "block", + "manifold", + "assembly-drone", + "scathe-missile", + } +} diff --git a/mindus/src/utils/array.rs b/src/utils/array.rs index 8398b8a..6685baa 100644 --- a/mindus/src/utils/array.rs +++ b/src/utils/array.rs @@ -2,7 +2,7 @@ use std::{ fmt::{Debug, Write}, ops::Deref, }; -#[derive(Clone, PartialEq, Eq, Hash)] +#[derive(Clone, PartialEq, Eq)] pub struct Array2D<T: Clone> { width: usize, height: usize, diff --git a/src/utils/image.rs b/src/utils/image.rs new file mode 100644 index 0000000..8254bb7 --- /dev/null +++ b/src/utils/image.rs @@ -0,0 +1,728 @@ +use fast_image_resize as fr; +use std::{num::NonZeroU32, slice::SliceIndex}; + +pub trait Overlay<W> { + /// Overlay with => self at coordinates x, y, without blending + /// # Safety + /// + /// UB if x, y is out of bounds + unsafe fn overlay_at(&mut self, with: &W, x: u32, y: u32) -> &mut Self; +} + +pub trait RepeatNew { + type Output; + /// Repeat self till it fills a new image of size x, y + /// # Safety + /// + /// UB if self's width is not a multiple of x, or self's height is not a multiple of y + unsafe fn repeated(&self, x: u32, y: u32) -> Self::Output; +} + +pub trait ImageUtils { + type With<'a>; + /// Tint this image with the color + fn tint(&mut self, color: (u8, u8, u8)) -> &mut Self; + /// Overlay with => self (does not blend) + /// # Safety + /// + /// UB if a.width != b.width || a.height != b.height + unsafe fn overlay(&mut self, with: Self::With<'_>) -> &mut Self; + /// rotate (squares only) + /// # Safety + /// + /// UB if image is not square + unsafe fn rotate(&mut self, times: u8) -> &mut Self; + /// flip along the horizontal axis + fn flip_h(&mut self) -> &mut Self; + /// flip along the vertical axis + fn flip_v(&mut self) -> &mut Self; + /// shadow + fn shadow(&mut self) -> &mut Self; + /// scale a image + fn scale(self, to: u32) -> Image<Vec<u8>, 4>; +} + +macro_rules! unsafe_assert { + ($cond:expr) => {{ + if !$cond { + #[cfg(debug_assertions)] + panic!("assertion failed: {} returned false", stringify!($cond)); + #[cfg(not(debug_assertions))] + unsafe { + std::hint::unreachable_unchecked() + }; + } + }}; +} + +impl Overlay<Image<&[u8], 3>> for Image<&mut [u8], 3> { + unsafe fn overlay_at(&mut self, with: &Image<&[u8], 3>, x: u32, y: u32) -> &mut Self { + for j in 0..with.height() { + for i in 0..with.width() { + let with_index = with.slice(i, j); + let their_px = with.buffer.get_unchecked(with_index); + let our_index = + really_unsafe_index(i.unchecked_add(x), j.unchecked_add(y), self.width()) + .unchecked_mul(3); + let our_px = self + .buffer + .get_unchecked_mut(our_index..our_index.unchecked_add(3)); + std::ptr::copy_nonoverlapping(their_px.as_ptr(), our_px.as_mut_ptr(), 3); + } + } + self + } +} + +impl Overlay<Image<&[u8], 4>> for Image<&mut [u8], 3> { + unsafe fn overlay_at(&mut self, with: &Image<&[u8], 4>, x: u32, y: u32) -> &mut Self { + for j in 0..with.height() { + for i in 0..with.width() { + let with_index = really_unsafe_index(i, j, with.width()).unchecked_mul(4); + // solidity + if *with.buffer.get_unchecked(with_index.unchecked_add(3)) > 128 { + let their_px = with + .buffer + .get_unchecked(with_index..with_index.unchecked_add(3)); + let our_index = + really_unsafe_index(i.unchecked_add(x), j.unchecked_add(y), self.width()) + .unchecked_mul(3); + let our_px = self + .buffer + .get_unchecked_mut(our_index..our_index.unchecked_add(3)); + std::ptr::copy_nonoverlapping(their_px.as_ptr(), our_px.as_mut_ptr(), 3); + } + } + } + self + } +} + +impl Overlay<Image<&[u8], 4>> for Image<&mut [u8], 4> { + unsafe fn overlay_at(&mut self, with: &Image<&[u8], 4>, x: u32, y: u32) -> &mut Self { + for j in 0..with.height() { + for i in 0..with.width() { + let with_index = really_unsafe_index(i, j, with.width()).unchecked_mul(4); + let their_px = with + .buffer + .get_unchecked(with_index..with_index.unchecked_add(4)); + if *their_px.get_unchecked(3) > 128 { + let our_index = + really_unsafe_index(i.unchecked_add(x), j.unchecked_add(y), self.width()) + .unchecked_mul(4); + let our_px = self + .buffer + .get_unchecked_mut(our_index..our_index.unchecked_add(4)); + std::ptr::copy_nonoverlapping(their_px.as_ptr(), our_px.as_mut_ptr(), 4); + } + } + } + + self + } +} + +impl RepeatNew for Image<&[u8], 4> { + type Output = Image<Vec<u8>, 4>; + unsafe fn repeated(&self, x: u32, y: u32) -> Self::Output { + let mut img = Image::alloc(x, y); // could probably optimize this a ton but eh + for x in 0..(x / self.width()) { + for y in 0..(y / self.height()) { + let a: &mut Image<&mut [u8], 4> = &mut img.as_mut(); + a.overlay_at(self, x * self.width(), y * self.height()); + } + } + img + } +} + +pub fn flip_v<const CHANNELS: usize>(img: &mut Image<&mut [u8], CHANNELS>) { + for y in 0..img.height() / 2 { + for x in 0..img.width() { + unsafe { + // SAFETY: cant overflow + let y2 = img.height().unchecked_sub(y).unchecked_sub(1); + // SAFETY: within bounds + let p2 = img.pixel(x, y2); + let p = img.pixel(x, y); + img.set_pixel(x, y2, p); + img.set_pixel(x, y, p2); + } + } + } +} + +pub fn flip_h<const CHANNELS: usize>(img: &mut Image<&mut [u8], CHANNELS>) { + for y in 0..img.height() { + for x in 0..img.width() / 2 { + // SAFETY: This cannot be out of bounds + unsafe { + let x2 = img.width().unchecked_sub(x).unchecked_sub(1); + let p2 = img.pixel(x2, y); + let p = img.pixel(x, y); + img.set_pixel(x2, y, p); + img.set_pixel(x, y, p2); + } + } + } +} + +pub fn rot_180<const CHANNELS: usize>(img: &mut Image<&mut [u8], CHANNELS>) { + for y in 0..img.height() / 2 { + for x in 0..img.width() { + // SAFETY: this is safe because it cannot be out of bounds + unsafe { + let p = img.pixel(x, y); + let x2 = img.width() - x - 1; + let y2 = img.height() - y - 1; + let p2 = img.pixel(x2, y2); + img.set_pixel(x, y, p2); + img.set_pixel(x2, y2, p); + } + } + } + + if img.height() % 2 != 0 { + let middle = img.height() / 2; + + for x in 0..img.width() / 2 { + // SAFETY: this is safe because it cannot be out of bounds + unsafe { + let p = img.pixel(x, middle); + let x2 = img.width() - x - 1; + + let p2 = img.pixel(x2, middle); + img.set_pixel(x, middle, p2); + img.set_pixel(x2, middle, p); + } + } + } +} + +/// # Safety +/// +/// UB if the image is not square +#[inline(never)] +pub unsafe fn rot_90<const CHANNELS: usize>(img: &mut Image<&mut [u8], CHANNELS>) { + debug_assert_eq!(img.width(), img.height()); + let size = img.width(); + flip_v(img); + for i in 0..size { + for j in i..size { + for c in 0..CHANNELS { + img.buffer.swap_unchecked( + (i * size + j) as usize * CHANNELS + c, + (j * size + i) as usize * CHANNELS + c, + ); + } + } + } +} + +/// # Safety +/// +/// UB if the image is not square +pub unsafe fn rot_270<const CHANNELS: usize>(img: &mut Image<&mut [u8], CHANNELS>) { + debug_assert_eq!(img.width(), img.height()); + flip_h(img); + let size = img.width(); + for i in 0..size { + for j in i..size { + for c in 0..CHANNELS { + img.buffer.swap_unchecked( + (i * size + j) as usize * CHANNELS + c, + (j * size + i) as usize * CHANNELS + c, + ); + } + } + } +} + +impl ImageUtils for Image<&mut [u8], 4> { + unsafe fn rotate(&mut self, times: u8) -> &mut Self { + match times { + 2 => rot_180(self), + 1 => unsafe { rot_90(self) }, + 3 => unsafe { rot_270(self) }, + _ => {} + } + self + } + + fn tint(&mut self, (r, g, b): (u8, u8, u8)) -> &mut Self { + let [tr, tg, tb] = [r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0]; + for [r, g, b, _] in self.buffer.array_chunks_mut::<4>() { + *r = (*r as f32 * tr) as u8; + *g = (*g as f32 * tg) as u8; + *b = (*b as f32 * tb) as u8; + } + self + } + type With<'a> = &'a Image<&'a [u8], 4>; + unsafe fn overlay(&mut self, with: &Image<&[u8], 4>) -> &mut Self { + unsafe_assert!(self.width() == with.width()); + unsafe_assert!(self.height() == with.height()); + for (i, other_pixels) in with.chunked().enumerate() { + if other_pixels[3] > 128 { + unsafe { + let own_pixels = self + .buffer + .get_unchecked_mut(i.unchecked_mul(4)..i.unchecked_mul(4).unchecked_add(4)); + std::ptr::copy_nonoverlapping( + other_pixels.as_ptr(), + own_pixels.as_mut_ptr(), + 4, + ); + } + } + } + self + } + + // this function is very cold but im removing image so might as well use fir + fn scale(self, to: u32) -> Image<Vec<u8>, 4> { + let from = + fr::Image::from_slice_u8(self.width, self.height, self.buffer, fr::PixelType::U8x4) + .unwrap(); + let to = to.try_into().unwrap(); + let mut dst = fr::Image::new(to, to, fr::PixelType::U8x4); + fr::Resizer::new(fr::ResizeAlg::Nearest) + .resize(&from.view(), &mut dst.view_mut()) + .unwrap(); + Image::new(to, to, dst.into_vec()) + } + + fn shadow(&mut self) -> &mut Self { + let mut shadow: Image<Vec<u8>, 4> = + Image::new(self.width, self.height, self.buffer.to_vec()); + for [r, g, b, a] in shadow.buffer.array_chunks_mut() { + if *a < 128 { + *r /= 10; + *g /= 10; + *b /= 10; + } + } + blurslice::gaussian_blur_bytes::<4>( + &mut shadow.buffer, + self.width() as usize, + self.height() as usize, + 9.0, + ) + .unwrap(); + for ([r, g, b, a], &[from_r, from_g, from_b, from_a]) in self + .buffer + .array_chunks_mut() + .zip(shadow.buffer.array_chunks()) + { + if *a == 0 { + (*r, *g, *b, *a) = (from_r, from_g, from_b, from_a); + } + } + self + } + + #[inline] + fn flip_h(&mut self) -> &mut Self { + flip_h(self); + self + } + + #[inline(always)] + fn flip_v(&mut self) -> &mut Self { + flip_v(self); + self + } +} + +#[inline] +unsafe fn really_unsafe_index(x: u32, y: u32, w: u32) -> usize { + // y * w + x + (y as usize) + .unchecked_mul(w as usize) + .unchecked_add(x as usize) +} + +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Image<T, const CHANNELS: usize> { + pub buffer: T, + pub width: NonZeroU32, + pub height: NonZeroU32, +} + +impl<const CHANNELS: usize> Default for Image<&'static [u8], CHANNELS> { + fn default() -> Self { + Self { + buffer: &[0; CHANNELS], + width: NonZeroU32::new(1).unwrap(), + height: NonZeroU32::new(1).unwrap(), + } + } +} + +impl<T, const CHANNELS: usize> Image<T, CHANNELS> { + #[inline] + pub fn height(&self) -> u32 { + self.height.into() + } + + #[inline] + pub fn width(&self) -> u32 { + self.width.into() + } + + #[inline] + pub const fn new(width: NonZeroU32, height: NonZeroU32, buffer: T) -> Self { + Image { + width, + height, + buffer, + } + } +} + +impl<const CHANNELS: usize> Image<&[u8], CHANNELS> { + #[inline] + pub const fn copy(&self) -> Self { + Self { + width: self.width, + height: self.height, + buffer: self.buffer, + } + } +} + +impl<T: std::ops::Deref<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> { + /// # Safety + /// + /// - UB if x, y is out of bounds + /// - UB if buffer is too small + #[inline] + pub unsafe fn slice(&self, x: u32, y: u32) -> impl SliceIndex<[u8], Output = [u8]> { + debug_assert!(x < self.width(), "x out of bounds"); + debug_assert!(y < self.height(), "y out of bounds"); + let index = really_unsafe_index(x, y, self.width()).unchecked_mul(CHANNELS); + debug_assert!(self.buffer.len() > index); + index..index.unchecked_add(CHANNELS) + } + + #[inline] + pub fn chunked(&self) -> impl Iterator<Item = &[u8; CHANNELS]> { + unsafe_assert!(self.buffer.len() > CHANNELS); + unsafe_assert!(self.buffer.len() % CHANNELS == 0); + self.buffer.array_chunks::<CHANNELS>() + } + + /// Return a pixel at (x, y). + /// # Safety + /// + /// Refer to [`slice`] + #[inline] + pub unsafe fn pixel(&self, x: u32, y: u32) -> [u8; CHANNELS] { + *(self.buffer.get_unchecked(self.slice(x, y)).as_ptr().cast()) + } +} +impl<T: std::ops::DerefMut<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> { + /// Return a mutable reference to a pixel at (x, y). + /// # Safety + /// + /// Refer to [`slice`] + #[inline] + pub unsafe fn pixel_mut(&mut self, x: u32, y: u32) -> &mut [u8] { + let idx = self.slice(x, y); + self.buffer.get_unchecked_mut(idx) + } + + #[inline] + pub fn chunked_mut(&mut self) -> impl Iterator<Item = &mut [u8; CHANNELS]> { + self.buffer.array_chunks_mut::<CHANNELS>() + } + + #[inline] + pub unsafe fn set_pixel(&mut self, x: u32, y: u32, px: [u8; CHANNELS]) { + std::ptr::copy_nonoverlapping(px.as_ptr(), self.pixel_mut(x, y).as_mut_ptr(), CHANNELS); + } +} + +impl<const CHANNELS: usize> Image<Vec<u8>, CHANNELS> { + pub fn alloc(width: u32, height: u32) -> Self { + Image { + width: width.try_into().unwrap(), + height: height.try_into().unwrap(), + buffer: vec![0; CHANNELS * width as usize * height as usize], + } + } + + pub fn as_ref(&self) -> Image<&[u8], CHANNELS> { + Image::new(self.width, self.height, &self.buffer) + } + + pub fn as_mut(&mut self) -> Image<&mut [u8], CHANNELS> { + Image::new(self.width, self.height, &mut self.buffer) + } +} + +impl Image<Vec<u8>, 4> { + pub fn remove_channel(&mut self) -> Image<Vec<u8>, 3> { + let mut new = vec![0; self.width() as usize * self.height() as usize * 3]; + for (&[r, g, b, _], [nr, ng, nb]) in self + .buffer + .array_chunks::<4>() + .zip(new.array_chunks_mut::<3>()) + { + (*nr, *ng, *nb) = (r, g, b); + } + Image::new(self.width, self.height, new) + } +} + +impl Image<Vec<u8>, 3> { + #[cfg(feature = "bin")] + pub fn save(&self, f: impl AsRef<std::path::Path>) { + image::save_buffer( + f, + &self.buffer, + self.width(), + self.height(), + image::ColorType::Rgb8, + ) + .unwrap(); + } +} + +#[derive(Clone, Debug)] +pub enum ImageHolder<const CHANNELS: usize> { + Borrow(Image<&'static [u8], CHANNELS>), + Own(Image<Vec<u8>, CHANNELS>), +} + +impl<const CHANNELS: usize> ImageHolder<CHANNELS> { + #[must_use] + pub fn own(self) -> Image<Vec<u8>, CHANNELS> { + match self { + Self::Own(x) => x, + Self::Borrow(x) => Image::new(x.width, x.height, x.buffer.to_vec()), + } + } +} + +impl<const CHANNELS: usize> ImageHolder<CHANNELS> { + #[must_use] + #[inline] + pub fn borrow(&self) -> Image<&[u8], CHANNELS> { + match self { + Self::Own(x) => x.as_ref(), + Self::Borrow(x) => x.clone(), + } + } + + #[must_use] + #[inline] + pub fn borrow_mut(&mut self) -> Image<&mut [u8], CHANNELS> { + match self { + Self::Own(x) => Image::new(x.width, x.height, &mut x.buffer), + Self::Borrow(_) => { + *self = Self::from(std::mem::replace(self, Self::from(Image::default())).own()); + self.borrow_mut() + } + } + } +} + +impl Overlay<ImageHolder<4>> for ImageHolder<4> { + unsafe fn overlay_at(&mut self, with: &ImageHolder<4>, x: u32, y: u32) -> &mut Self { + self.borrow_mut().overlay_at(&with.borrow(), x, y); + self + } +} + +impl ImageUtils for ImageHolder<4> { + fn tint(&mut self, color: (u8, u8, u8)) -> &mut Self { + self.borrow_mut().tint(color); + self + } + type With<'a> = &'a Self; + unsafe fn overlay(&mut self, with: &Self) -> &mut Self { + self.borrow_mut().overlay(&with.borrow()); + self + } + + unsafe fn rotate(&mut self, times: u8) -> &mut Self { + if times == 0 { + return self; + } + // borrow mut may clone, so try to avoid + self.borrow_mut().rotate(times); + self + } + + fn flip_h(&mut self) -> &mut Self { + self.borrow_mut().flip_h(); + self + } + + fn flip_v(&mut self) -> &mut Self { + self.borrow_mut().flip_v(); + self + } + + fn shadow(&mut self) -> &mut Self { + self.borrow_mut().shadow(); + self + } + + fn scale(mut self, to: u32) -> Image<Vec<u8>, 4> { + self.borrow_mut().scale(to) + } +} + +impl<const CHANNELS: usize> From<Image<&'static [u8], CHANNELS>> for ImageHolder<CHANNELS> { + fn from(value: Image<&'static [u8], CHANNELS>) -> Self { + Self::Borrow(value) + } +} + +impl<const CHANNELS: usize> From<Image<Vec<u8>, CHANNELS>> for ImageHolder<CHANNELS> { + fn from(value: Image<Vec<u8>, CHANNELS>) -> Self { + Self::Own(value) + } +} + +#[cfg(test)] +mod tests { + use super::*; + macro_rules! img { + [[$($v:literal),+] [$($v2:literal),+]] => {{ + let from: Image<Vec<u8>, 1> = Image::new( + 2.try_into().unwrap(), + 2.try_into().unwrap(), + vec![$($v,)+ $($v2,)+] + ); + from + }} + } + + #[test] + fn rem_chnl_test() { + let mut img: Image<_, 4> = Image::alloc(2, 1); + unsafe { img.set_pixel(1, 0, [255, 165, 0, 241]) }; + assert_eq!(unsafe { img.pixel(1, 0) }, [255, 165, 0, 241]); + assert_eq!(unsafe { img.pixel(0, 0) }, [0, 0, 0, 0]); + let img = img.remove_channel(); + assert_eq!(unsafe { img.pixel(1, 0) }, [255, 165, 0]); + } + + #[test] + fn rotate_90() { + let mut from = img![ + [00, 01] + [02, 10] + ]; + unsafe { rot_90(&mut from.as_mut()) }; + assert_eq!( + from, + img![ + [02, 00] + [10, 01] + ] + ); + } + + #[test] + fn rotate_180() { + let mut from = img![ + [00, 01] + [02, 10] + ]; + rot_180(&mut from.as_mut()); + assert_eq!( + from, + img![ + [10, 02] + [01, 00] + ] + ); + } + + #[test] + fn rotate_270() { + let mut from = img![ + [00, 01] + [20, 10] + ]; + unsafe { rot_270(&mut from.as_mut()) }; + assert_eq!( + from, + img![ + [01, 10] + [00, 20] + ] + ); + } + + #[test] + fn flip_vertical() { + let mut from = img![ + [90, 01] + [21, 42] + ]; + flip_v(&mut from.as_mut()); + assert_eq!( + from, + img![ + [21, 42] + [90, 01] + ] + ) + } + #[test] + fn flip_horizontal() { + let mut from = img![ + [90, 01] + [21, 42] + ]; + flip_h(&mut from.as_mut()); + assert_eq!( + from, + img![ + [01, 90] + [42, 21] + ] + ) + } + + #[test] + fn scale() { + let mut from = Image::alloc(6, 6); + unsafe { from.set_pixel(3, 3, [255, 255, 255, 255]) }; + let from = from.as_mut().scale(12); + assert_eq!(unsafe { from.pixel(6, 6) }, [255, 255, 255, 255]); + } +} + +pub fn blend(bg: &mut [u8; 4], fg: [u8; 4]) { + if fg[3] == 0 { + return; + } + if fg[3] == 255 { + *bg = fg; + return; + } + let bg_a = bg[3] as f32 / 255.0; + let fg_a = fg[3] as f32 / 255.0; + let a = bg_a + fg_a - bg_a * fg_a; + if a == 0.0 { + return; + }; + *bg = [ + (255.0 + * ((((fg[0] as f32 / 255.0) * fg_a) + ((bg[0] as f32 / 255.0) * bg_a) * (1.0 - fg_a)) + / a)) as u8, + (255.0 + * ((((fg[1] as f32 / 255.0) * fg_a) + ((bg[1] as f32 / 255.0) * bg_a) * (1.0 - fg_a)) + / a)) as u8, + (255.0 + * ((((fg[2] as f32 / 255.0) * fg_a) + ((bg[2] as f32 / 255.0) * bg_a) * (1.0 - fg_a)) + / a)) as u8, + (255.0 * a) as u8, + ] +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..6e781fe --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1,3 @@ +pub mod array; +pub mod image; +pub use self::image::{Image, ImageHolder, ImageUtils, Overlay, RepeatNew as Repeat}; |