From 6bf50bad10b1ca368e89702d6ba7d8b54707fc36 Mon Sep 17 00:00:00 2001 From: Maciej Caderek Date: Tue, 29 Mar 2022 04:47:41 +0200 Subject: [PATCH] WIP --- public/sfx/rewind.wav | Bin 0 -> 4204 bytes src/main.tsx | 14 ++++++++------ src/persistance/SiteUrl.ts | 0 src/player/Player.ts | 4 ++++ src/player/sfx.ts | 4 ++++ src/ui/components/Load.tsx | 3 ++- 6 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 public/sfx/rewind.wav delete mode 100644 src/persistance/SiteUrl.ts diff --git a/public/sfx/rewind.wav b/public/sfx/rewind.wav new file mode 100644 index 0000000000000000000000000000000000000000..93b3e7bd18426d90fb8761389dfcb8054a9a5278 GIT binary patch literal 4204 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 { 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); } }}