From 4c67891254c70c9bb3914225bd748c63aeb9a242 Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Thu, 14 Sep 2023 12:13:44 +0200 Subject: [PATCH] all physics layers --- .gitignore | 1 + diff1.map | Bin 892 -> 0 bytes diff2.map | Bin 901 -> 0 bytes result.map | Bin 1437 -> 0 bytes src/cli.rs | 80 +++++++++++++++++++++++++++++++++++++++++++---------- 5 files changed, 67 insertions(+), 14 deletions(-) delete mode 100644 diff1.map delete mode 100644 diff2.map delete mode 100644 result.map diff --git a/.gitignore b/.gitignore index ea8c4bf..de9fd7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +*.map diff --git a/diff1.map b/diff1.map deleted file mode 100644 index 5f9ef7f7dcd1741fa8c3b4fe2c30be565ba98e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmaizPbdU&6vyA}AAhoAM+vQjlHG%Yq@++&4szLxgW@7v9G2E?bI_KH1Ckt+t#xoz zQsU&`Pp#aP11=WpxTPq2usgor*_j&cmRFy7?>E2qzVG#$-;C-Lx<^E!Zjr1@qz17H zu#_&W*Whha5IA8SQcS$?T(hnUR0HM~jFKkfBH~(j))?s}oVk*fG|G1pmI=I4K_h|^!g_1e zGLiS(OPVs&5b;XL%CKi)o!y_4GnXbnLH@LrZ|k$J&w_P0-oHQtugr7czO#S%$ry&~ zpB|ei4U$f2aX^29#lOOPtMNge^N6SXNFH5@@avaa3&(3dVk}! zvQ(!XxnGUR{9GdM-PzdiSNF_ELq)%*qq9Yo)6I_6crtf&j9C;Uh#e&0=m!=$ z6e`rt6^bBc5>W)jO%$t-@_uxqaJ@9+y+;`9UpTm9kjm9VAUJ+UJ zh~(=;8W9HomePs!M|j5!1a4S|6pas_Yu43+2Eg2ss%SDUBW{9cjY90VV>mHE49tT) zkOyNZ+5vmu3gp2(Fev~V2F(8qtY`&Hd`&An=hp^9?Ygt93dM9n0z#BC* z5-1_8w@0lK`BV6PN*QX1_@v9uaAskh)1Q+wmnOhK{#!fW(Pv$s4eM~c&w&PB>2u(| zyMOh`C{_2L9$JffZd^S$7e>`4c-HDsxhYgCDd#(JHa)+s#a-SU-b=ox8LlbSnyjvJhy79IFl~=KCQ2}G{lm#UF8;U_*F0<`y1hv)K=lVw^_oC(rYT! z|9#c7(0UokOnW)neg4|Jbn)i;+nxT9huvd289~L7!Jq1Q`(a|P`Smt4wPk-v)Dq(f DS=`{m diff --git a/result.map b/result.map deleted file mode 100644 index e4665dcc72a0c9d0f1383a3979a16b26a470ea76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1437 zcma)+J!lhQ7{{N>U98f?UO{T96(R`9P*6lrp_U$WRJvqPbg&p{hbrxsMF`ZPL*pP0 zMGLLcxmpl)a4;IEOQ&{dU5xcE5U^UmFo@**|KHxh<*Vj_U*7lL=i~pp_vXDJD`^=b zk`0T@V$z0rC)fvG=_0={`lewLgn1!=FhRP4d88dMw&IFJFf!J~-1OElsP#UK6W|#r zg9MUhzz#^F_)E|Wf#YBZq`)1p2xtRf6ikC9unuN{8LtP+st@+X?z+`4`>Hoa_QUVV zFrmtJYg8?%hm2=}QEN~mg($*&zPm=|Y=2x~8P*8xQG>lT>#tZW<-a)J9mzPKcrpo3 z$d9MCzX$G~dNctV;;(w~eviyM<-t50Wi_aQCG{@p5ALDjepDurIW# zOz_)CLvKOD*Wow_Sch|t+_PibIh41XX&5bNsDdmC8w5cO1JBN9C!evMpUpJFEo%5W zwHmyeCHw2D?UahmGzJ#Aw73}to(O=B=^FNMEfIV&%5D5N`6?U59PJVcJqn8i58pg^W`RCsg%1)pMPsE$2-vSb{pPN1T<(2*@d5p>SCbqvC%SH& g6+`JAP*H!}wWZtEg&3Zox2dAa Result<()> { .find_physics_layer() .expect("couldn't find game layer"); - let tiles_old = map_old_game.tiles().unwrap_ref(); - let tiles_new = map_new_game.tiles().unwrap_ref(); + let game_diff_group = diff_layer(map_old_game, map_new_game, "Game")?; + result.groups.push(game_diff_group); + + if let (Some(map_old_layer), Some(map_new_layer)) = ( + map_old.find_physics_layer::(), + map_new.find_physics_layer::(), + ) { + let diff_group = diff_layer(map_old_layer, map_new_layer, "Front")?; + result.groups.push(diff_group); + } + + if let (Some(map_old_layer), Some(map_new_layer)) = ( + map_old.find_physics_layer::(), + map_new.find_physics_layer::(), + ) { + let diff_group = diff_layer(map_old_layer, map_new_layer, "Tele")?; + result.groups.push(diff_group); + } + + if let (Some(map_old_layer), Some(map_new_layer)) = ( + map_old.find_physics_layer::(), + map_new.find_physics_layer::(), + ) { + let diff_group = diff_layer(map_old_layer, map_new_layer, "Switch")?; + result.groups.push(diff_group); + } + + if let (Some(map_old_layer), Some(map_new_layer)) = ( + map_old.find_physics_layer::(), + map_new.find_physics_layer::(), + ) { + let diff_group = diff_layer(map_old_layer, map_new_layer, "Speedup")?; + result.groups.push(diff_group); + } + + if let (Some(map_old_layer), Some(map_new_layer)) = ( + map_old.find_physics_layer::(), + map_new.find_physics_layer::(), + ) { + let diff_group = diff_layer(map_old_layer, map_new_layer, "Tune")?; + result.groups.push(diff_group); + } + + result.save_file(&result_path)?; + + Ok(()) +} + +fn diff_layer(layer_old: &T, layer_new: &T, name: &str) -> Result +where + T: TilemapLayer, +{ + let tiles_old = layer_old.tiles().unwrap_ref(); + let tiles_new = layer_new.tiles().unwrap_ref(); let width = tiles_old.dim().1.min(tiles_new.dim().1); let height = tiles_old.dim().0.min(tiles_new.dim().0); let mut diff_group = Group { - name: "Difference".to_string(), + name: format!("{} Diff", name), ..Default::default() }; @@ -81,8 +136,8 @@ pub fn run_cli() -> Result<()> { for x in 0..width { for y in 0..height { - let index_old = tiles_old[(y, x)].id; - let index_new = tiles_new[(y, x)].id; + let index_old = tiles_old[(y, x)].id(); + let index_new = tiles_new[(y, x)].id(); if index_old == 0 && index_new != 0 { tiles_add[(y, x)].id = 1; @@ -105,17 +160,14 @@ pub fn run_cli() -> Result<()> { diff_group.layers.push(layer_del); diff_group.layers.push(layer_mod); - result.groups.push(diff_group); - - result.save_file(&result_path)?; - - println!("{}: {}", "Additions".green(), additions); - println!("{}: {}", "Deletions".red(), deletions); + println!("Summary of changes to layer '{}':", name.purple()); + println!("- {}: {}", "Additions".green(), additions); + println!("- {}: {}", "Deletions".red(), deletions); println!( - "{}: {}", + "- {}: {}", "Modifications".fg_rgb::<255, 255, 0>(), modifications ); - Ok(()) + Ok(diff_group) }