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();
}
|