Files
overload/src/leaderboard.js
2026-05-10 11:47:48 +09:00

50 lines
1.1 KiB
JavaScript

// @ts-nocheck
import { writable, get } from "svelte/store";
const STORAGE_KEY = "neuro_leaderboard";
export const leaderboard = writable([]);
export const playerName = writable("");
export const hasSubmitted = writable(false);
// Load leaderboard
export function loadLeaderboard() {
try {
const stored = JSON.parse(localStorage.getItem(STORAGE_KEY)) || [];
leaderboard.set(stored);
} catch {
leaderboard.set([]);
}
}
// Save leaderboard to storage
export function commitLeaderboard() {
const board = get(leaderboard);
localStorage.setItem(STORAGE_KEY, JSON.stringify(board));
}
// Save score
export function saveScore(score) {
if (get(hasSubmitted)) return;
let name = get(playerName).trim() || "Anonymous";
const board = [...get(leaderboard)];
const index = board.findIndex(
entry => entry.name.toLowerCase() === name.toLowerCase()
);
if (index !== -1) {
if (score > board[index].score) {
board[index].score = score;
}
} else {
board.push({ name, score });
}
board.sort((a, b) => b.score - a.score);
leaderboard.set(board);
commitLeaderboard();
hasSubmitted.set(true);
}