fixup gen_sprites

This commit is contained in:
tali 2024-01-19 18:19:59 -05:00
parent eded1071c4
commit 2d367e6ded
2 changed files with 19 additions and 12 deletions

View File

@ -6,7 +6,7 @@ if [[ $# < 1 ]]; then
fi fi
src_dir=$1 src_dir=$1
out_dir=assets/sprite/ out_dir=assets/sprites/
dpi=192 dpi=192
svg_to_png="inkscape -C" svg_to_png="inkscape -C"
@ -24,8 +24,11 @@ function gen() {
dst_png=$out_dir/$name.png dst_png=$out_dir/$name.png
dst_map=$out_dir/$name.map dst_map=$out_dir/$name.map
$svg_to_png $src -o $dst_png -d $dpi || exit 1 [[ "$src" -nt "$dst_png" ]] &&
$gen_sprite_map < $src > $dst_map || exit 1 ($svg_to_png $src -o $dst_png -d $dpi || exit 1)
[[ "$src" -nt "$dst_map" ]] &&
($gen_sprite_map < $src > $dst_map || exit 1)
} }
gen blocks 192 gen blocks 192

View File

@ -16,6 +16,12 @@ let sexp_of_clip c =
List.map Sexplib.Conv.sexp_of_int List.map Sexplib.Conv.sexp_of_int
[c.x; c.y; c.w; c.h; c.ox; c.oy]) [c.x; c.y; c.w; c.h; c.ox; c.oy])
let sexp_of_sprite_map clips =
Sexp.List (
Atom "map" ::
(List.sort (fun a b -> compare b.name a.name) clips |>
List.rev_map sexp_of_clip))
let svg v = ("http://www.w3.org/2000/svg", v) let svg v = ("http://www.w3.org/2000/svg", v)
let ink v = ("http://www.inkscape.org/namespaces/inkscape", v) let ink v = ("http://www.inkscape.org/namespaces/inkscape", v)
let sodi v = ("http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd", v) let sodi v = ("http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd", v)
@ -98,17 +104,15 @@ let extract_clips xml =
| `El_end -> el_end () | `El_end -> el_end ()
do () done; do () done;
List.sort s.clips
(fun a b -> String.compare a.name b.name)
s.clips
let gen_sprite_map ic oc = let gen_sprite_map ic oc =
Xmlm.make_input (`Channel ic) |> let sprite_map =
extract_clips |> Xmlm.make_input (`Channel ic) |>
List.iter (fun clip -> extract_clips
Format.kasprintf (output_string oc) in
"%a\n" Sexp.pp (sexp_of_clip clip)) Format.kasprintf (output_string oc) "%a\n"
Sexp.pp_hum (sexp_of_sprite_map sprite_map)
let () = let () =
gen_sprite_map stdin stdout gen_sprite_map stdin stdout