update
This commit is contained in:
@@ -101,32 +101,20 @@ static var ANLIEGEN: Array = [
|
||||
},
|
||||
]
|
||||
|
||||
## Tagesabläufe: Platzhalter werden durch Wohnung und Arbeitsplatz ersetzt.
|
||||
## Tagesabläufe: Platzhalter werden durch Wohnung und Arbeitsplatz ersetzt.
|
||||
## Die Reihenfolge passt zu den Anliegen — wer aufschiebt, arbeitet zu Hause.
|
||||
static var ABLAEUFE: Array = [
|
||||
[[0, "heim", "schlaeft"], [7, "heim", "zoegert"], [10, "heim", "arbeitet"],
|
||||
[13, "park", "pause"], [15, "heim", "arbeitet"], [18, "cafe", "wartet"],
|
||||
[20, "heim", "zoegert"], [22, "heim", "gruebelt"], [23, "heim", "abendroutine"]],
|
||||
[[0, "heim", "schlaeft"], [4, "arbeit", "arbeitet"], [10, "cafe", "pause"],
|
||||
[12, "heim", "essen"], [14, "heim", "ruht"], [16, "heim", "zoegert"],
|
||||
[18, "park", "unterwegs"], [20, "heim", "muede"], [22, "heim", "abendroutine"]],
|
||||
[[0, "heim", "schlaeft"], [8, "heim", "morgenroutine"], [10, "arbeit", "arbeitet"],
|
||||
[13, "cafe", "angespannt"], [15, "arbeit", "wartet"], [18, "heim", "gruebelt"],
|
||||
[20, "park", "unterwegs"], [22, "heim", "abendroutine"]],
|
||||
[[0, "heim", "schlaeft"], [6, "heim", "morgenroutine"], [8, "arbeit", "arbeitet"],
|
||||
[12, "cafe", "essen"], [14, "arbeit", "arbeitet"], [19, "arbeit", "angespannt"],
|
||||
[21, "heim", "essen"], [23, "heim", "muede"]],
|
||||
[[0, "heim", "schlaeft"], [7, "heim", "morgenroutine"], [9, "arbeit", "arbeitet"],
|
||||
[12, "cafe", "essen"], [14, "arbeit", "arbeitet"], [17, "park", "unterwegs"],
|
||||
[19, "heim", "aufraeumen"], [21, "heim", "gruebelt"], [23, "heim", "abendroutine"]],
|
||||
## Der Grundtag. Blocker werden später in passende Fenster gesetzt.
|
||||
## [Stunde, Ort, Tätigkeit, Fenster]
|
||||
static var GRUNDTAG: Array = [
|
||||
[0, "heim", "schlaeft", "nacht"],
|
||||
[7, "heim", "morgenroutine", "morgen"],
|
||||
[9, "arbeit", "arbeitet", "tag"],
|
||||
[12, "cafe", "essen", "tag"],
|
||||
[14, "arbeit", "arbeitet", "tag"],
|
||||
[17, "park", "unterwegs", "abend"],
|
||||
[19, "heim", "ruht", "abend"],
|
||||
[21, "heim", "ruht", "abend"],
|
||||
[23, "heim", "abendroutine", "nacht"],
|
||||
]
|
||||
|
||||
|
||||
## Zu jeder Technik ein Anliegen und ein Tagesablauf, bei dem sie greift:
|
||||
## [Anliegen, Ablauf]. Mensch i bekommt den Eintrag zu Technik i — und Technik i
|
||||
## ist genau dann entdeckt, wenn i Träume erfüllt sind. So hängt am Schwarzen
|
||||
## Brett immer mindestens ein Mensch, dem mit dem Gelernten zu helfen ist.
|
||||
static var PASSEND: Array = [
|
||||
[0, 0], # Pomodoro -> aufschieben, zögert
|
||||
[6, 4], # Zwei-Minuten -> Werkstatt, räumt auf
|
||||
@@ -403,25 +391,68 @@ static func _anker_setzen() -> void:
|
||||
ANKER[key] = int(NETZ.andocken(tuer)["knoten"])
|
||||
|
||||
|
||||
static func _mensch(i: int) -> Dictionary:
|
||||
# Bis alle Wege entdeckt sind, folgt jeder Mensch dem Weg gleicher Nummer.
|
||||
# Danach mischt sich das Feld wieder.
|
||||
var a_nr: int = i % ANLIEGEN.size()
|
||||
var b_nr: int = i % ABLAEUFE.size()
|
||||
if i < PASSEND.size():
|
||||
a_nr = int(PASSEND[i][0])
|
||||
b_nr = int(PASSEND[i][1])
|
||||
var anliegen: Dictionary = ANLIEGEN[a_nr]
|
||||
var heim := heim_key(i)
|
||||
var arbeit := _naechster_arbeitsplatz(heim, i)
|
||||
var ablauf: Array = []
|
||||
for e in ABLAEUFE[b_nr]:
|
||||
## Woran der Traum dieses Menschen scheitert. Zwei bis drei Ursachen, nie alle.
|
||||
## Die erste hängt am Weg gleicher Nummer -- so ist der neueste Mensch immer
|
||||
## mit dem neuesten Weg anzugehen.
|
||||
static func ursachen_von(i: int) -> Array:
|
||||
var alle: Array = Ursachen.LISTE.keys()
|
||||
var erste: String = str(alle[i % alle.size()])
|
||||
if i < TechDB.LIST.size():
|
||||
erste = str(TechDB.LIST[i]["ursache"])
|
||||
var out: Array = [erste]
|
||||
var zweite: String = str(alle[(alle.find(erste) + 1 + i % 3) % alle.size()])
|
||||
if zweite != erste:
|
||||
out.append(zweite)
|
||||
if i % 3 == 2:
|
||||
var dritte: String = str(alle[(alle.find(erste) + 3) % alle.size()])
|
||||
if not out.has(dritte):
|
||||
out.append(dritte)
|
||||
return out
|
||||
|
||||
|
||||
## Der Tagesablauf: Grundtag, in den je Ursache ein Blocker gesetzt wird.
|
||||
static func _tagesablauf(i: int, heim: String, arbeit: String) -> Array:
|
||||
var slots: Array = []
|
||||
for e in GRUNDTAG:
|
||||
var ort: String = str(e[1])
|
||||
if ort == "heim":
|
||||
ort = heim
|
||||
elif ort == "arbeit":
|
||||
ort = arbeit
|
||||
ablauf.append([e[0], ort, e[2]])
|
||||
slots.append([int(e[0]), ort, str(e[2]), str(e[3])])
|
||||
var belegt: Dictionary = {}
|
||||
var nr := 0
|
||||
for u in ursachen_von(i):
|
||||
for fenster in ["tag", "abend", "morgen", "nacht"]:
|
||||
var kandidaten: Array = Ursachen.blocker_fuer(str(u), fenster)
|
||||
if kandidaten.is_empty():
|
||||
continue
|
||||
var blocker: String = str(kandidaten[(i + nr) % kandidaten.size()])
|
||||
var gesetzt := false
|
||||
for k in range(slots.size()):
|
||||
if belegt.has(k) or str(slots[k][2]) == "schlaeft":
|
||||
continue
|
||||
if str(slots[k][3]) != fenster:
|
||||
continue
|
||||
slots[k][2] = blocker
|
||||
belegt[k] = true
|
||||
gesetzt = true
|
||||
break
|
||||
if gesetzt:
|
||||
break
|
||||
nr += 1
|
||||
var out: Array = []
|
||||
for e in slots:
|
||||
out.append([e[0], e[1], e[2]])
|
||||
return out
|
||||
|
||||
|
||||
static func _mensch(i: int) -> Dictionary:
|
||||
var anliegen: Dictionary = ANLIEGEN[i % ANLIEGEN.size()]
|
||||
if i < PASSEND.size():
|
||||
anliegen = ANLIEGEN[int(PASSEND[i][0])]
|
||||
var heim := heim_key(i)
|
||||
var arbeit := _naechster_arbeitsplatz(heim, i)
|
||||
return {
|
||||
"id": "mensch_%d" % i,
|
||||
"name": "%s %s" % [_vorname(i), _nachname(i)],
|
||||
@@ -430,10 +461,11 @@ static func _mensch(i: int) -> Dictionary:
|
||||
"traum": str(anliegen["traum"]),
|
||||
"problem": str(anliegen["problem"]),
|
||||
"tags": (anliegen["tags"] as Array).duplicate(),
|
||||
"ursachen": ursachen_von(i),
|
||||
"mission": true,
|
||||
"heim": heim,
|
||||
"farbe": Color.from_hsv(fmod(0.02 + float(i) * 0.191, 1.0), 0.5, 0.8),
|
||||
"routine": ablauf,
|
||||
"routine": _tagesablauf(i, heim, arbeit),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user