changes UI to a global singleton

This commit is contained in:
Luca 2024-09-26 19:59:52 +02:00
parent aa4afc4c4b
commit e3aec75404
16 changed files with 371 additions and 119 deletions

View file

@ -1,23 +1,14 @@
extends Control
var pressed: bool = false
var previous_position: Vector2 = Vector2(0, 0)
var touch_delta: Vector2 = Vector2(0, 0)
var current_delta: Vector2 = Vector2(0, 0)
var dampening_factor: float = 0.8 # Lower values = more dampening (0-1 range)
var previous_position : Vector2 = Vector2.ZERO
var speed : float = 0.04
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
var t = clamp(dampening_factor * delta, 0.0, 1.0) # Clamp to 0-1 range
current_delta = lerp(current_delta, Vector2(0, 0), ease(t, -0.5)) # Use easing with lerp
pass
# Simulate joystick motion using the dampened delta.
simulate_joystick_motion(JOY_AXIS_RIGHT_X, -current_delta.x * 0.1, 0)
# Debug: See the current delta
#print(current_delta)
func _on_gui_input(event: InputEvent) -> void:
func _gui_input(event: InputEvent) -> void:
# Filter touch or drag events only.
if event is not InputEventScreenTouch and event is not InputEventScreenDrag:
return
@ -25,16 +16,18 @@ func _on_gui_input(event: InputEvent) -> void:
if event is InputEventScreenTouch:
if event.is_pressed():
pressed = true
previous_position = event.position # Initialize previous position on touch start
else:
pressed = false
touch_delta = Vector2(0, 0) # Reset delta on touch release
simulate_joystick_motion(JOY_AXIS_RIGHT_X, 0, 0)
if pressed and event is InputEventScreenDrag:
# Calculate the delta between the current and previous touch position.
touch_delta = event.position - previous_position
var delta_position : Vector2 = event.position - previous_position
print(delta_position)
simulate_joystick_motion(JOY_AXIS_RIGHT_X, -delta_position.x * speed, 0)
#simulate_joystick_motion(JOY_AXIS_RIGHT_Y, delta_position.y * speed, 0)
# finally update the previous position
previous_position = event.position
current_delta = touch_delta * 0.5 # Update current delta with the new drag value
func simulate_joystick_motion(axis: int, value: float, device_id: int = 0) -> void:
var joystick_event = InputEventJoypadMotion.new()