66 lines
1.8 KiB
GDScript
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
|