update
This commit is contained in:
@@ -72,21 +72,12 @@ func _process(delta: float) -> void:
|
||||
if ui.offen:
|
||||
ui.setze_hinweis("")
|
||||
return
|
||||
Game.notiz_sperre = maxf(0.0, Game.notiz_sperre - delta)
|
||||
_fokus_suchen()
|
||||
_beobachten(dt)
|
||||
_dabeisein()
|
||||
_hinweis_setzen()
|
||||
|
||||
|
||||
## Dabeistehen deckt auf, was der Mensch gerade wirklich tut.
|
||||
func _beobachten(dt: float) -> void:
|
||||
if _fokus_mensch == null or not auf_erde:
|
||||
return
|
||||
var id: String = str(_fokus_mensch.data["id"])
|
||||
if id != Game.active_mission:
|
||||
return
|
||||
Game.beobachten(id, int(_fokus_mensch.slot), dt)
|
||||
|
||||
|
||||
func _fokus_suchen() -> void:
|
||||
_fokus = null
|
||||
_fokus_mensch = null
|
||||
@@ -111,14 +102,12 @@ func _fokus_suchen() -> void:
|
||||
|
||||
|
||||
func _hinweis_setzen() -> void:
|
||||
if _fokus_mensch != null:
|
||||
var mid: String = str(_fokus_mensch.data["name"])
|
||||
var mnr: int = int(_fokus_mensch.slot)
|
||||
var mkey: String = str(_fokus_mensch.data["id"])
|
||||
if mkey == Game.active_mission and not Game.erkannt(mkey, mnr):
|
||||
ui.setze_hinweis("%s — schau zu, was sie hier tut …" % mid)
|
||||
else:
|
||||
ui.setze_hinweis("[E] %s — %s" % [mid, Orte.text(_fokus_mensch.activity)])
|
||||
if player.folgt != null and is_instance_valid(player.folgt):
|
||||
ui.setze_hinweis("[F] loslassen · %s — %s" %
|
||||
[player.folgt.data["name"], _notiz_hinweis(player.folgt)])
|
||||
elif _fokus_mensch != null:
|
||||
ui.setze_hinweis("[F] folgen · %s — %s" %
|
||||
[_fokus_mensch.data["name"], _notiz_hinweis(_fokus_mensch)])
|
||||
elif _fokus != null:
|
||||
var kind: String = _fokus.get_meta("kind")
|
||||
var titel: String = _fokus.get_meta("titel")
|
||||
@@ -137,6 +126,18 @@ func _hinweis_setzen() -> void:
|
||||
ui.setze_hinweis("")
|
||||
|
||||
|
||||
## Was am Menschen gerade dransteht: notieren, ansprechen oder nur zusehen.
|
||||
func _notiz_hinweis(mensch: Bewohner) -> String:
|
||||
var tat := Orte.text(mensch.activity)
|
||||
if str(mensch.data["id"]) != Game.active_mission:
|
||||
return tat
|
||||
if Game.notiz_sperre > 0.0:
|
||||
return "%s (%.0f s)" % [tat, Game.notiz_sperre]
|
||||
if Game.erkannt(str(mensch.data["id"]), int(mensch.slot)):
|
||||
return "%s · [E] ansprechen" % tat
|
||||
return "%s · [R] notieren, wenn hier etwas schiefläuft" % tat
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("ui_cancel") and not ui.offen:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE if \
|
||||
@@ -162,6 +163,66 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("interagieren"):
|
||||
_interagieren()
|
||||
get_viewport().set_input_as_handled()
|
||||
return
|
||||
if event.is_action_pressed("folgen"):
|
||||
_verfolgen()
|
||||
get_viewport().set_input_as_handled()
|
||||
return
|
||||
if event.is_action_pressed("notieren"):
|
||||
_notieren()
|
||||
get_viewport().set_input_as_handled()
|
||||
|
||||
|
||||
## Wer dabeisteht, füllt die Stunde im Ablauf -- mehr nicht. Was dort
|
||||
## schiefläuft, muss er selbst benennen.
|
||||
func _dabeisein() -> void:
|
||||
if _fokus_mensch == null or not auf_erde:
|
||||
return
|
||||
var id: String = str(_fokus_mensch.data["id"])
|
||||
if id == Game.active_mission:
|
||||
Game.sehen(id, int(_fokus_mensch.slot))
|
||||
|
||||
|
||||
## Den Moment benennen: hier läuft etwas schief. Das ist der Kern des
|
||||
## Beobachtens -- der Spieler entscheidet, wann er hinschaut.
|
||||
func _notieren() -> void:
|
||||
if not auf_erde:
|
||||
return
|
||||
var ziel: Bewohner = _fokus_mensch
|
||||
if ziel == null and player.folgt != null and is_instance_valid(player.folgt):
|
||||
ziel = player.folgt
|
||||
if ziel == null:
|
||||
Game.notified.emit("Geh näher an den Menschen heran, dem du hilfst.",
|
||||
Color(1, 0.85, 0.5))
|
||||
return
|
||||
var id: String = str(ziel.data["id"])
|
||||
if id != Game.active_mission:
|
||||
Game.notified.emit("Für %s hast du keine Mission angenommen." % ziel.data["name"],
|
||||
Color(1, 0.85, 0.5))
|
||||
return
|
||||
if Game.notiz_sperre > 0.0:
|
||||
Game.notified.emit("Du bist noch beim letzten Fehlgriff (%.0f s)." %
|
||||
Game.notiz_sperre, Color(1, 0.75, 0.55))
|
||||
return
|
||||
Game.notieren(id, int(ziel.slot))
|
||||
|
||||
|
||||
## Als Geist an einen Menschen hängen und ihn durch seinen Tag begleiten.
|
||||
func _verfolgen() -> void:
|
||||
if not auf_erde:
|
||||
return
|
||||
if player.folgt != null:
|
||||
var name: String = player.folgt.data["name"]
|
||||
player.folgt = null
|
||||
Game.notified.emit("Du lässt %s wieder los." % name, Color(0.8, 0.85, 1))
|
||||
return
|
||||
if _fokus_mensch == null:
|
||||
Game.notified.emit("Geh näher an einen Menschen heran, um ihm zu folgen.",
|
||||
Color(1, 0.85, 0.5))
|
||||
return
|
||||
player.folgt = _fokus_mensch
|
||||
Game.notified.emit("Du hängst dich an %s." % _fokus_mensch.data["name"],
|
||||
Color(0.7, 0.9, 1))
|
||||
|
||||
|
||||
func _interagieren() -> void:
|
||||
|
||||
Reference in New Issue
Block a user