mirror of
https://github.com/EDeev/pixel_gamble.git
synced 2026-10-07 23:49:29 +03:00
- 10 волн, 5 видов врагов со своим поведением и босс в три фазы - меч, копьё и посох, 11 улучшений между волнами, опыт и уровни - меню, пауза, настройки, итоги партии и рекорд, русский и английский - мир 480×270 с масштабированием, интерфейс в 960×540, скорости от dt - асинхронный цикл: та же игра в браузере через pygbag - тесты без окна, автоигрок, CI, релизы exe/Linux, GitHub Pages - README на двух языках; исходная версия — релиз v1.0.0
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""Рекорд и настройки: файл в профиле пользователя или localStorage в браузере."""
|
||
|
||
import json
|
||
import os
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
from .settings import WEB
|
||
|
||
DEFAULTS = {"best": 0, "music": 0.5, "sounds": 0.7, "lang": "ru", "fullscreen": False}
|
||
KEY = "pixel_gamble"
|
||
|
||
|
||
def _path():
|
||
if os.environ.get("PIXEL_GAMBLE_SAVE"):
|
||
return Path(os.environ["PIXEL_GAMBLE_SAVE"])
|
||
if sys.platform == "win32":
|
||
root = Path(os.environ.get("APPDATA", Path.home()))
|
||
else:
|
||
root = Path(os.environ.get("XDG_DATA_HOME", Path.home() / ".local" / "share"))
|
||
return root / "pixel_gamble" / "save.json"
|
||
|
||
|
||
def load():
|
||
data = dict(DEFAULTS)
|
||
try:
|
||
if WEB:
|
||
import platform
|
||
raw = platform.window.localStorage.getItem(KEY)
|
||
else:
|
||
path = _path()
|
||
raw = path.read_text(encoding="utf-8") if path.exists() else None
|
||
if raw:
|
||
data.update({k: v for k, v in json.loads(raw).items() if k in DEFAULTS})
|
||
except Exception: # испорченный файл или недоступное хранилище — играем с настройками по умолчанию
|
||
pass
|
||
return data
|
||
|
||
|
||
def store(data):
|
||
raw = json.dumps({k: data[k] for k in DEFAULTS})
|
||
try:
|
||
if WEB:
|
||
import platform
|
||
platform.window.localStorage.setItem(KEY, raw)
|
||
else:
|
||
path = _path()
|
||
path.parent.mkdir(parents=True, exist_ok=True)
|
||
path.write_text(raw, encoding="utf-8")
|
||
except Exception:
|
||
pass
|