103 lines
3.1 KiB
GDScript
103 lines
3.1 KiB
GDScript
class_name Probleme
|
|
## Die zweite Ebene: was einen Menschen nicht im Tagesablauf aufhält, sondern
|
|
## in einzelnen Momenten. Eine Gewohnheit hat einen Platz im Tag -- ein
|
|
## psychisches Problem hat keinen. Es zeigt sich in Situationen, und die
|
|
## kommen, wann sie wollen.
|
|
##
|
|
## Darum die andere Mechanik: Gewohnheiten pflanzt man ein und sie laufen ohne
|
|
## dich weiter. Bei einer Situation musst du dabei sein und im Moment die
|
|
## Technik wählen, die zu diesem Problem passt.
|
|
|
|
static var LISTE: Dictionary = {
|
|
"angst": {
|
|
"name": "Angst", "kurz": "der Körper macht dicht, bevor der Kopf mitredet",
|
|
},
|
|
"selbstzweifel": {
|
|
"name": "Selbstzweifel", "kurz": "die innere Stimme redet es klein",
|
|
},
|
|
"stress": {
|
|
"name": "Stress", "kurz": "alles gleichzeitig, nichts zu Ende",
|
|
},
|
|
"ueberforderung": {
|
|
"name": "Überforderung", "kurz": "der Berg ist zu groß zum Ansehen",
|
|
},
|
|
"erschoepfung": {
|
|
"name": "Erschöpfung", "kurz": "der Akku ist leer, bevor der Tag anfängt",
|
|
},
|
|
"einsamkeit": {
|
|
"name": "Einsamkeit", "kurz": "hängt allein an dem, was zu zweit ginge",
|
|
},
|
|
}
|
|
|
|
## Situationen: was im Moment sichtbar wird. Jede gehört zu einem Problem.
|
|
static var SITUATIONEN: Dictionary = {
|
|
"blackout": {
|
|
"name": "wird starr", "was": "Ihr wird schwarz vor Augen.",
|
|
"problem": "angst",
|
|
},
|
|
"aufschieben_angst": {
|
|
"name": "meldet sich ab", "was": "Sie sagt den Termin wieder ab.",
|
|
"problem": "angst",
|
|
},
|
|
"kleinreden": {
|
|
"name": "redet es klein", "was": "»Das kann doch jeder besser.«",
|
|
"problem": "selbstzweifel",
|
|
},
|
|
"vergleich": {
|
|
"name": "vergleicht sich", "was": "Sie sieht, was andere schaffen.",
|
|
"problem": "selbstzweifel",
|
|
},
|
|
"alles_gleichzeitig": {
|
|
"name": "fängt drei Dinge an", "was": "Alles gleichzeitig, nichts zu Ende.",
|
|
"problem": "stress",
|
|
},
|
|
"noch_ein_ja": {
|
|
"name": "sagt schon wieder ja", "was": "Noch eine Bitte, noch ein Ja.",
|
|
"problem": "stress",
|
|
},
|
|
"erstarrt": {
|
|
"name": "erstarrt vor dem Berg", "was": "Sie sieht die Aufgabe und macht nichts.",
|
|
"problem": "ueberforderung",
|
|
},
|
|
"ausgebrannt": {
|
|
"name": "sackt zusammen", "was": "Sie sitzt da und starrt.",
|
|
"problem": "erschoepfung",
|
|
},
|
|
"allein": {
|
|
"name": "hängt allein fest", "was": "Sie kommt nicht weiter und fragt niemanden.",
|
|
"problem": "einsamkeit",
|
|
},
|
|
}
|
|
|
|
|
|
static func problem_da(schluessel: String) -> bool:
|
|
return LISTE.has(schluessel)
|
|
|
|
|
|
static func name_von(schluessel: String) -> String:
|
|
return str(LISTE[schluessel]["name"]) if LISTE.has(schluessel) else schluessel
|
|
|
|
|
|
## Alle Situationen, in denen sich dieses Problem zeigt.
|
|
static func situationen_von(problem: String) -> Array:
|
|
var out: Array = []
|
|
for key in SITUATIONEN:
|
|
if SITUATIONEN[key]["problem"] == problem:
|
|
out.append(key)
|
|
return out
|
|
|
|
|
|
## Techniken, die gegen dieses Problem etwas ausrichten -- erkennbar am Feld
|
|
## `tags` der Technik.
|
|
static func techniken_gegen(problem: String) -> Array:
|
|
var out: Array = []
|
|
for t in TechDB.LIST:
|
|
if (t["tags"] as Array).has(problem):
|
|
out.append(str(t["id"]))
|
|
return out
|
|
|
|
|
|
static func hilft(tech_id: String, problem: String) -> bool:
|
|
var t := TechDB.by_id(tech_id)
|
|
return not t.is_empty() and (t["tags"] as Array).has(problem)
|