update
This commit is contained in:
86
.planer/einheiten/backend__tft__staticdata__parse.py.md
Normal file
86
.planer/einheiten/backend__tft__staticdata__parse.py.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Einheiten: backend/tft/staticdata/parse.py
|
||||
stand: f41ac76b5789
|
||||
|
||||
## backend/tft/staticdata/parse.py::augment_tier
|
||||
beschreibung: Leitet die Augment-Stufe (I/II/III) aus dem Suffix des Icon-Dateinamens ab.
|
||||
input: icon_path — optionaler Pfad zum Augment-Icon.
|
||||
output: Ganzzahl 1–3 für die erkannte Stufe oder None bei fehlendem Pfad.
|
||||
entscheidungen:
|
||||
- Tier wird aus einem Römisch-Zahl-Suffix vor dem Punkt ermittelt, unabhängig von Groß-/Kleinschreibung.
|
||||
beleg: "AUGMENT_TIER_RE = re.compile(r\"[-_](I{1,3})\.\", re.I)"
|
||||
- Rückgabe ist die Länge der gematchten Römisch-Zahl, nicht ihr numerischer Wert.
|
||||
beleg: "return len(m.group(1)) if m else None"
|
||||
kanten:
|
||||
- wird-genutzt-von: backend/tft/staticdata/parse.py::parse
|
||||
|
||||
## backend/tft/staticdata/parse.py::render_desc
|
||||
beschreibung: Füllt Platzhalter in einem Tooltip-Text mit Effekt-Werten und entfernt übriges Markup.
|
||||
input: desc — Tooltip-Text mit @…@-Platzhaltern; effects — Dict mit numerischen Effekt-Werten.
|
||||
output: Bereinigter, einsatzfertiger Beschreibungstext.
|
||||
entscheidungen:
|
||||
- Unbekannte Platzhalter werden als "?" dargestellt, statt den Text zu verwerfen.
|
||||
beleg: "return \"?\""
|
||||
- HTML-Tags und %i:…%-Blöcke werden per Regex entfernt, bevor Mehrfach-Whitespace kollabiert wird.
|
||||
beleg: "text = re.sub(r\"<[^>]+>\", \" \", text)"
|
||||
- Ganze Zahlen werden ohne Dezimalstellen ausgegeben, andere auf eine Nachkommastelle gerundet.
|
||||
beleg: "str(int(value)) if float(value).is_integer() else str(round(value, 1))"
|
||||
kanten:
|
||||
- wird-genutzt-von: backend/tft/staticdata/parse.py::parse
|
||||
|
||||
## backend/tft/staticdata/parse.py::resolve_spell
|
||||
beschreibung: Ermittelt Schadens-Array, Schadenstyp und Skalierung einer Champion-Fähigkeit aus dem Desc-Markup.
|
||||
input: ability — Dict mit Desc-Text, Variablen und Schadens-Tags.
|
||||
output: Dict mit spell_damage, spell_damage_type und spell_scaling.
|
||||
entscheidungen:
|
||||
- Erstes im Desc gefundenes Schadens-Tag gewinnt; zugehöriger Variablenname wird gegen "Modified"-Variante geprüft.
|
||||
beleg: "array = get(name) or get(name.removeprefix(\"Modified\"))"
|
||||
- Ohne expliziten Tag wird ADDamage+APDamage kombiniert, sonst greift die Fallback-Liste in festgelegter Reihenfolge.
|
||||
beleg: "for name in DAMAGE_FALLBACKS:"
|
||||
- Skalierung wird aus %i:scaleAP% / %i:scaleAD%-Markern im Desc abgeleitet, nicht aus Variablen.
|
||||
beleg: "has_ap = \"%i:scaleAP%\" in desc"
|
||||
kanten:
|
||||
- wird-genutzt-von: backend/tft/staticdata/parse.py::parse
|
||||
|
||||
## backend/tft/staticdata/parse.py::icon_url
|
||||
beschreibung: Wandelt einen Community-Dragon-Asset-Pfad in eine URL zum PNG-Abbild um.
|
||||
input: asset_path — interner Asset-Pfad mit Endung .tex oder .dds.
|
||||
output: URL auf raw.communitydragon.org mit .png-Endung.
|
||||
entscheidungen:
|
||||
- Endungen werden case-insensitive ersetzt, sodass .TEX und .DDS ebenfalls zu .png werden.
|
||||
beleg: "p = asset_path.lower()"
|
||||
- Basis-URL wird als Modul-Konstante gehalten, nicht pro Aufruf neu gebaut.
|
||||
beleg: "return f\"{CDRAGON_GAME}/{p}\""
|
||||
kanten:
|
||||
- wird-genutzt-von: backend/tft/staticdata/parse.py::parse
|
||||
|
||||
## backend/tft/staticdata/parse.py::detect_set
|
||||
beschreibung: Wählt aus dem Rohtext die höchste Set-Nummer, die Champion-Daten enthält.
|
||||
input: raw — vollständiges cdragon-JSON mit einem sets-Dict.
|
||||
output: Integer der gewählten Set-Nummer.
|
||||
entscheidungen:
|
||||
- Nur Sets mit tatsächlichen Champions werden als Kandidaten zugelassen.
|
||||
beleg: "if v.get(\"champions\")"
|
||||
- Ohne Kandidat wird hart ein ValueError geworfen, statt zu raten.
|
||||
beleg: "raise ValueError(\"no set with champions found in cdragon data\")"
|
||||
kanten:
|
||||
- wird-genutzt-von: backend/tft/staticdata/parse.py::parse
|
||||
|
||||
## backend/tft/staticdata/parse.py::parse
|
||||
beschreibung: Normalisiert das Rohtext-JSON in flache Tabellen für Units, Traits, Items und Augments.
|
||||
input: raw — cdragon-Gesamtdaten; set_override — optionale Set-Nummer.
|
||||
output: Dict mit meta, units, traits, items und augments.
|
||||
entscheidungen:
|
||||
- Minions und Beschwörungen werden über apiName bzw. leere Trait-Listen ausgefiltert, nicht über eine eigene Allowlist.
|
||||
beleg: "if not c[\"traits\"] or \"Minion\" in c[\"apiName\"]:"
|
||||
- Trait-Anzeigenamen werden nachträglich auf api-Namen gemappt, damit die Unit-Tabelle konsistente Identifier führt.
|
||||
beleg: "u[\"traits\"] = [trait_name_to_api[name] for name in u[\"traits\"]]"
|
||||
- Augments werden anhand von Präfix oder apiName-Inhalt gefiltert und um Shop-/Tooltip-Müll bereinigt.
|
||||
beleg: "if \"MarketOffering\" in api or \"@\" in (i[\"name\"] or \"\")"
|
||||
- Set-Nummer kann per Parameter überschrieben werden, sonst fällt parse auf detect_set zurück.
|
||||
beleg: "set_number = set_override if set_override is not None else detect_set(raw)"
|
||||
kanten:
|
||||
- ruft-auf: backend/tft/staticdata/parse.py::detect_set
|
||||
- ruft-auf: backend/tft/staticdata/parse.py::icon_url
|
||||
- ruft-auf: backend/tft/staticdata/parse.py::resolve_spell
|
||||
- ruft-auf: backend/tft/staticdata/parse.py::augment_tier
|
||||
- ruft-auf: backend/tft/staticdata/parse.py::render_desc
|
||||
Reference in New Issue
Block a user