aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/guests.svelte.js
blob: 6dc08db00a36d672c02520976059ce5d72e42bc8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { createGuest } from "../logic/players.js";
import { randomStatus } from "../logic/random.js";

const STORAGE_KEY = "Guest";
const GUEST_COUNT = 18;

function loadInitialGuests() {
  const stored = JSON.parse(localStorage.getItem(STORAGE_KEY));
  if (stored && stored.length > 0) {
    return stored.map((g) =>
      createGuest(Number(g.id), Boolean(Number(g.status)), Number(g.games))
    );
  }
  return Array.from({ length: GUEST_COUNT }, (_, i) => createGuest(i, randomStatus()));
}

let guests = $state(loadInitialGuests());

function persist() {
  localStorage.setItem(STORAGE_KEY, JSON.stringify(guests));
}
if (!localStorage.getItem(STORAGE_KEY)) persist();

export function getGuests() {
  return guests;
}

export function activeGuests() {
  return guests.filter((g) => g.status);
}

export function toggleGuest(id) {
  const guest = guests.find((g) => g.id === id);
  if (!guest) return;
  guest.status = !guest.status;
  persist();
}

export function incrementGuestGames(names) {
  for (const guest of guests) {
    if (names.includes(guest.name)) {
      guest.games += 1;
    }
  }
  persist();
}