update
This commit is contained in:
@@ -30,6 +30,10 @@ var nav_map: RID # auf der Erde: Pfade vom Navigationsnetz
|
||||
var nav_fehl := 0 # wie oft das Netz keinen Pfad wusste (Rückfall aufs Wegenetz)
|
||||
var nav_fehl_info := ""
|
||||
var _bob: float = 0.0
|
||||
var _takt := 0.0 # Schild und Haltungsziele alle 0,3 s, nicht je Bild
|
||||
var _neigung_ziel := 0.0
|
||||
var _groesse_ziel := 1.0
|
||||
var _zappelt := false
|
||||
var _offset: Vector3
|
||||
|
||||
|
||||
@@ -127,19 +131,12 @@ func _hut(kopf: Vector3, c: Color) -> void:
|
||||
## Angst duckt, Erschöpfung beugt, Unruhe zappelt -- solange die Klemme nicht
|
||||
## überwunden ist. So sieht man Probleme beim Beobachten am Körper.
|
||||
func _haltung(delta: float, geht: bool) -> void:
|
||||
var id := str(data["id"])
|
||||
var offen: Dictionary = {}
|
||||
for k in data.get("probleme", []):
|
||||
if not Game.problem_ueberwunden(id, str(k)):
|
||||
offen[str(k)] = true
|
||||
var neigung := 0.38 if offen.has("erschoepfung") else 0.0
|
||||
var groesse := 0.86 if offen.has("angst") else 1.0
|
||||
var zappeln := 0.0
|
||||
if offen.has("unruhe") and not geht:
|
||||
zappeln = sin(Time.get_ticks_msec() * 0.011) * 0.06
|
||||
_ober.rotation.x = lerpf(_ober.rotation.x, -neigung, 1.0 - pow(0.02, delta))
|
||||
if _takt <= 0.0:
|
||||
_haltungsziele()
|
||||
var zappeln := sin(Time.get_ticks_msec() * 0.011) * 0.06 if _zappelt and not geht else 0.0
|
||||
_ober.rotation.x = lerpf(_ober.rotation.x, -_neigung_ziel, 1.0 - pow(0.02, delta))
|
||||
_ober.rotation.z = lerpf(_ober.rotation.z, zappeln, 1.0 - pow(0.001, delta))
|
||||
_ober.scale = _ober.scale.lerp(Vector3.ONE * groesse, 1.0 - pow(0.02, delta))
|
||||
_ober.scale = _ober.scale.lerp(Vector3.ONE * _groesse_ziel, 1.0 - pow(0.02, delta))
|
||||
var schwung := sin(_bob) * 0.7 if geht else 0.0
|
||||
for i in range(_arme.size()):
|
||||
var a: Node3D = _arme[i]
|
||||
@@ -147,6 +144,17 @@ func _haltung(delta: float, geht: bool) -> void:
|
||||
1.0 - pow(0.001, delta))
|
||||
|
||||
|
||||
func _haltungsziele() -> void:
|
||||
var id := str(data["id"])
|
||||
var offen: Dictionary = {}
|
||||
for k in data.get("probleme", []):
|
||||
if not Game.problem_ueberwunden(id, str(k)):
|
||||
offen[str(k)] = true
|
||||
_neigung_ziel = 0.38 if offen.has("erschoepfung") else 0.0
|
||||
_groesse_ziel = 0.86 if offen.has("angst") else 1.0
|
||||
_zappelt = offen.has("unruhe")
|
||||
|
||||
|
||||
## [Ort, Tätigkeit, Slotnummer] zur Stunde h. Steht in dem Slot ein System,
|
||||
## ist die Tätigkeit die Ersatzhandlung.
|
||||
func _routine_at(h: float) -> Array:
|
||||
@@ -217,11 +225,15 @@ func _process(roh: float) -> void:
|
||||
_aura.scale.x = 1.0 + sin(Time.get_ticks_msec() * 0.003) * 0.08
|
||||
_aura.scale.z = _aura.scale.x
|
||||
|
||||
_label.text = beschriftung()
|
||||
# Auf der Erde tragen nur Fokus, Verfolgte, Mission und wer unter der Maus
|
||||
# steht ein Schild -- sonst überdecken sich acht Namen im Café.
|
||||
_label.visible = (not mit_mission and not bool(data.get("stumm", false))) \
|
||||
or Game.markiert.has(str(data["id"]))
|
||||
if _takt <= 0.0:
|
||||
_takt = 0.3
|
||||
if _label.visible:
|
||||
_label.text = beschriftung()
|
||||
_takt -= delta
|
||||
_label.modulate = Color(0.55, 0.85, 0.6) if erledigt else (
|
||||
Color(1, 0.9, 0.6) if aktiv else Color(1, 1, 1))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user