weapon select tweaks added joy support

This commit is contained in:
Derek
2024-12-14 17:23:54 -06:00
parent ec75bffb70
commit a06ae6f74d
9 changed files with 6582 additions and 25 deletions

View File

@@ -3,7 +3,10 @@ extends Control
@export var line_width : int = 4
@onready var player: CharacterBody3D = $"../../../.."
@onready var level_control = get_tree().current_scene
var selecting
var options = []
const outer_radius : int = 500
@@ -17,10 +20,13 @@ const IMAGE_SIZE = Vector2(512,512)
var selection
func open():
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
selecting = true
show()
update_weapon_list()
func close():
selecting = false
hide()
return selection
@@ -29,20 +35,33 @@ func _ready() -> void:
update_weapon_list()
SignalBus.weapon_list_changed.connect(update_weapon_list)
func _input(event: InputEvent) -> void:
if selecting:
const MOUSE_DEADZONE = .01
if event is InputEventMouseMotion:
if abs(event.relative.x) > MOUSE_DEADZONE or abs(event.relative.x) > MOUSE_DEADZONE:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
var mouse_pos = get_local_mouse_position()
var mouse_radius = mouse_pos.length()
if mouse_radius < inner_radius:
selection = null
else:
var mouse_rads = fposmod(mouse_pos.angle() * -1, TAU)
selection = ceil((mouse_rads / TAU) * (len(options)+1))
queue_redraw()
if selecting:
var mouse_pos = get_local_mouse_position()
var mouse_radius = mouse_pos.length()
if mouse_radius < inner_radius:
selection = null
else:
var mouse_rads = fposmod(mouse_pos.angle() * -1, TAU)
selection = ceil((mouse_rads / TAU) * (len(options)))
var joy_input = joypad_select()
if abs(joy_input) > Vector2.ZERO:
var joy_rads = fposmod(joypad_select().angle() * -1, TAU)
selection = ceil((joy_rads / TAU) * (len(options)))
queue_redraw()
func _draw():
var offset = IMAGE_SIZE/ -2
@@ -102,3 +121,15 @@ func _draw():
func update_weapon_list():
options = level_control.held_guns
func joypad_select():
var joy_out = Vector2.ZERO
# Joypad right stick look control
var xAxis = Input.get_joy_axis(0,JOY_AXIS_RIGHT_X)
var yAxis = Input.get_joy_axis(0,JOY_AXIS_RIGHT_Y)
if abs(xAxis) > player.R_JOYSTICK_DEADZONE:
joy_out.x = xAxis
if abs(yAxis) > player.R_JOYSTICK_DEADZONE:
joy_out.y = yAxis
return joy_out