Load all monologues in wasm build (hopefully) by loading each one by one

main
Elijah Voigt 4 months ago
parent b1832b6349
commit 1c7dba07c0

3
.gitignore vendored

@ -11,3 +11,6 @@ dist/*
# Generated VERSION file for builds
VERSION
# Generated MONOLOGUES list for wasm build
assets/trees/MONOLOGUES

1
Cargo.lock generated

@ -2228,6 +2228,7 @@ dependencies = [
"chrono",
"serde",
"thiserror 2.0.12",
"walkdir",
]
[[package]]

@ -19,3 +19,4 @@ features = ["wayland", "dynamic_linking"]
[build-dependencies]
chrono = "*"
walkdir = "*"

@ -1,40 +1,59 @@
use std::fs::File;
use std::io::Write;
fn main() {
{
use chrono::prelude::*;
use std::fs::File;
use std::io::Write;
use std::process::Command;
// Date of build
let now = Utc::now().format("%Y%m%d%H%M%S");
// Latest commit ID
let git_sha = String::from_utf8(
Command::new("git")
.arg("rev-parse")
.arg("--short")
.arg("HEAD")
.output()
.expect("Failed to get git sha")
.stdout,
)
.expect("Read stdout from git sha command");
// If the workspace is dirty or clean
let clean = Command::new("git")
.arg("diff")
.arg("--quiet")
.status()
.expect("Failed to run git diff")
.success();
let mut file = File::create("VERSION").expect("Create VERSION file");
if clean {
write!(file, "0.0.0-{now}+{}", git_sha.trim()).expect("Write version to VERSION file");
} else {
write!(file, "0.0.0-{now}+{}-dirty", git_sha.trim())
.expect("Write version to VERSION file");
}
write_version_file();
write_monologues_file();
}
fn write_version_file() {
use chrono::prelude::*;
use std::process::Command;
// Date of build
let now = Utc::now().format("%Y%m%d%H%M%S");
// Latest commit ID
let git_sha = String::from_utf8(
Command::new("git")
.arg("rev-parse")
.arg("--short")
.arg("HEAD")
.output()
.expect("Failed to get git sha")
.stdout,
)
.expect("Read stdout from git sha command");
// If the workspace is dirty or clean
let clean = Command::new("git")
.arg("diff")
.arg("--quiet")
.status()
.expect("Failed to run git diff")
.success();
let mut file = File::create("VERSION").expect("Create VERSION file");
if clean {
write!(file, "0.0.0-{now}+{}", git_sha.trim()).expect("Write version to VERSION file");
} else {
write!(file, "0.0.0-{now}+{}-dirty", git_sha.trim())
.expect("Write version to VERSION file");
}
}
fn write_monologues_file() {
let mut file = File::create("assets/trees/MONOLOGUES").expect("Create MONOLOGUES file");
walkdir::WalkDir::new("assets/trees")
.into_iter()
.filter_map(|entry| entry.ok())
.filter(|entry| {
entry.path().extension() == Some(std::ffi::OsStr::new("mono"))
})
.for_each(|entry| {
let _ = writeln!(file, "{}", entry.path().to_string_lossy().strip_prefix("assets/").unwrap());
});
}

@ -528,17 +528,11 @@ fn delete_tree(trigger: Trigger<Pointer<Click>>, mut commands: Commands) {
/// Load all monologues so they are in the asset store and trigger on-load events
fn load_monologues(
server: ResMut<AssetServer>,
mut loaded_folder: Local<Handle<LoadedFolder>>,
mut loaded_assets: Local<Vec<Handle<Monologue>>>,
) {
// TODO: Figure out a programatic way to load all assets in the web version...
// Likely a mega asset that points to all sub-assets or something silly
*loaded_folder = server.load_folder("trees");
*loaded_assets = vec![
server.load("trees/red.mono"),
server.load("trees/green.mono"),
server.load("trees/blue.mono"),
];
*loaded_assets = include_str!("../../../assets/trees/MONOLOGUES").split("\n").map(|path| {
server.load(path)
}).collect();
}
fn spawn_debug_buttons(
@ -667,7 +661,7 @@ fn populate_tree(
let y: f32 = b.cast_signed().wrapping_div(4).into();
// Avoid mesh clipping by offsetting each on the z axis
let z = trees.iter().len() as f32;
info!("Coordiantes: {x} {y}");
debug!("Coordiantes: {x} {y}");
Transform::from_xyz(x, z, y).with_scale(Vec3::splat(10.0))
};
@ -680,7 +674,7 @@ fn populate_tree(
let mesh = Mesh3d(meshes.add(Plane3d::new(Vec3::Y, Vec2::splat(1.0))));
info!("Fleshing out monologuing tree");
debug!("Fleshing out monologuing tree");
commands
.entity(trigger.target())

Loading…
Cancel
Save