Some updated math and a config loader
parent
b196f42f5f
commit
46df5f3696
|
|
@ -0,0 +1,45 @@
|
|||
extends Node
|
||||
|
||||
const PATH := "user://config.cfg"
|
||||
const SECTION := "settings"
|
||||
|
||||
const JOYSTICK_LABELS := "joystick_labels"
|
||||
const TRACK_JOYSTICK_MOVEMENT := "track_joystick_movement"
|
||||
const TRACK_JOYSTICK_DRIFT := "track_joystick_drift"
|
||||
|
||||
var _config: ConfigFile
|
||||
|
||||
# Joystick
|
||||
var joystick_labels: bool = true:
|
||||
set(val):
|
||||
joystick_labels = val
|
||||
save_config()
|
||||
var track_joystick_movement: bool = true:
|
||||
set(val):
|
||||
track_joystick_movement = val
|
||||
save_config()
|
||||
var track_joystick_drift: bool = true:
|
||||
set(val):
|
||||
track_joystick_drift = val
|
||||
save_config()
|
||||
|
||||
func _ready() -> void:
|
||||
self._config = ConfigFile.new()
|
||||
var err := self._config.load(PATH)
|
||||
if err != OK:
|
||||
self.save_config()
|
||||
print_debug("Auto generated config file")
|
||||
|
||||
self.joystick_labels = self._config.get_value(SECTION, JOYSTICK_LABELS, true)
|
||||
self.track_joystick_movement = self._config.get_value(SECTION, TRACK_JOYSTICK_MOVEMENT, true)
|
||||
self.track_joystick_drift = self._config.get_value(SECTION, TRACK_JOYSTICK_DRIFT, true)
|
||||
|
||||
func save_config() -> void:
|
||||
self._config.set_value(SECTION, JOYSTICK_LABELS, self.joystick_labels)
|
||||
self._config.set_value(SECTION, TRACK_JOYSTICK_MOVEMENT, self.track_joystick_movement)
|
||||
self._config.set_value(SECTION, TRACK_JOYSTICK_DRIFT, self.track_joystick_drift)
|
||||
|
||||
var err := self._config.save(PATH)
|
||||
if err != OK:
|
||||
printerr("Failed to save config")
|
||||
return
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://doaovsp1ac3o0
|
||||
|
|
@ -1,10 +1,5 @@
|
|||
extends Control
|
||||
|
||||
const NO_DEVICE := "No Active Device"
|
||||
|
||||
const DEFAULT_COLOR := Color(0x2a2a2aff)
|
||||
const ACTIVE_COLOR := Color(0x4a8e53ff)
|
||||
|
||||
@onready var device_name: RichTextLabel = $Device
|
||||
|
||||
var _has_joy := false
|
||||
|
|
@ -27,7 +22,7 @@ func _process(_delta: float) -> void:
|
|||
|
||||
if Input.get_connected_joypads().size() <= 0:
|
||||
self._has_joy = false
|
||||
self.device_name.text = NO_DEVICE
|
||||
self.device_name.text = WyHelper.NO_DEVICE
|
||||
return
|
||||
|
||||
for btn in self._buttons:
|
||||
|
|
@ -35,10 +30,10 @@ func _process(_delta: float) -> void:
|
|||
continue
|
||||
|
||||
var cbtn := btn as ControllerButton
|
||||
cbtn.color = DEFAULT_COLOR
|
||||
cbtn.color = WyHelper.DEFAULT_COLOR
|
||||
|
||||
if cbtn.input_code && Input.is_action_pressed(cbtn.input_code):
|
||||
cbtn.color = ACTIVE_COLOR
|
||||
cbtn.color = WyHelper.ACTIVE_COLOR
|
||||
|
||||
for btn in self._triggers:
|
||||
if not btn is ControllerTrigger:
|
||||
|
|
|
|||
|
|
@ -1,11 +1,5 @@
|
|||
extends Panel
|
||||
|
||||
const DRIFT_DEADZONE := 0.03;
|
||||
const REST_DEADZONE := 0.05;
|
||||
const DEFAULT_COLOR := Color(0x2a2a2aff)
|
||||
const ACTIVE_COLOR := Color(0x4a8e53ff)
|
||||
const ERROR_COLOR := Color(0xbe2037ff)
|
||||
|
||||
@onready var pos: Panel = $Pos
|
||||
@onready var label_node: RichTextLabel = $Label
|
||||
@onready var box_theme: StyleBoxFlat = preload("uid://bgb7rlf1chjnd") as StyleBoxFlat
|
||||
|
|
@ -14,11 +8,13 @@ const ERROR_COLOR := Color(0xbe2037ff)
|
|||
@export var axis_y: JoyAxis
|
||||
|
||||
var _dot_style: StyleBoxFlat
|
||||
var _last_x := 0.0
|
||||
var _last_y := 0.0
|
||||
|
||||
func _ready() -> void:
|
||||
self._dot_style = box_theme.duplicate()
|
||||
self.pos.add_theme_stylebox_override("panel", self._dot_style)
|
||||
self._dot_style.bg_color = DEFAULT_COLOR
|
||||
self._dot_style.bg_color = WyHelper.DEFAULT_COLOR
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
var x := Input.get_joy_axis(0, self.axis_x)
|
||||
|
|
@ -27,16 +23,23 @@ func _process(_delta: float) -> void:
|
|||
self.pos.position.x = (x * 128.0) + 104.0
|
||||
self.pos.position.y = (y * 128.0) + 104.0
|
||||
|
||||
var is_moving := x > REST_DEADZONE || y > REST_DEADZONE \
|
||||
|| x < -REST_DEADZONE || y < -REST_DEADZONE
|
||||
var is_drifting := x >= DRIFT_DEADZONE || y >= DRIFT_DEADZONE \
|
||||
|| x <= -DRIFT_DEADZONE || y <= -DRIFT_DEADZONE
|
||||
var speed_x: float = abs(x - self._last_x)
|
||||
var speed_y: float = abs(y - self._last_y)
|
||||
|
||||
if is_moving:
|
||||
self._dot_style.bg_color = ACTIVE_COLOR
|
||||
elif is_drifting:
|
||||
self._dot_style.bg_color = ERROR_COLOR
|
||||
var is_moving: bool = speed_x > WyHelper.DRIFT_DEADZONE || speed_y > WyHelper.DRIFT_DEADZONE
|
||||
var is_drifting: bool = !is_moving && (speed_x > WyHelper.REST_DEADZONE || speed_y > WyHelper.REST_DEADZONE)
|
||||
var is_stuck: bool = (abs(x) > WyHelper.DRIFT_DEADZONE && abs(x) <= WyHelper.STUCK_DEADZONE) \
|
||||
&& (abs(y) > WyHelper.DRIFT_DEADZONE && abs(y) <= WyHelper.STUCK_DEADZONE)
|
||||
|
||||
if Config.track_joystick_movement && is_moving:
|
||||
self._dot_style.bg_color = WyHelper.ACTIVE_COLOR
|
||||
elif Config.track_joystick_drift && (is_drifting || is_stuck):
|
||||
self._dot_style.bg_color = WyHelper.ERROR_COLOR
|
||||
else:
|
||||
self._dot_style.bg_color = DEFAULT_COLOR
|
||||
self._dot_style.bg_color = WyHelper.DEFAULT_COLOR
|
||||
|
||||
self.label_node.text = "x:%0.2f y:%0.2f" % [x, y]
|
||||
if Config.joystick_labels:
|
||||
self.label_node.text = "x:%0.2f y:%0.2f" % [x, y]
|
||||
|
||||
self._last_x = x
|
||||
self._last_y = y
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
extends Node
|
||||
|
||||
const NO_DEVICE := "No Active Device"
|
||||
|
||||
const DRIFT_DEADZONE := 0.01;
|
||||
const REST_DEADZONE := 0.005;
|
||||
const STUCK_DEADZONE := 0.05;
|
||||
|
||||
const DEFAULT_COLOR := Color(0x2a2a2aff)
|
||||
const ACTIVE_COLOR := Color(0x4a8e53ff)
|
||||
const ERROR_COLOR := Color(0xbe2037ff)
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://dn6sj0up74oxj
|
||||
|
|
@ -20,6 +20,11 @@ boot_splash/fullsize=false
|
|||
boot_splash/use_filter=false
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
WyHelper="*res://helper.gd"
|
||||
Config="*res://config.gd"
|
||||
|
||||
[debug]
|
||||
|
||||
gdscript/warnings/untyped_declaration=2
|
||||
|
|
|
|||
Loading…
Reference in New Issue