update game menu

This commit is contained in:
2026-06-29 23:34:55 +02:00
parent fc887c2519
commit c6893b7ee8
45 changed files with 1921 additions and 1351 deletions

View File

@@ -495,7 +495,7 @@ func _initial_config():
if not input_blocker:
input_blocker = Control.new()
input_blocker.name = "InputBlocker"
input_blocker.mouse_filter = Control.MOUSE_FILTER_STOP
input_blocker.mouse_filter = Control.MOUSE_FILTER_IGNORE
visuals_container.add_child(input_blocker)
visuals_container.move_child(input_blocker, 0)
@@ -751,10 +751,15 @@ func _prepare_book_content():
# ==============================================================================
# INPUT
# ==============================================================================
func _inject_event_to_viewport(viewport: SubViewport, polygon: Polygon2D, event: InputEvent) -> void:
func _inject_event_to_viewport(viewport: SubViewport, is_left: bool, event: InputEvent) -> bool:
var mouse_pos = get_global_mouse_position()
var new_mouse_pos = polygon.to_local(mouse_pos)
new_mouse_pos.y += target_page_size.y / 2
var poly = static_left if is_left else static_right
var new_mouse_pos = poly.to_local(mouse_pos)
new_mouse_pos.y += target_page_size.y / 2.0
var rect = Rect2(0, 0, target_page_size.x, target_page_size.y)
if not rect.has_point(new_mouse_pos):
return false
var ev = event.duplicate_deep(Resource.DEEP_DUPLICATE_ALL)
ev.position = new_mouse_pos
@@ -773,7 +778,8 @@ func _inject_event_to_viewport(viewport: SubViewport, polygon: Polygon2D, event:
DisplayServer.cursor_set_shape.call_deferred(cursor_shape)
else:
DisplayServer.cursor_set_shape.call_deferred(DisplayServer.CursorShape.CURSOR_ARROW)
return true
## Clears the viewport input state. Call this when interaction stops.
func _reset_viewport_input_state() -> void:
@@ -785,31 +791,31 @@ func _reset_viewport_input_state() -> void:
func _input(event):
pass
#if not _active_interactive_is_left and not _active_interactive_is_right:
#if not _active_viewports_state.is_empty():
#_reset_viewport_input_state()
#return
#
#if event is InputEventMouse or event is InputEventMouseMotion:
#if _active_interactive_is_left:
#_slot_1.physics_object_picking = true
#_inject_event_to_viewport(_slot_1, static_left, event)
#elif _active_viewports_state.has(_slot_1):
#_slot_1.physics_object_picking = false
#_slot_1.notify_mouse_exited()
#_active_viewports_state.erase(_slot_1)
#
#if _active_interactive_is_right:
#_slot_2.physics_object_picking = true
#_inject_event_to_viewport(_slot_2, static_right, event)
#elif _active_viewports_state.has(_slot_2):
#_slot_2.physics_object_picking = false
#_slot_2.notify_mouse_exited()
#_active_viewports_state.erase(_slot_2)
#
#elif event is InputEventKey:
#if _active_interactive_is_left: _slot_1.push_input(event.duplicate(true))
if Engine.is_editor_hint(): return
if not visible or is_animating: return
var handled = false
if event is InputEventMouse or event is InputEventMouseMotion:
if is_instance_valid(_slot_1):
_slot_1.physics_object_picking = true
if _inject_event_to_viewport(_slot_1, true, event):
if event is InputEventMouseButton and _slot_1.is_input_handled(): handled = true
if is_instance_valid(_slot_2):
_slot_2.physics_object_picking = true
if _inject_event_to_viewport(_slot_2, false, event):
if event is InputEventMouseButton and _slot_2.is_input_handled(): handled = true
elif event is InputEventKey:
if is_instance_valid(_slot_1):
_slot_1.push_input(event.duplicate(true))
if _slot_1.is_input_handled(): handled = true
if is_instance_valid(_slot_2):
_slot_2.push_input(event.duplicate(true))
if _slot_2.is_input_handled(): handled = true
if handled:
get_viewport().set_input_as_handled()
func _unhandled_input(event):
@@ -1202,8 +1208,8 @@ func _get_screen_center() -> Vector2:
var cam = get_viewport().get_camera_2d()
if cam: return cam.get_screen_center_position()
# If no camera or not using internal, center to viewport rect
return get_viewport_rect().size / 2.0
# Se non usiamo la camera, torniamo la nostra global_position per non distaccarci dalla UI
return global_position
func _get_compensation_offset(is_closed: bool, is_back: bool) -> Vector2:
var target_local_x = 0.0

View File

@@ -216,7 +216,7 @@ func _load_state_from_cache():
timing_peak_lift = _custom_cache.get("t_lift", 0.15)
timing_peak_land = _custom_cache.get("t_land", 0.85)
anim_duration = _custom_cache.get("dur", 1.0)
enable_shadow = _custom_cache.get("shadow", true)
enable_shadow = false # Force disable shadow
# ==============================================================================