tooltips and ui

This commit was merged in pull request #42.
This commit is contained in:
2026-07-02 20:57:06 +00:00
parent c296531214
commit 15f38c096b
91 changed files with 2105 additions and 556 deletions

View File

@@ -49,18 +49,47 @@ func enable_photo_mode() -> void:
current_pan = Vector2.ZERO
if camera:
if previous_camera:
camera.size = previous_camera.size
camera.fov = previous_camera.fov
if rotation_target and "is_zoomed" in rotation_target:
is_zoomed = rotation_target.is_zoomed
if "zoom_tween" in rotation_target and rotation_target.zoom_tween and rotation_target.zoom_tween.is_valid():
rotation_target.zoom_tween.kill()
else:
if abs(camera.size - zoom_size) < abs(camera.size - normal_size):
is_zoomed = true
else:
is_zoomed = false
var target_size = zoom_size if is_zoomed else normal_size
if not is_equal_approx(camera.size, target_size):
zoom_tween = create_tween()
zoom_tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
zoom_tween.tween_property(camera, "size", target_size, zoom_time)
zoom_tween.parallel().tween_property(camera, "fov", target_size, zoom_time)
camera.make_current()
func disable_photo_mode() -> void:
is_active = false
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
if previous_camera:
previous_camera.size = camera.size
previous_camera.fov = camera.fov
if rotation_target and rotation_target.has_method("sync_zoom"):
rotation_target.sync_zoom(camera.size, camera.fov, is_zoomed)
previous_camera.make_current()
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and not event.echo:
if event.keycode == KEY_Z and camera:
is_zoomed = !is_zoomed
if event is InputEventMouseButton and event.pressed:
if event.button_index == MOUSE_BUTTON_WHEEL_UP and camera:
if is_zoomed == false:
return
is_zoomed = false
var target_size = zoom_size if is_zoomed else normal_size
if zoom_tween and zoom_tween.is_valid():
@@ -70,6 +99,34 @@ func _input(event: InputEvent) -> void:
zoom_tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
zoom_tween.tween_property(camera, "size", target_size, zoom_time)
zoom_tween.parallel().tween_property(camera, "fov", target_size, zoom_time)
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN and camera:
if is_zoomed == true:
return
is_zoomed = true
var target_size = zoom_size if is_zoomed else normal_size
if zoom_tween and zoom_tween.is_valid():
zoom_tween.kill()
zoom_tween = create_tween()
zoom_tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
zoom_tween.tween_property(camera, "size", target_size, zoom_time)
zoom_tween.parallel().tween_property(camera, "fov", target_size, zoom_time)
if is_active:
if event.is_action_pressed("exit_photo_mode") and not is_making_photo:
GameState.on_disable_photo_mode_request.emit()
elif event.is_action_pressed("take_photo"):
if not is_making_photo:
is_making_photo = true
GameState.on_photo_taken_prepare.emit()
await RenderingServer.frame_post_draw
captured_image = get_viewport().get_texture().get_image()
GameState.on_photo_taken_started.emit()
if event.is_action_pressed("toggle_photo_mode"):
if get_tree().paused:
@@ -82,18 +139,6 @@ func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion and is_active:
total_yaw -= event.relative.x * rotation_speed
if event.is_action_pressed("take_photo"):
if !is_active or is_making_photo:
return
is_making_photo = true
GameState.on_photo_taken_prepare.emit()
await RenderingServer.frame_post_draw
captured_image = get_viewport().get_texture().get_image()
GameState.on_photo_taken_started.emit()
func _process(delta: float) -> void:
if not is_active: