Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs115
1 files changed, 0 insertions, 115 deletions
diff --git a/build.rs b/build.rs
deleted file mode 100644
index 94230a4..0000000
--- a/build.rs
+++ /dev/null
@@ -1,115 +0,0 @@
-#![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();
- }
-}