aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/regulars.svelte.js
blob: ccf0d8113e949760f448b928e409ae80b313b6a9 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { uniqueNamesGenerator, names, adjectives } from "unique-names-generator";
import { createRegular } from "../logic/players.js";
import { randomStatus, randomLevel } from "../logic/random.js";
import { parseCsv } from "../logic/csv.js";

const STORAGE_KEY = "Regular";
const REGULAR_COUNT = 71;

const nameConfig = {
  dictionaries: [adjectives, names],
  style: "capital",
  length: 2,
};

function generateRandomRegular(id) {
  const [firstName, lastName] = uniqueNamesGenerator(nameConfig).split("_");
  return createRegular(id, randomStatus(), randomLevel(), 0, firstName, lastName);
}

function loadInitialRegulars() {
  const stored = JSON.parse(localStorage.getItem(STORAGE_KEY));
  if (stored && stored.length > 0) {
    return stored.map((r) =>
      createRegular(
        Number(r.id),
        Boolean(Number(r.status)),
        Number(r.level),
        Number(r.games),
        r.firstName,
        r.lastName
      )
    );
  }
  return Array.from({ length: REGULAR_COUNT }, (_, i) => generateRandomRegular(i));
}

let regulars = $state(loadInitialRegulars());

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

export function getRegulars() {
  return regulars;
}

export function activeRegulars() {
  return regulars.filter((r) => r.status);
}

export function toggleRegular(id) {
  const regular = regulars.find((r) => r.id === id);
  if (!regular) return;
  regular.status = !regular.status;
  persist();
}

export function incrementRegularGames(playerNames) {
  for (const regular of regulars) {
    if (playerNames.includes(regular.name)) {
      regular.games += 1;
    }
  }
  persist();
}

export function resetRegulars() {
  for (const regular of regulars) {
    regular.games = 0;
    regular.status = false;
  }
  persist();
}

export function loadRegularsFromCsv(csvText) {
  regulars = parseCsv(csvText);
  persist();
}