update
This commit is contained in:
@@ -3,7 +3,7 @@ class_name Bewohner
|
||||
## Bewohner einer Welt: läuft seinen Tagesablauf ab. Auf der Erde kann er von
|
||||
## einer Technik erreicht werden -- oder eben nicht.
|
||||
|
||||
const GEHTEMPO := 6.0
|
||||
const GEHTEMPO := 8.0
|
||||
|
||||
var data: Dictionary
|
||||
var idx: int = 0
|
||||
@@ -11,6 +11,8 @@ var place: String = ""
|
||||
var activity: String = ""
|
||||
var resist_left: float = 0.0
|
||||
var places: Dictionary = {}
|
||||
var netz: Netz = null
|
||||
var anker: Dictionary = {}
|
||||
var mit_mission := false
|
||||
|
||||
var _visual: Node3D
|
||||
@@ -21,14 +23,18 @@ var _aura: MeshInstance3D
|
||||
var _strahl: MeshInstance3D
|
||||
var _path: Array = []
|
||||
var _letzte_aktivitaet: String = ""
|
||||
var _seit_regel: float = 0.0
|
||||
var _bob: float = 0.0
|
||||
var _offset: Vector3
|
||||
|
||||
|
||||
func setup(d: Dictionary, index: int, orte: Dictionary) -> void:
|
||||
func setup(d: Dictionary, index: int, orte: Dictionary,
|
||||
wegenetz: Netz = null, wegeanker: Dictionary = {}) -> void:
|
||||
data = d
|
||||
idx = index
|
||||
places = orte
|
||||
netz = wegenetz
|
||||
anker = wegeanker
|
||||
mit_mission = bool(d.get("mission", false))
|
||||
name = "Bewohner_" + str(d["id"])
|
||||
var winkel := float(index) * TAU / 4.0
|
||||
@@ -73,13 +79,14 @@ func _routine_at(h: float) -> Array:
|
||||
return [cur[1], cur[2]]
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
func _process(roh: float) -> void:
|
||||
var delta := roh * Game.zeit_faktor()
|
||||
resist_left = maxf(0.0, resist_left - delta)
|
||||
|
||||
var soll := _routine_at(Game.time_h)
|
||||
if soll[0] != place:
|
||||
var war_unterwegs := not _path.is_empty()
|
||||
_path = Orte.route(places, place, soll[0], _offset)
|
||||
_path = Orte.route(places, place, soll[0], _offset, netz, anker)
|
||||
if war_unterwegs and _path.size() > 1:
|
||||
_path.remove_at(0) # steht schon draußen, alte Tür überspringen
|
||||
place = soll[0]
|
||||
@@ -110,8 +117,15 @@ func _process(delta: float) -> void:
|
||||
_visual.rotation.z = lerp_angle(_visual.rotation.z, PI * 0.5 if activity == "schlaeft" else 0.0,
|
||||
1.0 - pow(0.01, delta))
|
||||
|
||||
# Solange der Moment anhält, greift die Regel erneut, sobald ihre Technik
|
||||
# wieder frei ist. Der Cooldown gibt damit den Takt vor.
|
||||
_seit_regel += delta
|
||||
if activity != _letzte_aktivitaet:
|
||||
_letzte_aktivitaet = activity
|
||||
_seit_regel = 0.0
|
||||
_regel_pruefen()
|
||||
elif _seit_regel >= 1.0:
|
||||
_seit_regel = 0.0
|
||||
_regel_pruefen()
|
||||
|
||||
var erledigt: bool = mit_mission and Game.completed.has(data["id"])
|
||||
|
||||
Reference in New Issue
Block a user