diff --git a/.gitignore b/.gitignore index 6246f91..1932f30 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ dist-ssr *.njsproj *.sln *.sw? + +/public/sprites diff --git a/build-sprites.sh b/build-sprites.sh index 3ef5fe2..0a7274e 100755 --- a/build-sprites.sh +++ b/build-sprites.sh @@ -1,10 +1,29 @@ -#!/bin/sh +#!/usr/bin/env bash ROOT="$(git rev-parse --show-toplevel)" SRC="$ROOT/sprites" TMP="$(mktemp -d)/sprites" DEST="$ROOT/public/sprites" +rm -rf "$DEST" + +sub_inputs=(220022 440044 aa00aa ff00ff) + +declare -A palettes=( + [lightblue]="#305182 #4192c3 #61d3e3 #a2fff3" + [turqoise]="#165950 #189572 #37da94 #a0ffc2" + [green]="#006130 #19a239 #5ff040 #ccffad" + [lime]="#263e0a #6e8d1b #bee344 #edff89" + [yellow]="#6d3c05 #b87a0c #ffd42d #fff392" + [orange]="#732200 #c64b01 #ff8b17 #ffdba2" + [warmred]="#681d27 #ae2b28 #ff5d32 #ffae93" + [red]="#641b3b #9d193c #ff4656 #ff9ba1" + [magenta]="#612b79 #9c37ba #f75aff #ffa9f0" + [purple]="#342561 #6b42a7 #b76cff #e2abff" + [indigo]="#1f1d51 #3e3c8b #6979e8 #88baff" + [blue]="#19295b #305faa #3f9eff #8ad1ff" + [white]="#535353 #8a8a8a #c6c6c6 #ffffff" +) find "$SRC" -type f -name '*.aseprite' | while read -r file; do rel="${file#"$SRC"/}" @@ -17,11 +36,33 @@ find "$SRC" -type f -name '*.aseprite' | while read -r file; do --save-as "$out" done +run_with_palette() { + local in="$1" out="$2" palette_str="$3" + local s1 s2 s3 s4 + read -r s1 s2 s3 s4 <<< "$palette_str" + + png-subs "$in" "$out" \ + --subs "${sub_inputs[0]}" "${s1#"#"}" \ + --subs "${sub_inputs[1]}" "${s2#"#"}" \ + --subs "${sub_inputs[2]}" "${s3#"#"}" \ + --subs "${sub_inputs[3]}" "${s4#"#"}" +} + + find "$TMP" -type f -name '*.png' | while read -r file; do rel="${file#"$TMP"/}" - out="$DEST/${rel%.png}.png" + out_rel="${rel//\/substitute\//\/}" + dest_base="$DEST/${out_rel%.png}" - mkdir -p "$(dirname "$out")" + mkdir -p "$(dirname "$dest_base")" - png-subs "$file" "$out" + if [[ "$rel" == *"/substitute/"* ]]; then + for name in "${!palettes[@]}"; do + out="${dest_base}-${name}.png" + run_with_palette "$file" "$out" "${palettes[$name]}" + done + else + out="${dest_base}.png" + png-subs "$file" "$out" + fi done diff --git a/package.json b/package.json index d13f4b8..2139ab6 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,10 @@ "type": "module", "scripts": { "dev": "vite", - "build": "vite build", + "build": "./build-sprites.sh && vite build", "preview": "vite preview", "sprites": "./build-sprites.sh", - "deploy": "npm run build && gh-pages -d dist --nojekyll --cname elementipelago.peppidesu.dev" + "deploy": "bun run build && gh-pages -d dist --nojekyll --cname elementipelago.peppidesu.dev" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^6.2.4", diff --git a/public/sprites/elements/apple.png b/public/sprites/elements/apple.png deleted file mode 100644 index 0a9f2ef..0000000 Binary files a/public/sprites/elements/apple.png and /dev/null differ diff --git a/public/sprites/elements/armor.png b/public/sprites/elements/armor.png deleted file mode 100644 index 78e2dcd..0000000 Binary files a/public/sprites/elements/armor.png and /dev/null differ diff --git a/public/sprites/elements/ball.png b/public/sprites/elements/ball.png deleted file mode 100644 index acd61f6..0000000 Binary files a/public/sprites/elements/ball.png and /dev/null differ diff --git a/public/sprites/elements/berry.png b/public/sprites/elements/berry.png deleted file mode 100644 index 5f1719a..0000000 Binary files a/public/sprites/elements/berry.png and /dev/null differ diff --git a/public/sprites/elements/boat.png b/public/sprites/elements/boat.png deleted file mode 100644 index 834d9e2..0000000 Binary files a/public/sprites/elements/boat.png and /dev/null differ diff --git a/public/sprites/elements/book.png b/public/sprites/elements/book.png deleted file mode 100644 index f4d9856..0000000 Binary files a/public/sprites/elements/book.png and /dev/null differ diff --git a/public/sprites/elements/boots.png b/public/sprites/elements/boots.png deleted file mode 100644 index c2205dc..0000000 Binary files a/public/sprites/elements/boots.png and /dev/null differ diff --git a/public/sprites/elements/bow.png b/public/sprites/elements/bow.png deleted file mode 100644 index ba42779..0000000 Binary files a/public/sprites/elements/bow.png and /dev/null differ diff --git a/public/sprites/elements/car.png b/public/sprites/elements/car.png deleted file mode 100644 index 31f6e8a..0000000 Binary files a/public/sprites/elements/car.png and /dev/null differ diff --git a/public/sprites/elements/cave.png b/public/sprites/elements/cave.png deleted file mode 100644 index 2ef6f63..0000000 Binary files a/public/sprites/elements/cave.png and /dev/null differ diff --git a/public/sprites/elements/chest.png b/public/sprites/elements/chest.png deleted file mode 100644 index 9827699..0000000 Binary files a/public/sprites/elements/chest.png and /dev/null differ diff --git a/public/sprites/elements/coin.png b/public/sprites/elements/coin.png deleted file mode 100644 index 4bd7a56..0000000 Binary files a/public/sprites/elements/coin.png and /dev/null differ diff --git a/public/sprites/elements/desert.png b/public/sprites/elements/desert.png deleted file mode 100644 index 16e5b92..0000000 Binary files a/public/sprites/elements/desert.png and /dev/null differ diff --git a/public/sprites/elements/egg.png b/public/sprites/elements/egg.png deleted file mode 100644 index 84514fd..0000000 Binary files a/public/sprites/elements/egg.png and /dev/null differ diff --git a/public/sprites/elements/element.png b/public/sprites/elements/element.png deleted file mode 100644 index f0fe85c..0000000 Binary files a/public/sprites/elements/element.png and /dev/null differ diff --git a/public/sprites/elements/emerald.png b/public/sprites/elements/emerald.png deleted file mode 100644 index 606fd58..0000000 Binary files a/public/sprites/elements/emerald.png and /dev/null differ diff --git a/public/sprites/elements/fire.png b/public/sprites/elements/fire.png deleted file mode 100644 index 6e14a29..0000000 Binary files a/public/sprites/elements/fire.png and /dev/null differ diff --git a/public/sprites/elements/gun.png b/public/sprites/elements/gun.png deleted file mode 100644 index c2d299a..0000000 Binary files a/public/sprites/elements/gun.png and /dev/null differ diff --git a/public/sprites/elements/hammer.png b/public/sprites/elements/hammer.png deleted file mode 100644 index cfccc5f..0000000 Binary files a/public/sprites/elements/hammer.png and /dev/null differ diff --git a/public/sprites/elements/hat.png b/public/sprites/elements/hat.png deleted file mode 100644 index adca9bf..0000000 Binary files a/public/sprites/elements/hat.png and /dev/null differ diff --git a/public/sprites/elements/heart.png b/public/sprites/elements/heart.png deleted file mode 100644 index c9498ea..0000000 Binary files a/public/sprites/elements/heart.png and /dev/null differ diff --git a/public/sprites/elements/hills.png b/public/sprites/elements/hills.png deleted file mode 100644 index 049bf5b..0000000 Binary files a/public/sprites/elements/hills.png and /dev/null differ diff --git a/public/sprites/elements/hourglass.png b/public/sprites/elements/hourglass.png deleted file mode 100644 index 135cf20..0000000 Binary files a/public/sprites/elements/hourglass.png and /dev/null differ diff --git a/public/sprites/elements/house.png b/public/sprites/elements/house.png deleted file mode 100644 index 3c8caa4..0000000 Binary files a/public/sprites/elements/house.png and /dev/null differ diff --git a/public/sprites/elements/ice.png b/public/sprites/elements/ice.png deleted file mode 100644 index dc20825..0000000 Binary files a/public/sprites/elements/ice.png and /dev/null differ diff --git a/public/sprites/elements/island.png b/public/sprites/elements/island.png deleted file mode 100644 index b282366..0000000 Binary files a/public/sprites/elements/island.png and /dev/null differ diff --git a/public/sprites/elements/key.png b/public/sprites/elements/key.png deleted file mode 100644 index 125643f..0000000 Binary files a/public/sprites/elements/key.png and /dev/null differ diff --git a/public/sprites/elements/leaf.png b/public/sprites/elements/leaf.png deleted file mode 100644 index ca53e32..0000000 Binary files a/public/sprites/elements/leaf.png and /dev/null differ diff --git a/public/sprites/elements/magic.png b/public/sprites/elements/magic.png deleted file mode 100644 index a04f2b9..0000000 Binary files a/public/sprites/elements/magic.png and /dev/null differ diff --git a/public/sprites/elements/map.png b/public/sprites/elements/map.png deleted file mode 100644 index f51bff4..0000000 Binary files a/public/sprites/elements/map.png and /dev/null differ diff --git a/public/sprites/elements/marker.png b/public/sprites/elements/marker.png deleted file mode 100644 index 0bdbf9f..0000000 Binary files a/public/sprites/elements/marker.png and /dev/null differ diff --git a/public/sprites/elements/metal.png b/public/sprites/elements/metal.png deleted file mode 100644 index 35caf87..0000000 Binary files a/public/sprites/elements/metal.png and /dev/null differ diff --git a/public/sprites/elements/money.png b/public/sprites/elements/money.png deleted file mode 100644 index 5bb0016..0000000 Binary files a/public/sprites/elements/money.png and /dev/null differ diff --git a/public/sprites/elements/mountains.png b/public/sprites/elements/mountains.png deleted file mode 100644 index b4dd15e..0000000 Binary files a/public/sprites/elements/mountains.png and /dev/null differ diff --git a/public/sprites/elements/music.png b/public/sprites/elements/music.png deleted file mode 100644 index 16652c4..0000000 Binary files a/public/sprites/elements/music.png and /dev/null differ diff --git a/public/sprites/elements/piece.png b/public/sprites/elements/piece.png deleted file mode 100644 index 1aead83..0000000 Binary files a/public/sprites/elements/piece.png and /dev/null differ diff --git a/public/sprites/elements/planet.png b/public/sprites/elements/planet.png deleted file mode 100644 index 08deebe..0000000 Binary files a/public/sprites/elements/planet.png and /dev/null differ diff --git a/public/sprites/elements/potion.png b/public/sprites/elements/potion.png deleted file mode 100644 index c87279c..0000000 Binary files a/public/sprites/elements/potion.png and /dev/null differ diff --git a/public/sprites/elements/quest.png b/public/sprites/elements/quest.png deleted file mode 100644 index 97c0500..0000000 Binary files a/public/sprites/elements/quest.png and /dev/null differ diff --git a/public/sprites/elements/ring.png b/public/sprites/elements/ring.png deleted file mode 100644 index 36590f9..0000000 Binary files a/public/sprites/elements/ring.png and /dev/null differ diff --git a/public/sprites/elements/rock.png b/public/sprites/elements/rock.png deleted file mode 100644 index b790d97..0000000 Binary files a/public/sprites/elements/rock.png and /dev/null differ diff --git a/public/sprites/elements/sand.png b/public/sprites/elements/sand.png deleted file mode 100644 index 25a42d0..0000000 Binary files a/public/sprites/elements/sand.png and /dev/null differ diff --git a/public/sprites/elements/shop.png b/public/sprites/elements/shop.png deleted file mode 100644 index 059b2ef..0000000 Binary files a/public/sprites/elements/shop.png and /dev/null differ diff --git a/public/sprites/elements/sign.png b/public/sprites/elements/sign.png deleted file mode 100644 index 7370644..0000000 Binary files a/public/sprites/elements/sign.png and /dev/null differ diff --git a/public/sprites/elements/skull.png b/public/sprites/elements/skull.png deleted file mode 100644 index 6018865..0000000 Binary files a/public/sprites/elements/skull.png and /dev/null differ diff --git a/public/sprites/elements/spear.png b/public/sprites/elements/spear.png deleted file mode 100644 index f83f8c8..0000000 Binary files a/public/sprites/elements/spear.png and /dev/null differ diff --git a/public/sprites/elements/sword.png b/public/sprites/elements/sword.png deleted file mode 100644 index 2d92d9b..0000000 Binary files a/public/sprites/elements/sword.png and /dev/null differ diff --git a/public/sprites/elements/tree.png b/public/sprites/elements/tree.png deleted file mode 100644 index 1f43a16..0000000 Binary files a/public/sprites/elements/tree.png and /dev/null differ diff --git a/public/sprites/elements/upgrade.png b/public/sprites/elements/upgrade.png deleted file mode 100644 index 590efed..0000000 Binary files a/public/sprites/elements/upgrade.png and /dev/null differ diff --git a/public/sprites/elements/void.png b/public/sprites/elements/void.png deleted file mode 100644 index ec5c402..0000000 Binary files a/public/sprites/elements/void.png and /dev/null differ diff --git a/public/sprites/elements/wand.png b/public/sprites/elements/wand.png deleted file mode 100644 index ccfd1e8..0000000 Binary files a/public/sprites/elements/wand.png and /dev/null differ diff --git a/public/sprites/elements/water.png b/public/sprites/elements/water.png deleted file mode 100644 index 4e8a920..0000000 Binary files a/public/sprites/elements/water.png and /dev/null differ diff --git a/public/sprites/ui/broom.png b/public/sprites/ui/broom.png deleted file mode 100644 index 6c0a4e0..0000000 Binary files a/public/sprites/ui/broom.png and /dev/null differ diff --git a/public/sprites/ui/burger.png b/public/sprites/ui/burger.png deleted file mode 100644 index 78cdd78..0000000 Binary files a/public/sprites/ui/burger.png and /dev/null differ diff --git a/public/sprites/ui/chat.png b/public/sprites/ui/chat.png deleted file mode 100644 index 5ad54ac..0000000 Binary files a/public/sprites/ui/chat.png and /dev/null differ diff --git a/public/sprites/ui/check.png b/public/sprites/ui/check.png deleted file mode 100644 index 5f9af9c..0000000 Binary files a/public/sprites/ui/check.png and /dev/null differ diff --git a/public/sprites/ui/download.png b/public/sprites/ui/download.png deleted file mode 100644 index acf46f7..0000000 Binary files a/public/sprites/ui/download.png and /dev/null differ diff --git a/public/sprites/ui/hint1.png b/public/sprites/ui/hint1.png deleted file mode 100644 index c0cb178..0000000 Binary files a/public/sprites/ui/hint1.png and /dev/null differ diff --git a/public/sprites/ui/hint2.png b/public/sprites/ui/hint2.png deleted file mode 100644 index 8ccfffd..0000000 Binary files a/public/sprites/ui/hint2.png and /dev/null differ diff --git a/public/sprites/ui/new.png b/public/sprites/ui/new.png deleted file mode 100644 index 4337854..0000000 Binary files a/public/sprites/ui/new.png and /dev/null differ diff --git a/public/sprites/ui/settings.png b/public/sprites/ui/settings.png deleted file mode 100644 index 579c87e..0000000 Binary files a/public/sprites/ui/settings.png and /dev/null differ diff --git a/sprites/elements/apple.aseprite b/sprites/elements/apple.aseprite deleted file mode 100644 index cc6b73e..0000000 Binary files a/sprites/elements/apple.aseprite and /dev/null differ diff --git a/sprites/elements/armor.aseprite b/sprites/elements/armor.aseprite deleted file mode 100644 index c3de228..0000000 Binary files a/sprites/elements/armor.aseprite and /dev/null differ diff --git a/sprites/elements/ball.aseprite b/sprites/elements/ball.aseprite deleted file mode 100644 index ca9bcac..0000000 Binary files a/sprites/elements/ball.aseprite and /dev/null differ diff --git a/sprites/elements/berry.aseprite b/sprites/elements/berry.aseprite deleted file mode 100644 index bc5f259..0000000 Binary files a/sprites/elements/berry.aseprite and /dev/null differ diff --git a/sprites/elements/boat.aseprite b/sprites/elements/boat.aseprite deleted file mode 100644 index 6081270..0000000 Binary files a/sprites/elements/boat.aseprite and /dev/null differ diff --git a/sprites/elements/book.aseprite b/sprites/elements/book.aseprite deleted file mode 100644 index 7ee4375..0000000 Binary files a/sprites/elements/book.aseprite and /dev/null differ diff --git a/sprites/elements/boots.aseprite b/sprites/elements/boots.aseprite deleted file mode 100644 index 2940c1b..0000000 Binary files a/sprites/elements/boots.aseprite and /dev/null differ diff --git a/sprites/elements/car.aseprite b/sprites/elements/car.aseprite deleted file mode 100644 index 5f2747e..0000000 Binary files a/sprites/elements/car.aseprite and /dev/null differ diff --git a/sprites/elements/chest.aseprite b/sprites/elements/chest.aseprite deleted file mode 100644 index bac59c5..0000000 Binary files a/sprites/elements/chest.aseprite and /dev/null differ diff --git a/sprites/elements/element.aseprite b/sprites/elements/element.aseprite deleted file mode 100644 index 3b6b472..0000000 Binary files a/sprites/elements/element.aseprite and /dev/null differ diff --git a/sprites/elements/emerald.aseprite b/sprites/elements/emerald.aseprite deleted file mode 100644 index f42c3ed..0000000 Binary files a/sprites/elements/emerald.aseprite and /dev/null differ diff --git a/sprites/elements/hat.aseprite b/sprites/elements/hat.aseprite deleted file mode 100644 index 982cbb9..0000000 Binary files a/sprites/elements/hat.aseprite and /dev/null differ diff --git a/sprites/elements/heart.aseprite b/sprites/elements/heart.aseprite deleted file mode 100644 index 45c4d17..0000000 Binary files a/sprites/elements/heart.aseprite and /dev/null differ diff --git a/sprites/elements/ice.aseprite b/sprites/elements/ice.aseprite index f5f1552..396ed11 100644 Binary files a/sprites/elements/ice.aseprite and b/sprites/elements/ice.aseprite differ diff --git a/sprites/elements/key.aseprite b/sprites/elements/key.aseprite index c057a3b..9a22c2b 100644 Binary files a/sprites/elements/key.aseprite and b/sprites/elements/key.aseprite differ diff --git a/sprites/elements/leaf.aseprite b/sprites/elements/leaf.aseprite deleted file mode 100644 index 5a38ac8..0000000 Binary files a/sprites/elements/leaf.aseprite and /dev/null differ diff --git a/sprites/elements/magic.aseprite b/sprites/elements/magic.aseprite deleted file mode 100644 index 14e4a07..0000000 Binary files a/sprites/elements/magic.aseprite and /dev/null differ diff --git a/sprites/elements/map.aseprite b/sprites/elements/map.aseprite index b96ae4e..f4716a5 100644 Binary files a/sprites/elements/map.aseprite and b/sprites/elements/map.aseprite differ diff --git a/sprites/elements/marker.aseprite b/sprites/elements/marker.aseprite deleted file mode 100644 index 66f590c..0000000 Binary files a/sprites/elements/marker.aseprite and /dev/null differ diff --git a/sprites/elements/metal.aseprite b/sprites/elements/metal.aseprite deleted file mode 100644 index 7af248d..0000000 Binary files a/sprites/elements/metal.aseprite and /dev/null differ diff --git a/sprites/elements/music.aseprite b/sprites/elements/music.aseprite deleted file mode 100644 index 1f28d32..0000000 Binary files a/sprites/elements/music.aseprite and /dev/null differ diff --git a/sprites/elements/potion.aseprite b/sprites/elements/potion.aseprite deleted file mode 100644 index 0a15ae2..0000000 Binary files a/sprites/elements/potion.aseprite and /dev/null differ diff --git a/sprites/elements/sand.aseprite b/sprites/elements/sand.aseprite deleted file mode 100644 index a27702f..0000000 Binary files a/sprites/elements/sand.aseprite and /dev/null differ diff --git a/sprites/elements/substitute/apple.aseprite b/sprites/elements/substitute/apple.aseprite new file mode 100644 index 0000000..0b29d7a Binary files /dev/null and b/sprites/elements/substitute/apple.aseprite differ diff --git a/sprites/elements/substitute/armor.aseprite b/sprites/elements/substitute/armor.aseprite new file mode 100644 index 0000000..e09da5e Binary files /dev/null and b/sprites/elements/substitute/armor.aseprite differ diff --git a/sprites/elements/substitute/ball.aseprite b/sprites/elements/substitute/ball.aseprite new file mode 100644 index 0000000..181e382 Binary files /dev/null and b/sprites/elements/substitute/ball.aseprite differ diff --git a/sprites/elements/substitute/berry.aseprite b/sprites/elements/substitute/berry.aseprite new file mode 100644 index 0000000..8a1dc8d Binary files /dev/null and b/sprites/elements/substitute/berry.aseprite differ diff --git a/sprites/elements/substitute/boat.aseprite b/sprites/elements/substitute/boat.aseprite new file mode 100644 index 0000000..43442d0 Binary files /dev/null and b/sprites/elements/substitute/boat.aseprite differ diff --git a/sprites/elements/substitute/book.aseprite b/sprites/elements/substitute/book.aseprite new file mode 100644 index 0000000..968c0e7 Binary files /dev/null and b/sprites/elements/substitute/book.aseprite differ diff --git a/sprites/elements/substitute/boots.aseprite b/sprites/elements/substitute/boots.aseprite new file mode 100644 index 0000000..70b3edf Binary files /dev/null and b/sprites/elements/substitute/boots.aseprite differ diff --git a/sprites/elements/substitute/car.aseprite b/sprites/elements/substitute/car.aseprite new file mode 100644 index 0000000..62f094f Binary files /dev/null and b/sprites/elements/substitute/car.aseprite differ diff --git a/sprites/elements/substitute/chest.aseprite b/sprites/elements/substitute/chest.aseprite new file mode 100644 index 0000000..d803535 Binary files /dev/null and b/sprites/elements/substitute/chest.aseprite differ diff --git a/sprites/elements/substitute/element.aseprite b/sprites/elements/substitute/element.aseprite new file mode 100644 index 0000000..3031e2e Binary files /dev/null and b/sprites/elements/substitute/element.aseprite differ diff --git a/sprites/elements/substitute/emerald.aseprite b/sprites/elements/substitute/emerald.aseprite new file mode 100644 index 0000000..a67961f Binary files /dev/null and b/sprites/elements/substitute/emerald.aseprite differ diff --git a/sprites/elements/substitute/hat.aseprite b/sprites/elements/substitute/hat.aseprite new file mode 100644 index 0000000..9d49ffd Binary files /dev/null and b/sprites/elements/substitute/hat.aseprite differ diff --git a/sprites/elements/substitute/heart.aseprite b/sprites/elements/substitute/heart.aseprite new file mode 100644 index 0000000..c5437ea Binary files /dev/null and b/sprites/elements/substitute/heart.aseprite differ diff --git a/sprites/elements/substitute/leaf.aseprite b/sprites/elements/substitute/leaf.aseprite new file mode 100644 index 0000000..f079c66 Binary files /dev/null and b/sprites/elements/substitute/leaf.aseprite differ diff --git a/sprites/elements/substitute/magic.aseprite b/sprites/elements/substitute/magic.aseprite new file mode 100644 index 0000000..6315e1f Binary files /dev/null and b/sprites/elements/substitute/magic.aseprite differ diff --git a/sprites/elements/substitute/marker.aseprite b/sprites/elements/substitute/marker.aseprite new file mode 100644 index 0000000..01b7fdd Binary files /dev/null and b/sprites/elements/substitute/marker.aseprite differ diff --git a/sprites/elements/substitute/metal.aseprite b/sprites/elements/substitute/metal.aseprite new file mode 100644 index 0000000..a96dad5 Binary files /dev/null and b/sprites/elements/substitute/metal.aseprite differ diff --git a/sprites/elements/substitute/music.aseprite b/sprites/elements/substitute/music.aseprite new file mode 100644 index 0000000..1665783 Binary files /dev/null and b/sprites/elements/substitute/music.aseprite differ diff --git a/sprites/elements/substitute/potion.aseprite b/sprites/elements/substitute/potion.aseprite new file mode 100644 index 0000000..45fb012 Binary files /dev/null and b/sprites/elements/substitute/potion.aseprite differ diff --git a/sprites/elements/substitute/sand.aseprite b/sprites/elements/substitute/sand.aseprite new file mode 100644 index 0000000..6a7f6be Binary files /dev/null and b/sprites/elements/substitute/sand.aseprite differ diff --git a/sprites/elements/substitute/wand.aseprite b/sprites/elements/substitute/wand.aseprite new file mode 100644 index 0000000..217ae0e Binary files /dev/null and b/sprites/elements/substitute/wand.aseprite differ diff --git a/sprites/elements/sword.aseprite b/sprites/elements/sword.aseprite index c264a17..dfd0b24 100644 Binary files a/sprites/elements/sword.aseprite and b/sprites/elements/sword.aseprite differ diff --git a/sprites/elements/wand.aseprite b/sprites/elements/wand.aseprite deleted file mode 100644 index 64f1d43..0000000 Binary files a/sprites/elements/wand.aseprite and /dev/null differ diff --git a/src/app.css b/src/app.css index 0754a40..8710e18 100644 --- a/src/app.css +++ b/src/app.css @@ -32,7 +32,7 @@ body { margin: 0; overflow: hidden; - >* { + > * { grid-area: 1 / 1 / 1 / 1; } } diff --git a/src/lib/Drawer.svelte b/src/lib/Drawer.svelte index 137dcdf..e8d19cd 100644 --- a/src/lib/Drawer.svelte +++ b/src/lib/Drawer.svelte @@ -36,11 +36,7 @@ res = res || isExhausted(a.name) - isExhausted(b.name); } - return ( - res || - a.elem_id.kind - b.elem_id.kind || - a.elem_id.id - b.elem_id.id - ); + return res || a.elem_id.kind - b.elem_id.kind || a.elem_id.id - b.elem_id.id; }); if (search_term === "") return table; diff --git a/src/lib/Playfield.svelte b/src/lib/Playfield.svelte index 4949059..cee983c 100644 --- a/src/lib/Playfield.svelte +++ b/src/lib/Playfield.svelte @@ -6,10 +6,7 @@ */ export function handle_dropped(mounted) { Array.from(mounted) - .toSorted( - ([_a, a], [_b, b]) => - Number(a.get_z_index()) - Number(b.get_z_index()), - ) + .toSorted(([_a, a], [_b, b]) => Number(a.get_z_index()) - Number(b.get_z_index())) .forEach(([_num, ele], idx) => ele.set_z_index(String(idx + 1))); } diff --git a/src/lib/machine-learning/iconml.js b/src/lib/machine-learning/iconml.js index 393d68e..62ccbd0 100644 --- a/src/lib/machine-learning/iconml.js +++ b/src/lib/machine-learning/iconml.js @@ -7,80 +7,118 @@ import { getElementData } from "../stores/apclient.svelte.js"; /** * @param {string} game * @param {string} name + * @returns {string} */ export function iconForLocation(game, name) { const kind = "item"; - return iconForText(`[game=${game}] ${name}`); + return iconForText(`[game=${game}][kind=${kind}] ${name}`); } /** * @param {string} game * @param {string} name + * @returns {string} */ export function iconForItem(game, name) { const kind = "location"; - return iconForText(`[game=${game}] ${name}`); + return iconForText(`[game=${game}][kind=${kind}] ${name}`); } +/** + * @param {string} name + * @returns {string} + */ +export function iconForIntermediate(name) { + return iconForText(name); +} + +const colors = [ + "lightblue", + "turqoise", + "green", + "lime", + "yellow", + "orange", + "warmred", + "red", + "magenta", + "purple", + "indigo", + "blue", + "white", +]; + +const substituteIcons = [ + "apple", + "armor", + "ball", + "berry", + "boat", + "book", + "boots", + "car", + "chest", + "element", + "emerald", + "hat", + "heart", + "leaf", + "magic", + "marker", + "metal", + "music", + "potion", + "sand", + "wand", +]; + +const icons = [ + "bow", + "cave", + "coin", + "desert", + "egg", + "fire", + "gun", + "hammer", + "hills", + "hourglass", + "house", + "ice", + "island", + "key", + "map", + "money", + "mountains", + "piece", + "planet", + "quest", + "ring", + "rock", + "shop", + "sign", + "skull", + "spear", + "sword", + "tree", + "upgrade", + "void", + "water", +]; + +const combinedIcons = [ + ...icons, + ...substituteIcons.flatMap((value) => colors.map((color) => `${value}-${color}`)), +]; + +/** + * @param {String} text + * @returns {String} + */ function iconForText(text) { //const res = predictIcon(get(model), text, { returnTopK: 1 }); - - const icons = [ - "apple", - "armor", - "ball", - "berry", - "boat", - "book", - "boots", - "bow", - "car", - "cave", - "chest", - "coin", - "desert", - "egg", - "element", - "emerald", - "fire", - "gun", - "hammer", - "hat", - "heart", - "hills", - "hourglass", - "house", - "ice", - "island", - "key", - "leaf", - "magic", - "map", - "marker", - "metal", - "money", - "mountains", - "music", - "piece", - "planet", - "potion", - "quest", - "ring", - "rock", - "sand", - "shop", - "sign", - "skull", - "spear", - "sword", - "tree", - "upgrade", - "void", - "wand", - "water" - ]; const buffer = new Uint32Array(md5.arrayBuffer(text)); - const res = icons[buffer[buffer.length - 1] % icons.length]; + const res = combinedIcons[buffer[buffer.length - 1] % combinedIcons.length]; const iconKey = res; return iconKey; diff --git a/src/lib/stores/apclient.svelte.js b/src/lib/stores/apclient.svelte.js index 8c254a3..a9593e6 100644 --- a/src/lib/stores/apclient.svelte.js +++ b/src/lib/stores/apclient.svelte.js @@ -2,7 +2,7 @@ import { derived, get, readable, writable } from "svelte/store"; import { Client } from "archipelago.js"; import { createSubscriber, SvelteMap, SvelteSet } from "svelte/reactivity"; import { element_to_name, parse_element } from "../../utils"; -import { iconForItem, iconForLocation } from "../machine-learning/iconml"; +import { iconForIntermediate, iconForItem, iconForLocation } from "../machine-learning/iconml"; import { draw } from "svelte/transition"; import { INTERMEDIATE_AMOUNT, LOCATION_AMOUNT, NON_ELEMENT_ITEMS } from "../../consts"; import { get_name, init_naming } from "./names.js"; @@ -228,8 +228,14 @@ export async function initElementStores() { for (const item of await scoutedLocations) { if (!elementData.has(item.locationName)) { const elem_id = parse_element(item.locationName); - const loc = elem_id.kind === ElementKind.INTERMEDIATE ? get_name() : item.name; - const icon_name = iconForLocation(item.game, loc); + let loc, icon_name; + if (elem_id.kind === ElementKind.INTERMEDIATE) { + loc = get_name(); + icon_name = iconForIntermediate(loc); + } else { + loc = item.name; + icon_name = iconForLocation(item.game, loc); + } elementData.set(item.locationName, { elem_id, name: item.locationName, @@ -341,11 +347,16 @@ function extendReceivedElements(items) { } let elem_id = parse_element(item.name); - const loc = - elem_id.kind === ElementKind.INTERMEDIATE || item.locationGame === "Archipelago" - ? get_name() - : item.locationName; - let icon_name = iconForItem(item.game, loc); + + let loc, icon_name; + if (elem_id.kind === ElementKind.INTERMEDIATE || item.locationGame === "Archipelago") { + loc = get_name(); + icon_name = iconForIntermediate(loc); + } else { + loc = item.locationName; + icon_name = iconForLocation(item.game, loc); + } + receivedElements.add(item.name); if (elementData.has(item.name)) { diff --git a/src/lib/stores/toast.js b/src/lib/stores/toast.js index 8126743..4a0f11b 100644 --- a/src/lib/stores/toast.js +++ b/src/lib/stores/toast.js @@ -1,6 +1,5 @@ -import { get, writable } from "svelte/store"; -import { apclient, getElementData } from "./apclient.svelte"; -import { iconForItem, iconForLocation } from "../machine-learning/iconml"; +import { writable } from "svelte/store"; +import { getElementData } from "./apclient.svelte"; import { NON_ELEMENT_ITEMS } from "../../consts"; /** @@ -14,8 +13,6 @@ import { NON_ELEMENT_ITEMS } from "../../consts"; export const toast_queue = writable([]); -const initialized = writable(false); - /** * @param {Item[]} items */