Files
dreamer-game/scripts/aushaenge.gd
2026-09-15 23:17:07 +02:00

66 lines
1.8 KiB
GDScript

class_name Aushaenge
## Eigene Aushänge: Menschen, die jemand am Schwarzen Brett selbst geschrieben
## hat. Überleben den Neustart, liegen als ConfigFile unter user://.
static var PFAD := "user://aushaenge.cfg"
const FELDER := ["name", "alter", "beruf", "traum", "geschichte", "woerter"]
static func laden() -> Array:
var cfg := ConfigFile.new()
if cfg.load(PFAD) != OK:
return []
var out: Array = []
for abschnitt in cfg.get_sections():
var pr: Dictionary = {"id": abschnitt}
for f in FELDER:
pr[f] = cfg.get_value(abschnitt, f, "" if f != "woerter" else [])
pr["woerter"] = Array(pr["woerter"])
out.append(pr)
return out
## Legt einen Aushang an oder überschreibt ihn. Gibt die id zurück.
static func speichern(pr: Dictionary) -> String:
var cfg := ConfigFile.new()
cfg.load(PFAD)
var id := str(pr.get("id", ""))
if id == "":
var n := 0
while cfg.has_section("eigen_%d" % n):
n += 1
id = "eigen_%d" % n
for f in FELDER:
cfg.set_value(id, f, pr.get(f, "" if f != "woerter" else []))
cfg.save(PFAD)
return id
static func loeschen(id: String) -> void:
var cfg := ConfigFile.new()
if cfg.load(PFAD) != OK:
return
if cfg.has_section(id):
cfg.erase_section(id)
cfg.save(PFAD)
static func alle_loeschen() -> void:
var cfg := ConfigFile.new()
cfg.save(PFAD)
## Was am Aushang fehlt, bevor er gilt. Leer heißt: alles da.
static func pruefen(pr: Dictionary) -> Array:
var fehler: Array = []
if str(pr.get("name", "")).strip_edges() == "":
fehler.append("Name fehlt")
if str(pr.get("traum", "")).strip_edges() == "":
fehler.append("Traum fehlt")
if not HumanDB.BERUF_TAGESTYP.has(str(pr.get("beruf", ""))):
fehler.append("Beruf fehlt")
var w: Array = pr.get("woerter", [])
if w.size() < Woerter.MINDESTENS:
fehler.append("mindestens %d Wörter (%d)" % [Woerter.MINDESTENS, w.size()])
return fehler