pub(crate) mod command;
pub(crate) mod export;
pub(crate) mod load;
pub(crate) mod types_json;
use crate::prelude::*;
use bevy::prelude::*;
use std::{fs::File, io::BufWriter, ops::Deref, path::Path};
pub fn export_types(reg: &AppTypeRegistry, path: impl AsRef<Path>, filter: &TiledFilter) {
let file = File::create(path).unwrap();
let writer = BufWriter::new(file);
let registry = export::TypeExportRegistry::from_registry(reg.read().deref(), filter);
serde_json::to_writer_pretty(writer, ®istry.to_vec()).unwrap();
}
pub(crate) fn plugin(app: &mut App) {
app.add_systems(
Startup,
|reg: Res<AppTypeRegistry>, config: Res<TiledPluginConfig>| {
if let Some(path) = &config.tiled_types_export_file {
info!("Export Tiled types to '{:?}'", &path);
export_types(®, path, &config.tiled_types_filter);
}
},
);
}