aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/courts.svelte.js
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2026-08-30 22:43:21 +0200
committerKaran Jayachandra <mail@karanjayachandra.com>2026-08-30 22:43:21 +0200
commitfc8d8ab8d0da95ec79056f59e14a150df6fcea89 (patch)
tree33f8050b2f2920c0f1b884a205a8aa4c81d7687c /src/lib/stores/courts.svelte.js
parentd37ebfda883bcd03b146a85bc3e5a4657d0abd73 (diff)
Moved to sveltemain
Diffstat (limited to 'src/lib/stores/courts.svelte.js')
-rw-r--r--src/lib/stores/courts.svelte.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/lib/stores/courts.svelte.js b/src/lib/stores/courts.svelte.js
new file mode 100644
index 0000000..768bb35
--- /dev/null
+++ b/src/lib/stores/courts.svelte.js
@@ -0,0 +1,39 @@
+import { createCourt } from "../logic/players.js";
+import { randomStatus } from "../logic/random.js";
+
+const STORAGE_KEY = "Court";
+const COURT_COUNT = 12;
+
+function loadInitialCourts() {
+ const stored = JSON.parse(localStorage.getItem(STORAGE_KEY));
+ if (stored && stored.length > 0) {
+ return stored.map((c) => createCourt(Number(c.id), Boolean(Number(c.status))));
+ }
+ return Array.from({ length: COURT_COUNT }, (_, i) => createCourt(i, randomStatus()));
+}
+
+let courts = $state(loadInitialCourts());
+
+function persist() {
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(courts));
+}
+if (!localStorage.getItem(STORAGE_KEY)) persist();
+
+export function getCourts() {
+ return courts;
+}
+
+export function activeCourts() {
+ return courts.filter((c) => c.status);
+}
+
+export function inactiveCourts() {
+ return courts.filter((c) => !c.status);
+}
+
+export function toggleCourt(id) {
+ const court = courts.find((c) => c.id === id);
+ if (!court) return;
+ court.status = !court.status;
+ persist();
+}