add controller button icons setting
This commit is contained in:
parent
b2c69b31b8
commit
6ef29a8f0b
@ -22,10 +22,10 @@ config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
Referencer="*res://scripts/globals/referencer.gd"
|
||||
Settings="*res://scripts/globals/settings.gd"
|
||||
Inputer="*res://scripts/globals/inputer.gd"
|
||||
Debugger="*res://scenes/debugger.tscn"
|
||||
Settings="*res://scripts/globals/settings.gd"
|
||||
Referencer="*res://scripts/globals/referencer.gd"
|
||||
Cursor="*res://scenes/ui/cursor.tscn"
|
||||
Music="*res://scenes/music.tscn"
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ extends Node
|
||||
signal mode_changed(mode: Mode)
|
||||
|
||||
enum Mode { KB_MOUSE, CONTROLLER }
|
||||
enum ControllerType { XBOX, SONY, NINTENDO, STEAM, KNOCKOFF }
|
||||
enum ControllerType { UNSET, XBOX, SONY, NINTENDO, STEAM, KNOCKOFF }
|
||||
|
||||
const LEFT_TRIGGER_SPRITE_INDEX: int = 20
|
||||
const RIGHT_TRIGGER_SPRITE_INDEX: int = 21
|
||||
@ -12,7 +12,7 @@ const RIGHT_STICK_SPRITE_INDEX: int = 24
|
||||
|
||||
@export var mode: Mode = Mode.KB_MOUSE
|
||||
|
||||
@export var _controller: ControllerType = ControllerType.XBOX:
|
||||
@export var _controller: ControllerType = ControllerType.UNSET:
|
||||
set(value):
|
||||
_set_current_prompts(value)
|
||||
_controller = value
|
||||
@ -30,11 +30,19 @@ var _current_prompts: CompressedTexture2D = _prompts_xbox
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Input.joy_connection_changed.connect(_on_input_joy_connection_changed)
|
||||
|
||||
Debugger.add_event("mode_changed")
|
||||
mode_changed.connect(
|
||||
func(new_mode: Mode) -> void:
|
||||
Debugger.event_emitted("mode_changed", [Mode.keys()[new_mode]])
|
||||
)
|
||||
Debugger.add_event("joy_connection_changed")
|
||||
Input.joy_connection_changed.connect(
|
||||
func(device: int, connected: bool) -> void:
|
||||
Debugger.event_emitted("joy_connection_changed", [device, connected])
|
||||
)
|
||||
|
||||
_get_controller_type()
|
||||
|
||||
|
||||
@ -55,20 +63,6 @@ func _input(event: InputEvent) -> void:
|
||||
Debugger.text("input", _get_event_prompt_current_mode(event))
|
||||
|
||||
|
||||
func get_action_prompt(action: StringName) -> String:
|
||||
var events := InputMap.action_get_events(action)
|
||||
var bbcode: PackedStringArray = []
|
||||
for event in events:
|
||||
var event_bbcode := _get_event_prompt_current_mode(event)
|
||||
if event_bbcode:
|
||||
bbcode.append(event_bbcode)
|
||||
|
||||
if bbcode.size() != 0:
|
||||
return " / ".join(bbcode)
|
||||
|
||||
return _get_event_prompt(events[0]) if events.size() != 0 else "???"
|
||||
|
||||
|
||||
func get_vector_from_raw_strengths(
|
||||
negative_x: float,
|
||||
positive_x: float,
|
||||
@ -95,6 +89,20 @@ func get_event_mode(event: InputEvent) -> Mode:
|
||||
return Mode.KB_MOUSE
|
||||
|
||||
|
||||
func get_action_prompt(action: StringName) -> String:
|
||||
var events := InputMap.action_get_events(action)
|
||||
var bbcode: PackedStringArray = []
|
||||
for event in events:
|
||||
var event_bbcode := _get_event_prompt_current_mode(event)
|
||||
if event_bbcode:
|
||||
bbcode.append(event_bbcode)
|
||||
|
||||
if bbcode.size() != 0:
|
||||
return " / ".join(bbcode)
|
||||
|
||||
return _get_event_prompt(events[0]) if events.size() != 0 else "???"
|
||||
|
||||
|
||||
func _get_event_prompt_current_mode(event: InputEvent) -> String:
|
||||
var event_mode := get_event_mode(event)
|
||||
if mode == Mode.CONTROLLER and event_mode == Mode.CONTROLLER:
|
||||
@ -174,8 +182,15 @@ func _get_prompt_sprite_region(index: int) -> Rect2i:
|
||||
)
|
||||
|
||||
|
||||
func _get_controller_type() -> void:
|
||||
var controller_name := Input.get_joy_name(0).to_lower()
|
||||
func _get_controller_type(id: int = 0) -> void:
|
||||
if Settings.controller_button_icons != ControllerType.UNSET:
|
||||
_controller = Settings.controller_button_icons
|
||||
return
|
||||
|
||||
var controller_name := Input.get_joy_name(id).to_lower()
|
||||
if not controller_name:
|
||||
return
|
||||
|
||||
if (
|
||||
controller_name.begins_with("ps")
|
||||
or controller_name.contains("sony")
|
||||
@ -189,6 +204,8 @@ func _get_controller_type() -> void:
|
||||
else:
|
||||
_controller = ControllerType.XBOX
|
||||
|
||||
Settings.controller_button_icons = _controller
|
||||
|
||||
|
||||
func _set_current_prompts(type: ControllerType) -> void:
|
||||
match type:
|
||||
@ -202,3 +219,8 @@ func _set_current_prompts(type: ControllerType) -> void:
|
||||
_current_prompts = _prompts_steam
|
||||
ControllerType.KNOCKOFF:
|
||||
_current_prompts = _prompts_knockoff
|
||||
|
||||
|
||||
func _on_input_joy_connection_changed(device: int, connected: bool) -> void:
|
||||
if connected:
|
||||
_get_controller_type(device)
|
||||
|
||||
@ -110,6 +110,7 @@ const CONFIG_PATH := "user://settings.cfg"
|
||||
@export_subgroup("KB & Mouse")
|
||||
|
||||
@export_subgroup("Controller")
|
||||
@export var controller_button_icons: Inputer.ControllerType = Inputer.ControllerType.UNSET
|
||||
@export var movement_stick_deadzone: float = 0.5
|
||||
@export var aiming_stick_deadzone: float = 0.5
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user