WIP
This commit is contained in:
BIN
public/sfx/rewind.wav
Normal file
BIN
public/sfx/rewind.wav
Normal file
Binary file not shown.
14
src/main.tsx
14
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);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user