mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-03 20:50:33 +00:00
138 lines
2.9 KiB
TypeScript
138 lines
2.9 KiB
TypeScript
const PATTERN_KEY = "territoryPattern";
|
|
|
|
export class UserSettings {
|
|
get(key: string, defaultValue: boolean): boolean {
|
|
const value = localStorage.getItem(key);
|
|
if (!value) return defaultValue;
|
|
|
|
if (value === "true") return true;
|
|
|
|
if (value === "false") return false;
|
|
|
|
return defaultValue;
|
|
}
|
|
|
|
set(key: string, value: boolean) {
|
|
localStorage.setItem(key, value ? "true" : "false");
|
|
}
|
|
|
|
emojis() {
|
|
return this.get("settings.emojis", true);
|
|
}
|
|
|
|
alertFrame() {
|
|
return this.get("settings.alertFrame", true);
|
|
}
|
|
|
|
anonymousNames() {
|
|
return this.get("settings.anonymousNames", false);
|
|
}
|
|
|
|
fxLayer() {
|
|
return this.get("settings.specialEffects", true);
|
|
}
|
|
|
|
darkMode() {
|
|
return this.get("settings.darkMode", false);
|
|
}
|
|
|
|
leftClickOpensMenu() {
|
|
return this.get("settings.leftClickOpensMenu", false);
|
|
}
|
|
|
|
territoryPatterns() {
|
|
return this.get("settings.territoryPatterns", true);
|
|
}
|
|
|
|
focusLocked() {
|
|
return false;
|
|
// TODO: renable when performance issues are fixed.
|
|
this.get("settings.focusLocked", true);
|
|
}
|
|
|
|
toggleLeftClickOpenMenu() {
|
|
this.set("settings.leftClickOpensMenu", !this.leftClickOpensMenu());
|
|
}
|
|
|
|
toggleFocusLocked() {
|
|
this.set("settings.focusLocked", !this.focusLocked());
|
|
}
|
|
|
|
toggleEmojis() {
|
|
this.set("settings.emojis", !this.emojis());
|
|
}
|
|
|
|
toggleAlertFrame() {
|
|
this.set("settings.alertFrame", !this.alertFrame());
|
|
}
|
|
|
|
toggleRandomName() {
|
|
this.set("settings.anonymousNames", !this.anonymousNames());
|
|
}
|
|
|
|
toggleFxLayer() {
|
|
this.set("settings.specialEffects", !this.fxLayer());
|
|
}
|
|
|
|
toggleTerritoryPatterns() {
|
|
this.set("settings.territoryPatterns", !this.territoryPatterns());
|
|
}
|
|
|
|
toggleDarkMode() {
|
|
this.set("settings.darkMode", !this.darkMode());
|
|
if (this.darkMode()) {
|
|
document.documentElement.classList.add("dark");
|
|
} else {
|
|
document.documentElement.classList.remove("dark");
|
|
}
|
|
}
|
|
|
|
getVolume(): number {
|
|
const value = localStorage.getItem("volume");
|
|
if (value) {
|
|
return parseFloat(value);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
setVolume(volume: number): void {
|
|
localStorage.setItem("volume", volume.toString());
|
|
}
|
|
|
|
getMuted(): boolean {
|
|
return this.get("muted", false);
|
|
}
|
|
|
|
setMuted(muted: boolean): void {
|
|
this.set("muted", muted);
|
|
}
|
|
|
|
getMuteMusic(): boolean {
|
|
return this.get("muteMusic", false);
|
|
}
|
|
|
|
setMuteMusic(mute: boolean): void {
|
|
this.set("muteMusic", mute);
|
|
}
|
|
|
|
getMuteSoundEffects(): boolean {
|
|
return this.get("muteSoundEffects", false);
|
|
}
|
|
|
|
setMuteSoundEffects(mute: boolean): void {
|
|
this.set("muteSoundEffects", mute);
|
|
}
|
|
|
|
getSelectedPattern(): string | undefined {
|
|
return localStorage.getItem(PATTERN_KEY) ?? undefined;
|
|
}
|
|
|
|
setSelectedPattern(base64: string | undefined): void {
|
|
if (base64 === undefined) {
|
|
localStorage.removeItem(PATTERN_KEY);
|
|
} else {
|
|
localStorage.setItem(PATTERN_KEY, base64);
|
|
}
|
|
}
|
|
}
|