update
This commit is contained in:
@@ -17,10 +17,8 @@ func _ready() -> void:
|
||||
ui = UI.new()
|
||||
add_child(ui)
|
||||
ui.panel_opened.connect(func() -> void:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
player.look_enabled = false)
|
||||
ui.panel_closed.connect(func() -> void:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
player.look_enabled = true)
|
||||
|
||||
player = Player.new()
|
||||
@@ -31,7 +29,7 @@ func _ready() -> void:
|
||||
Color(0.8, 0.95, 1)))
|
||||
|
||||
_traumwelt()
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
|
||||
|
||||
func _traumwelt() -> void:
|
||||
@@ -39,8 +37,7 @@ func _traumwelt() -> void:
|
||||
_setze_welt(DreamWorld.new())
|
||||
player.set_mode(Player.Mode.TRAUM)
|
||||
player.global_position = (welt as DreamWorld).spawn
|
||||
player.yaw = 0.0
|
||||
player.pitch = -0.18
|
||||
player.yaw = Player.CAM_YAW
|
||||
|
||||
|
||||
func _erde() -> void:
|
||||
@@ -48,8 +45,7 @@ func _erde() -> void:
|
||||
_setze_welt(EarthWorld.new())
|
||||
player.set_mode(Player.Mode.GEIST)
|
||||
player.global_position = (welt as EarthWorld).spawn
|
||||
player.yaw = 0.0
|
||||
player.pitch = -0.42
|
||||
player.yaw = Player.CAM_YAW
|
||||
|
||||
|
||||
func _setze_welt(neu: Node3D) -> void:
|
||||
@@ -59,6 +55,7 @@ func _setze_welt(neu: Node3D) -> void:
|
||||
welt = neu
|
||||
add_child(welt)
|
||||
move_child(welt, 0)
|
||||
welt.set("spieler", player) # für den Etagenschnitt
|
||||
Game.teleport_lock = 1.0
|
||||
_fokus = null
|
||||
_fokus_mensch = null
|
||||
@@ -92,7 +89,10 @@ func _fokus_suchen() -> void:
|
||||
if auf_erde:
|
||||
var bestm := REICHWEITE_MENSCH
|
||||
for m in (welt as EarthWorld).humans:
|
||||
var d: float = p.distance_to((m as Node3D).global_position + Vector3(0, 1.0, 0))
|
||||
var mp: Vector3 = (m as Node3D).global_position + Vector3(0, 1.0, 0)
|
||||
if absf(mp.y - p.y) > 2.0:
|
||||
continue # andere Etage: durch die Decke sieht man nichts
|
||||
var d: float = p.distance_to(mp)
|
||||
if d < bestm:
|
||||
bestm = d
|
||||
_fokus_mensch = m
|
||||
@@ -143,17 +143,11 @@ func _notiz_hinweis(mensch: Bewohner) -> String:
|
||||
|
||||
|
||||
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 \
|
||||
Input.mouse_mode == Input.MOUSE_MODE_CAPTURED else Input.MOUSE_MODE_CAPTURED
|
||||
player.look_enabled = Input.mouse_mode == Input.MOUSE_MODE_CAPTURED
|
||||
get_viewport().set_input_as_handled()
|
||||
return
|
||||
if ui.offen:
|
||||
return
|
||||
if event is InputEventMouseButton and event.pressed and Input.mouse_mode == Input.MOUSE_MODE_VISIBLE:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
player.look_enabled = true
|
||||
if event is InputEventMouseButton and event.pressed \
|
||||
and event.button_index == MOUSE_BUTTON_LEFT:
|
||||
_klick(event.position)
|
||||
return
|
||||
for stufe in [1, 2, 3]:
|
||||
if event.is_action_pressed("tempo_%d" % stufe):
|
||||
@@ -213,6 +207,30 @@ func _notieren() -> void:
|
||||
Game.notieren(id, int(ziel.slot))
|
||||
|
||||
|
||||
## Klick auf einen Menschen: an ihn hängen, noch ein Klick löst wieder.
|
||||
func _klick(pos: Vector2) -> void:
|
||||
if not auf_erde:
|
||||
return
|
||||
var bester: Bewohner = null
|
||||
var beste := 48.0
|
||||
for m in (welt as EarthWorld).humans:
|
||||
var w: Vector3 = (m as Node3D).global_position + Vector3(0, 0.8, 0)
|
||||
if player.cam.is_position_behind(w):
|
||||
continue
|
||||
var d := player.cam.unproject_position(w).distance_to(pos)
|
||||
if d < beste:
|
||||
beste = d
|
||||
bester = m
|
||||
if bester == null:
|
||||
return
|
||||
if player.folgt == bester:
|
||||
player.folgt = null
|
||||
Game.notified.emit("Du lässt %s wieder los." % bester.data["name"], Color(0.8, 0.85, 1))
|
||||
else:
|
||||
player.folgt = bester
|
||||
Game.notified.emit("Du hängst dich an %s." % bester.data["name"], Color(0.7, 0.9, 1))
|
||||
|
||||
|
||||
## Als Geist an einen Menschen hängen und ihn durch seinen Tag begleiten.
|
||||
func _verfolgen() -> void:
|
||||
if not auf_erde:
|
||||
|
||||
Reference in New Issue
Block a user