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,
|
game,
|
||||||
});
|
});
|
||||||
window.location.hash = `pgn/${compressPGN(game.pgn)}`;
|
window.location.hash = `pgn/${compressPGN(game.pgn)}`;
|
||||||
setState("refreshHash", false);
|
|
||||||
|
|
||||||
await player.load(game);
|
await player.load(game);
|
||||||
setState("activeTab", "game");
|
setState("activeTab", "game");
|
||||||
@@ -153,7 +152,6 @@ const main = async () => {
|
|||||||
|
|
||||||
if (hash) {
|
if (hash) {
|
||||||
window.location.hash = `fen/${state.fen}`;
|
window.location.hash = `fen/${state.fen}`;
|
||||||
setState("refreshHash", false);
|
|
||||||
setState("activeTab", "game");
|
setState("activeTab", "game");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,6 +168,8 @@ const main = async () => {
|
|||||||
document.title = `SHARECHESS - FEN ${fen}`;
|
document.title = `SHARECHESS - FEN ${fen}`;
|
||||||
},
|
},
|
||||||
async load(data: string) {
|
async load(data: string) {
|
||||||
|
setState("refreshHash", false);
|
||||||
|
|
||||||
if (isFEN(data)) {
|
if (isFEN(data)) {
|
||||||
await this.loadFEN(data);
|
await this.loadFEN(data);
|
||||||
return true;
|
return true;
|
||||||
@@ -239,7 +239,8 @@ const main = async () => {
|
|||||||
|
|
||||||
/* Load game from the url */
|
/* Load game from the url */
|
||||||
|
|
||||||
const loadFromUrl = async () => {
|
const loadFromUrl = async (refreshHash: boolean = true) => {
|
||||||
|
setState("refreshHash", refreshHash);
|
||||||
const { pgn, fen } = extractUrlData();
|
const { pgn, fen } = extractUrlData();
|
||||||
|
|
||||||
await (pgn
|
await (pgn
|
||||||
@@ -250,9 +251,11 @@ const main = async () => {
|
|||||||
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
|
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
|
||||||
false
|
false
|
||||||
));
|
));
|
||||||
|
|
||||||
|
setState("refreshHash", true);
|
||||||
};
|
};
|
||||||
|
|
||||||
await loadFromUrl();
|
await loadFromUrl(false);
|
||||||
|
|
||||||
/* Register events */
|
/* Register events */
|
||||||
document.addEventListener("dblclick", function (el) {
|
document.addEventListener("dblclick", function (el) {
|
||||||
@@ -273,11 +276,9 @@ const main = async () => {
|
|||||||
window.addEventListener("hashchange", () => {
|
window.addEventListener("hashchange", () => {
|
||||||
if (!state.refreshHash) {
|
if (!state.refreshHash) {
|
||||||
setState("refreshHash", true);
|
setState("refreshHash", true);
|
||||||
console.log("No refresh");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Refresh!");
|
|
||||||
loadFromUrl();
|
loadFromUrl();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -318,6 +319,7 @@ const main = async () => {
|
|||||||
document.addEventListener("drop", async (e) => {
|
document.addEventListener("drop", async (e) => {
|
||||||
if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {
|
if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {
|
||||||
const content = await readFile(e.dataTransfer.files[0]);
|
const content = await readFile(e.dataTransfer.files[0]);
|
||||||
|
setState("refreshHash", false);
|
||||||
handlers.loadPGN(content);
|
handlers.loadPGN(content);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -88,6 +88,10 @@ class Player {
|
|||||||
|
|
||||||
await this.board.frame(this.getPosition(), this.game.header);
|
await this.board.frame(this.getPosition(), this.game.header);
|
||||||
this.board.render();
|
this.board.render();
|
||||||
|
|
||||||
|
if (state.boardConfig.sounds) {
|
||||||
|
sfx.rewind.play();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async next() {
|
async next() {
|
||||||
|
|||||||
@@ -17,6 +17,10 @@ const sfx = {
|
|||||||
src: ["/sfx/snap.wav"],
|
src: ["/sfx/snap.wav"],
|
||||||
volume: 0.6,
|
volume: 0.6,
|
||||||
}),
|
}),
|
||||||
|
rewind: new Howl({
|
||||||
|
src: ["/sfx/rewind.wav"],
|
||||||
|
volume: 0.2,
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
export default sfx;
|
export default sfx;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Component, createSignal, Show } from "solid-js";
|
import { Component, createSignal, Show } from "solid-js";
|
||||||
import { Handlers } from "../../types";
|
import { Handlers } from "../../types";
|
||||||
import readFile from "../../utils/readFile";
|
import readFile from "../../utils/readFile";
|
||||||
import { state } from "../../state";
|
import { setState, state } from "../../state";
|
||||||
import "./Load.css";
|
import "./Load.css";
|
||||||
|
|
||||||
const Load: Component<{ handlers: Handlers; class?: string }> = (props) => {
|
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;
|
const target = e.target as HTMLInputElement;
|
||||||
if (target?.files && target.files.length > 0) {
|
if (target?.files && target.files.length > 0) {
|
||||||
const content = await readFile(target.files[0]);
|
const content = await readFile(target.files[0]);
|
||||||
|
setState("refreshHash", false);
|
||||||
props.handlers.loadPGN(content);
|
props.handlers.loadPGN(content);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user