132 lines
4.2 KiB
GDScript
132 lines
4.2 KiB
GDScript
class_name Ursachen
|
|
## Woran ein Traum scheitert, und was im Tag davon zu sehen ist.
|
|
##
|
|
## Ein Traum hat eine Grundrate. Jede ungelöste Ursache bremst sie. Zwei
|
|
## ungelöste Ursachen bremsen doppelt -- deshalb lohnt es, alle zu finden.
|
|
## Sichtbar wird eine Ursache nur an den Tätigkeiten, die sie hervorbringt:
|
|
## wer nie in Gang kommt, räumt auf, recherchiert und schreibt Listen.
|
|
##
|
|
## Grundlage: Habit Reversal Training beginnt mit awareness training -- erst
|
|
## bemerken, dann ersetzen. Und Duhiggs goldene Regel: Auslöser und Belohnung
|
|
## bleiben, nur die Handlung dazwischen wird getauscht.
|
|
|
|
static var LISTE: Dictionary = {
|
|
"anfang": {
|
|
"name": "Kein Anfang", "kurz": "kommt nie in Gang",
|
|
"faktor": 0.30,
|
|
},
|
|
"zeit": {
|
|
"name": "Keine Zeit", "kurz": "der Tag ist voll",
|
|
"faktor": 0.30,
|
|
},
|
|
"kraft": {
|
|
"name": "Keine Kraft", "kurz": "abends ist nichts mehr übrig",
|
|
"faktor": 0.40,
|
|
},
|
|
"halt": {
|
|
"name": "Kein Halt", "kurz": "fängt an und hört wieder auf",
|
|
"faktor": 0.50,
|
|
},
|
|
"grund": {
|
|
"name": "Kein Grund", "kurz": "glaubt nicht mehr daran",
|
|
"faktor": 0.40,
|
|
},
|
|
}
|
|
|
|
## Tätigkeiten, die einen Traum aufhalten. Jede hat einen Auslöser und eine
|
|
## Belohnung -- genau die muss eine Ersatzhandlung wieder liefern.
|
|
## zeit: wann im Tag die Tätigkeit auftaucht.
|
|
static var BLOCKER: Dictionary = {
|
|
"putzflucht": {
|
|
"name": "räumt auf statt anzufangen", "ausloeser": "eine große Aufgabe",
|
|
"belohnung": "erfolg", "ursache": "anfang", "zeit": "tag",
|
|
},
|
|
"recherche": {
|
|
"name": "recherchiert statt anzufangen", "ausloeser": "Unsicherheit",
|
|
"belohnung": "erfolg", "ursache": "anfang", "zeit": "tag",
|
|
},
|
|
"liste": {
|
|
"name": "schreibt eine Später-Liste", "ausloeser": "Überforderung",
|
|
"belohnung": "ordnung", "ursache": "anfang", "zeit": "morgen",
|
|
},
|
|
"jasagen": {
|
|
"name": "sagt zu allem ja", "ausloeser": "eine fremde Bitte",
|
|
"belohnung": "anerkennung", "ursache": "zeit", "zeit": "tag",
|
|
},
|
|
"scrollen": {
|
|
"name": "scrollt endlos", "ausloeser": "Leerlauf",
|
|
"belohnung": "ablenkung", "ursache": "zeit", "zeit": "tag",
|
|
},
|
|
"serie": {
|
|
"name": "schaut eine Serie", "ausloeser": "Erschöpfung",
|
|
"belohnung": "abschalten", "ursache": "kraft", "zeit": "abend",
|
|
},
|
|
"wach": {
|
|
"name": "bleibt wach", "ausloeser": "ein fremdbestimmter Tag",
|
|
"belohnung": "zeit_fuer_sich", "ursache": "kraft", "zeit": "nacht",
|
|
},
|
|
"kuehlschrank": {
|
|
"name": "steht am Kühlschrank", "ausloeser": "Langeweile",
|
|
"belohnung": "unterbrechung", "ursache": "kraft", "zeit": "abend",
|
|
},
|
|
"spielen": {
|
|
"name": "spielt noch eine Runde", "ausloeser": "Anspannung",
|
|
"belohnung": "erfolg", "ursache": "halt", "zeit": "abend",
|
|
},
|
|
"umschalten": {
|
|
"name": "schaltet auf etwas anderes um", "ausloeser": "Widerstand",
|
|
"belohnung": "neuheit", "ursache": "halt", "zeit": "tag",
|
|
},
|
|
"klagen": {
|
|
"name": "klagt am Telefon", "ausloeser": "Frust",
|
|
"belohnung": "verbundenheit", "ursache": "grund", "zeit": "abend",
|
|
},
|
|
"vergleichen": {
|
|
"name": "vergleicht sich mit anderen", "ausloeser": "ein fremder Erfolg",
|
|
"belohnung": "einordnung", "ursache": "grund", "zeit": "morgen",
|
|
},
|
|
}
|
|
|
|
static var BELOHNUNG_TEXT: Dictionary = {
|
|
"erfolg": "ein Erfolgserlebnis",
|
|
"ordnung": "Ordnung",
|
|
"anerkennung": "Anerkennung",
|
|
"anschluss": "Anschluss",
|
|
"abschalten": "Abschalten",
|
|
"zeit_fuer_sich": "Zeit für sich",
|
|
"unterbrechung": "eine Unterbrechung",
|
|
"neuheit": "etwas Neues",
|
|
"verbundenheit": "Verbundenheit",
|
|
"einordnung": "Einordnung",
|
|
"ablenkung": "Ablenkung",
|
|
}
|
|
|
|
|
|
static func ist_blocker(activity: String) -> bool:
|
|
return BLOCKER.has(activity)
|
|
|
|
|
|
static func ursache_von(activity: String) -> String:
|
|
return str(BLOCKER[activity]["ursache"]) if BLOCKER.has(activity) else ""
|
|
|
|
|
|
static func belohnung_text(schluessel: String) -> String:
|
|
return str(BELOHNUNG_TEXT.get(schluessel, schluessel))
|
|
|
|
|
|
## Blocker einer Ursache, die in dieses Zeitfenster passen.
|
|
static func blocker_fuer(ursache: String, zeit: String) -> Array:
|
|
var out: Array = []
|
|
for id in BLOCKER:
|
|
if BLOCKER[id]["ursache"] == ursache and BLOCKER[id]["zeit"] == zeit:
|
|
out.append(id)
|
|
return out
|
|
|
|
|
|
static func alle_blocker(ursache: String) -> Array:
|
|
var out: Array = []
|
|
for id in BLOCKER:
|
|
if BLOCKER[id]["ursache"] == ursache:
|
|
out.append(id)
|
|
return out
|