66 lines
1.8 KiB
GDScript
66 lines
1.8 KiB
GDScript
class_name Orte
|
|
## Gemeinsame Geometrie für beide Welten: Orte, Türen, Wege, Tätigkeiten.
|
|
|
|
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 = {
|
|
# Erde
|
|
"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",
|
|
# Traumwelt
|
|
"webt": "webt Traumfäden",
|
|
"sammelt": "sammelt Erinnerungen",
|
|
"sortiert": "sortiert, was verloren ging",
|
|
"beobachtet": "schaut zur Erde hinunter",
|
|
"wacht": "hält Wache am Tor",
|
|
"singt": "singt",
|
|
"wandert": "wandert über die Insel",
|
|
"traeumt": "träumt",
|
|
}
|
|
|
|
|
|
## Blocker tragen ihren Namen im Ursachen-Katalog, alles andere hier.
|
|
static func text(a: String) -> String:
|
|
if Ursachen.ist_blocker(a):
|
|
return str(Ursachen.BLOCKER[a]["name"])
|
|
return str(ACTIVITY_TEXT.get(a, a))
|
|
|
|
|
|
static func kennt(a: String) -> bool:
|
|
return ACTIVITY_TEXT.has(a) or Ursachen.ist_blocker(a)
|
|
|
|
|
|
static func center(places: Dictionary, 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 door(places: Dictionary, key: String) -> Vector3:
|
|
var pl: Dictionary = places[key]
|
|
var c := center(places, 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)
|