diff --git a/src/main.rs b/src/main.rs index d019e90..139bee3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,6 @@ use std::path::PathBuf; -use twmap::{ - CompressedData, FrontLayer, GameLayer, Layer, Load, PhysicsLayer, QuadsLayer, SpeedupLayer, - SwitchLayer, TeleLayer, TilemapLayer, TilesLayer, TuneLayer, TwMap, -}; +use twmap::TwMap; use clap::Parser; @@ -13,230 +10,12 @@ struct Args { out_map: PathBuf, } -fn copy_layer(src: &mut TwMap, dst: &mut TwMap) -> Option<()> { - let src_layer = src.find_physics_layer_mut::()?.tiles_mut().unwrap_mut(); - let dst_layer = dst - .find_physics_layer_mut::() - .unwrap() - .tiles_mut() - .unwrap_mut(); - - let width = src_layer.ncols(); - let height = src_layer.nrows(); - - for x in 0..width { - for y in 0..height { - dst_layer[[y, width - (1 + x)]] = src_layer[[y, x]]; - } - } - - Some(()) -} - fn main() { let Args { in_map, out_map } = Args::parse(); let mut src_map = TwMap::parse_file(&in_map).expect("parsing failed"); src_map.load().expect("loading failed"); - let mut dst_map = TwMap::parse_file(&in_map).expect("parsing failed"); - dst_map.load().expect("loading failed"); - for g in 0..src_map.groups.len() { - for l in 0..src_map.groups[g].layers.len() { - match ( - &mut src_map.groups[g].layers[l], - &mut dst_map.groups[g].layers[l], - ) { - ( - Layer::Game(GameLayer { - tiles: ref mut src_tiles, - }), - Layer::Game(GameLayer { - tiles: ref mut dst_tiles, - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - ( - Layer::Tiles(TilesLayer { - tiles: ref mut src_tiles, - .. - }), - Layer::Tiles(TilesLayer { - tiles: ref mut dst_tiles, - .. - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - ( - Layer::Tele(TeleLayer { - tiles: ref mut src_tiles, - .. - }), - Layer::Tele(TeleLayer { - tiles: ref mut dst_tiles, - .. - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - ( - Layer::Front(FrontLayer { - tiles: ref mut src_tiles, - .. - }), - Layer::Front(FrontLayer { - tiles: ref mut dst_tiles, - .. - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - ( - Layer::Speedup(SpeedupLayer { - tiles: ref mut src_tiles, - .. - }), - Layer::Speedup(SpeedupLayer { - tiles: ref mut dst_tiles, - .. - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - ( - Layer::Switch(SwitchLayer { - tiles: ref mut src_tiles, - .. - }), - Layer::Switch(SwitchLayer { - tiles: ref mut dst_tiles, - .. - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - ( - Layer::Tune(TuneLayer { - tiles: ref mut src_tiles, - .. - }), - Layer::Tune(TuneLayer { - tiles: ref mut dst_tiles, - .. - }), - ) => { - src_tiles.load().unwrap(); - dst_tiles.load().unwrap(); - let CompressedData::Loaded(src_tiles) = &src_tiles else { - unreachable!() - }; - let CompressedData::Loaded(ref mut dst_tiles) = dst_tiles else { - unreachable!() - }; - let width = src_tiles.ncols(); - let height = src_tiles.nrows(); - - for x in 0..width { - for y in 0..height { - dst_tiles[[y, width - (1 + x)]] = src_tiles[[y, x]]; - } - } - } - _ => (), - } - } - } + let mut dst_map = src_map.mirror().unwrap(); // save map println!("exporting map to {:?}", &out_map);