first commit
This commit is contained in:
206
scripts/human_db.gd
Normal file
206
scripts/human_db.gd
Normal file
@@ -0,0 +1,206 @@
|
||||
class_name HumanDB
|
||||
## Orte der Kleinstadt und die Menschen mit ihren Tagesabläufen.
|
||||
|
||||
## Gebäude liegen im Ring um den Park. Alle Türen zeigen zur Mitte.
|
||||
## pos = Standplatz drinnen, size = Grundfläche, dir = Richtung der Türlücke.
|
||||
static var PLACES: Dictionary = {
|
||||
"uni": {
|
||||
"name": "Hochschule", "pos": [-28.0, -27.0], "size": [14.0, 10.0],
|
||||
"dir": "back", "color": Color(0.72, 0.70, 0.66),
|
||||
},
|
||||
"cafe": {
|
||||
"name": "Café Nadel", "pos": [0.0, -27.0], "size": [12.0, 10.0],
|
||||
"dir": "back", "color": Color(0.82, 0.62, 0.45),
|
||||
},
|
||||
"buero": {
|
||||
"name": "Büro Ostwind", "pos": [28.0, -27.0], "size": [14.0, 10.0],
|
||||
"dir": "back", "color": Color(0.62, 0.66, 0.72),
|
||||
},
|
||||
"baeckerei": {
|
||||
"name": "Bäckerei Keller", "pos": [-31.0, 0.0], "size": [10.0, 12.0],
|
||||
"dir": "right", "color": Color(0.85, 0.72, 0.50),
|
||||
},
|
||||
"haus_tobias": {
|
||||
"name": "Wohnung Frank", "pos": [31.0, 0.0], "size": [10.0, 12.0],
|
||||
"dir": "left", "color": Color(0.70, 0.58, 0.55),
|
||||
},
|
||||
"haus_lena": {
|
||||
"name": "Atelier Vogt", "pos": [-28.0, 27.0], "size": [12.0, 10.0],
|
||||
"dir": "forward", "color": Color(0.66, 0.58, 0.72),
|
||||
},
|
||||
"haus_mira": {
|
||||
"name": "Wohnheim", "pos": [0.0, 27.0], "size": [12.0, 10.0],
|
||||
"dir": "forward", "color": Color(0.60, 0.68, 0.62),
|
||||
},
|
||||
"haus_bruno": {
|
||||
"name": "Haus Keller", "pos": [28.0, 27.0], "size": [12.0, 10.0],
|
||||
"dir": "forward", "color": Color(0.78, 0.66, 0.58),
|
||||
},
|
||||
"park": {
|
||||
"name": "Stadtpark", "pos": [0.0, 4.0], "size": [0.0, 0.0],
|
||||
"dir": "none", "color": Color(0.45, 0.65, 0.38),
|
||||
},
|
||||
}
|
||||
|
||||
static var DIR_VEC: Dictionary = {
|
||||
"back": Vector3(0, 0, 1),
|
||||
"forward": Vector3(0, 0, -1),
|
||||
"left": Vector3(-1, 0, 0),
|
||||
"right": Vector3(1, 0, 0),
|
||||
"none": Vector3(0, 0, 0),
|
||||
}
|
||||
|
||||
static var ACTIVITY_TEXT: Dictionary = {
|
||||
"schlaeft": "schläft",
|
||||
"morgenroutine": "Morgenroutine",
|
||||
"arbeitet": "arbeitet",
|
||||
"pause": "macht Pause",
|
||||
"essen": "isst",
|
||||
"gruebelt": "grübelt",
|
||||
"ruht": "ruht sich aus",
|
||||
"angespannt": "ist angespannt",
|
||||
"abendroutine": "Abendroutine",
|
||||
"aufraeumen": "räumt auf",
|
||||
"wartet": "wartet",
|
||||
"muede": "ist müde",
|
||||
"unterwegs": "geht spazieren",
|
||||
"zoegert": "zögert",
|
||||
}
|
||||
|
||||
static var LIST: Array = [
|
||||
{
|
||||
"id": "lena",
|
||||
"name": "Lena Vogt",
|
||||
"alter": 29,
|
||||
"beruf": "Illustratorin",
|
||||
"traum": "Ihr Bilderbuch endlich zu Ende zeichnen.",
|
||||
"problem": "Sie schiebt die letzten zwölf Seiten seit acht Monaten vor sich her. Jeder Entwurf kommt ihr zu schlecht vor, also fängt sie lieber gar nicht erst an.",
|
||||
"tags": ["prokrastination", "selbstzweifel", "ablenkung"],
|
||||
"farbe": Color(0.85, 0.45, 0.55),
|
||||
"routine": [
|
||||
[0, "haus_lena", "schlaeft"],
|
||||
[7, "haus_lena", "morgenroutine"],
|
||||
[8, "cafe", "essen"],
|
||||
[10, "haus_lena", "zoegert"],
|
||||
[12, "haus_lena", "arbeitet"],
|
||||
[13, "park", "pause"],
|
||||
[15, "haus_lena", "arbeitet"],
|
||||
[18, "park", "unterwegs"],
|
||||
[20, "haus_lena", "aufraeumen"],
|
||||
[21, "haus_lena", "gruebelt"],
|
||||
[22, "haus_lena", "abendroutine"],
|
||||
[23, "haus_lena", "schlaeft"],
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "bruno",
|
||||
"name": "Bruno Keller",
|
||||
"alter": 54,
|
||||
"beruf": "Bäcker",
|
||||
"traum": "Wieder Klavier spielen wie mit zwanzig.",
|
||||
"problem": "Das Klavier steht zugestellt im Flur. Nach der Frühschicht ist er zu müde, um auch nur den Deckel zu öffnen.",
|
||||
"tags": ["gewohnheit", "erschoepfung", "ablenkung"],
|
||||
"farbe": Color(0.55, 0.45, 0.30),
|
||||
"routine": [
|
||||
[0, "haus_bruno", "schlaeft"],
|
||||
[3, "baeckerei", "arbeitet"],
|
||||
[10, "cafe", "pause"],
|
||||
[12, "haus_bruno", "essen"],
|
||||
[13, "haus_bruno", "ruht"],
|
||||
[15, "haus_bruno", "zoegert"],
|
||||
[16, "park", "unterwegs"],
|
||||
[18, "haus_bruno", "muede"],
|
||||
[20, "haus_bruno", "abendroutine"],
|
||||
[21, "haus_bruno", "schlaeft"],
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "mira",
|
||||
"name": "Mira Sahin",
|
||||
"alter": 22,
|
||||
"beruf": "Studentin",
|
||||
"traum": "Ihre Abschlussarbeit vortragen, ohne zu erstarren.",
|
||||
"problem": "Die Arbeit ist längst fertig. Aber vor jedem Vortrag wird ihr schwarz vor Augen, und sie meldet sich wieder ab.",
|
||||
"tags": ["angst", "ueberforderung", "selbstzweifel"],
|
||||
"farbe": Color(0.35, 0.60, 0.85),
|
||||
"routine": [
|
||||
[0, "haus_mira", "schlaeft"],
|
||||
[8, "haus_mira", "morgenroutine"],
|
||||
[9, "uni", "arbeitet"],
|
||||
[13, "cafe", "angespannt"],
|
||||
[15, "uni", "arbeitet"],
|
||||
[17, "uni", "wartet"],
|
||||
[18, "haus_mira", "gruebelt"],
|
||||
[20, "park", "unterwegs"],
|
||||
[21, "haus_mira", "ruht"],
|
||||
[22, "haus_mira", "abendroutine"],
|
||||
[23, "haus_mira", "schlaeft"],
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "tobias",
|
||||
"name": "Tobias Frank",
|
||||
"alter": 41,
|
||||
"beruf": "Sachbearbeiter",
|
||||
"traum": "Abends wieder Zeit für seine Tochter haben.",
|
||||
"problem": "Er sagt zu jeder Bitte ja und sitzt dafür jeden Abend bis acht im Büro. Zu Hause ist er nur noch müde.",
|
||||
"tags": ["stress", "grenzen", "erschoepfung"],
|
||||
"farbe": Color(0.40, 0.55, 0.45),
|
||||
"routine": [
|
||||
[0, "haus_tobias", "schlaeft"],
|
||||
[6, "haus_tobias", "morgenroutine"],
|
||||
[7, "buero", "arbeitet"],
|
||||
[12, "cafe", "essen"],
|
||||
[14, "buero", "arbeitet"],
|
||||
[19, "buero", "angespannt"],
|
||||
[20, "haus_tobias", "essen"],
|
||||
[21, "haus_tobias", "muede"],
|
||||
[23, "haus_tobias", "abendroutine"],
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
static func by_id(id: String) -> Dictionary:
|
||||
for h in LIST:
|
||||
if h["id"] == id:
|
||||
return h
|
||||
return {}
|
||||
|
||||
|
||||
static func place_center(key: String) -> Vector3:
|
||||
var p: Array = PLACES[key]["pos"]
|
||||
return Vector3(p[0], 0.0, p[1])
|
||||
|
||||
|
||||
## Punkt direkt vor der Türlücke, außerhalb des Gebäudes.
|
||||
static func place_door(key: String) -> Vector3:
|
||||
var pl: Dictionary = PLACES[key]
|
||||
var c := place_center(key)
|
||||
var d: Vector3 = DIR_VEC[pl["dir"]]
|
||||
if d == Vector3.ZERO:
|
||||
return c
|
||||
var size: Array = pl["size"]
|
||||
var half: float = size[1] * 0.5 if absf(d.z) > 0.0 else size[0] * 0.5
|
||||
return c + d * (half + 2.5)
|
||||
|
||||
|
||||
## Route von Ort a nach Ort b: aus der Tür, über den Platz, zur neuen Tür, hinein.
|
||||
static func route(a: String, b: String, offset: Vector3) -> Array:
|
||||
var pts: Array = []
|
||||
if a == b:
|
||||
return pts
|
||||
var da := place_door(a)
|
||||
var db := place_door(b)
|
||||
pts.append(da)
|
||||
if da.length() > 17.0:
|
||||
pts.append(da.normalized() * 15.0)
|
||||
if db.length() > 17.0:
|
||||
pts.append(db.normalized() * 15.0)
|
||||
pts.append(db)
|
||||
pts.append(place_center(b) + offset)
|
||||
return pts
|
||||
|
||||
|
||||
static func activity_text(a: String) -> String:
|
||||
return ACTIVITY_TEXT.get(a, a)
|
||||
Reference in New Issue
Block a user