weapon select tweaks added joy support
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user