1.7 KiB
1.7 KiB
Einheiten: backend/tft/constants/loader.py
stand: f41ac76b57
backend/tft/constants/loader.py::load_constants
beschreibung: Lädt die TOML-Konstantendatei für ein gegebenes Set und gibt das eingelesene Dict zurück. input: set_number (int) – die zu ladende Set-Nummer. output: dict – die deserialisierten Konstanten aus der TOML-Datei. entscheidungen:
- Fehlt die Set-Datei, bricht der Lader mit einer FileNotFoundError ab und gibt einen Hinweis zur Behebung. beleg: "if not path.exists():"
- Die Datei wird im Binary-Modus geöffnet, da tomllib rohe Bytes erwartet. beleg: "with path.open("rb") as f:"
- Geladene Werte werden unmittelbar über validate einer Konsistenzprüfung unterzogen. beleg: "validate(c)" kanten:
- ruft-auf: backend/tft/constants/loader.py::validate
backend/tft/constants/loader.py::validate
beschreibung: Validiert die Struktur und Plausibilität der geladenen Konstanten und wirft bei Verstößen ValueError. input: c (dict) – das zuvor aus TOML geladene Konstanten-Dict. output: None – signalisiert Gültigkeit durch stilles Zurückkehren oder Auslösen einer Ausnahme. entscheidungen:
- Jede Shop-Odds-Zeile muss genau 5 Einträge besitzen. beleg: "if len(row) != 5:"
- Die Pool-Größenliste muss exakt 5 Kostenstufen umfassen. beleg: "if len(c["pool"]["sizes"]) != 5:"
- Die Anzahl der XP-Stufen-Übergänge muss zur maximalen Stufe passen (to_next = max_level − 1). beleg: "if len(xp["to_next"]) != xp["max_level"] - 1:"
- Die streak_gold-Tabelle muss aufsteigend nach Streak-Länge sortiert sein. beleg: "if streaks != sorted(streaks):"
- Jede Shop-Odds-Zeile muss in Summe genau 100 ergeben. beleg: "if sum(row) != 100:" kanten:
- wird-genutzt-von: backend/tft/constants/loader.py::load_constants