diff --git a/public/sfx/rewind.wav b/public/sfx/rewind.wav new file mode 100644 index 0000000..93b3e7b Binary files /dev/null and b/public/sfx/rewind.wav differ diff --git a/src/main.tsx b/src/main.tsx index c558e40..f5f420a 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -124,7 +124,6 @@ const main = async () => { game, }); window.location.hash = `pgn/${compressPGN(game.pgn)}`; - setState("refreshHash", false); await player.load(game); setState("activeTab", "game"); @@ -153,7 +152,6 @@ const main = async () => { if (hash) { window.location.hash = `fen/${state.fen}`; - setState("refreshHash", false); setState("activeTab", "game"); } @@ -170,6 +168,8 @@ const main = async () => { document.title = `SHARECHESS - FEN ${fen}`; }, async load(data: string) { + setState("refreshHash", false); + if (isFEN(data)) { await this.loadFEN(data); return true; @@ -239,7 +239,8 @@ const main = async () => { /* Load game from the url */ - const loadFromUrl = async () => { + const loadFromUrl = async (refreshHash: boolean = true) => { + setState("refreshHash", refreshHash); const { pgn, fen } = extractUrlData(); await (pgn @@ -250,9 +251,11 @@ const main = async () => { "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", false )); + + setState("refreshHash", true); }; - await loadFromUrl(); + await loadFromUrl(false); /* Register events */ document.addEventListener("dblclick", function (el) { @@ -273,11 +276,9 @@ const main = async () => { window.addEventListener("hashchange", () => { if (!state.refreshHash) { setState("refreshHash", true); - console.log("No refresh"); return; } - console.log("Refresh!"); loadFromUrl(); }); @@ -318,6 +319,7 @@ const main = async () => { document.addEventListener("drop", async (e) => { if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) { const content = await readFile(e.dataTransfer.files[0]); + setState("refreshHash", false); handlers.loadPGN(content); } }); diff --git a/src/persistance/SiteUrl.ts b/src/persistance/SiteUrl.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/player/Player.ts b/src/player/Player.ts index 1978f67..55bade3 100644 --- a/src/player/Player.ts +++ b/src/player/Player.ts @@ -88,6 +88,10 @@ class Player { await this.board.frame(this.getPosition(), this.game.header); this.board.render(); + + if (state.boardConfig.sounds) { + sfx.rewind.play(); + } } async next() { diff --git a/src/player/sfx.ts b/src/player/sfx.ts index 7422f96..98c30b9 100644 --- a/src/player/sfx.ts +++ b/src/player/sfx.ts @@ -17,6 +17,10 @@ const sfx = { src: ["/sfx/snap.wav"], volume: 0.6, }), + rewind: new Howl({ + src: ["/sfx/rewind.wav"], + volume: 0.2, + }), }; export default sfx; diff --git a/src/ui/components/Load.tsx b/src/ui/components/Load.tsx index 8979cb8..be926c3 100644 --- a/src/ui/components/Load.tsx +++ b/src/ui/components/Load.tsx @@ -1,7 +1,7 @@ import { Component, createSignal, Show } from "solid-js"; import { Handlers } from "../../types"; import readFile from "../../utils/readFile"; -import { state } from "../../state"; +import { setState, state } from "../../state"; import "./Load.css"; const Load: Component<{ handlers: Handlers; class?: string }> = (props) => { @@ -40,6 +40,7 @@ const Load: Component<{ handlers: Handlers; class?: string }> = (props) => { const target = e.target as HTMLInputElement; if (target?.files && target.files.length > 0) { const content = await readFile(target.files[0]); + setState("refreshHash", false); props.handlers.loadPGN(content); } }}