add controller button icons setting
This commit is contained in:
parent
b2c69b31b8
commit
6ef29a8f0b
@ -22,10 +22,10 @@ config/icon="res://icon.svg"
|
|||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
Referencer="*res://scripts/globals/referencer.gd"
|
Settings="*res://scripts/globals/settings.gd"
|
||||||
Inputer="*res://scripts/globals/inputer.gd"
|
Inputer="*res://scripts/globals/inputer.gd"
|
||||||
Debugger="*res://scenes/debugger.tscn"
|
Debugger="*res://scenes/debugger.tscn"
|
||||||
Settings="*res://scripts/globals/settings.gd"
|
Referencer="*res://scripts/globals/referencer.gd"
|
||||||
Cursor="*res://scenes/ui/cursor.tscn"
|
Cursor="*res://scenes/ui/cursor.tscn"
|
||||||
Music="*res://scenes/music.tscn"
|
Music="*res://scenes/music.tscn"
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ extends Node
|
|||||||
signal mode_changed(mode: Mode)
|
signal mode_changed(mode: Mode)
|
||||||
|
|
||||||
enum Mode { KB_MOUSE, CONTROLLER }
|
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 LEFT_TRIGGER_SPRITE_INDEX: int = 20
|
||||||
const RIGHT_TRIGGER_SPRITE_INDEX: int = 21
|
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 mode: Mode = Mode.KB_MOUSE
|
||||||
|
|
||||||
@export var _controller: ControllerType = ControllerType.XBOX:
|
@export var _controller: ControllerType = ControllerType.UNSET:
|
||||||
set(value):
|
set(value):
|
||||||
_set_current_prompts(value)
|
_set_current_prompts(value)
|
||||||
_controller = value
|
_controller = value
|
||||||
@ -30,11 +30,19 @@ var _current_prompts: CompressedTexture2D = _prompts_xbox
|
|||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
Input.joy_connection_changed.connect(_on_input_joy_connection_changed)
|
||||||
|
|
||||||
Debugger.add_event("mode_changed")
|
Debugger.add_event("mode_changed")
|
||||||
mode_changed.connect(
|
mode_changed.connect(
|
||||||
func(new_mode: Mode) -> void:
|
func(new_mode: Mode) -> void:
|
||||||
Debugger.event_emitted("mode_changed", [Mode.keys()[new_mode]])
|
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()
|
_get_controller_type()
|
||||||
|
|
||||||
|
|
||||||
@ -55,20 +63,6 @@ func _input(event: InputEvent) -> void:
|
|||||||
Debugger.text("input", _get_event_prompt_current_mode(event))
|
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(
|
func get_vector_from_raw_strengths(
|
||||||
negative_x: float,
|
negative_x: float,
|
||||||
positive_x: float,
|
positive_x: float,
|
||||||
@ -95,6 +89,20 @@ func get_event_mode(event: InputEvent) -> Mode:
|
|||||||
return Mode.KB_MOUSE
|
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:
|
func _get_event_prompt_current_mode(event: InputEvent) -> String:
|
||||||
var event_mode := get_event_mode(event)
|
var event_mode := get_event_mode(event)
|
||||||
if mode == Mode.CONTROLLER and event_mode == Mode.CONTROLLER:
|
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:
|
func _get_controller_type(id: int = 0) -> void:
|
||||||
var controller_name := Input.get_joy_name(0).to_lower()
|
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 (
|
if (
|
||||||
controller_name.begins_with("ps")
|
controller_name.begins_with("ps")
|
||||||
or controller_name.contains("sony")
|
or controller_name.contains("sony")
|
||||||
@ -189,6 +204,8 @@ func _get_controller_type() -> void:
|
|||||||
else:
|
else:
|
||||||
_controller = ControllerType.XBOX
|
_controller = ControllerType.XBOX
|
||||||
|
|
||||||
|
Settings.controller_button_icons = _controller
|
||||||
|
|
||||||
|
|
||||||
func _set_current_prompts(type: ControllerType) -> void:
|
func _set_current_prompts(type: ControllerType) -> void:
|
||||||
match type:
|
match type:
|
||||||
@ -202,3 +219,8 @@ func _set_current_prompts(type: ControllerType) -> void:
|
|||||||
_current_prompts = _prompts_steam
|
_current_prompts = _prompts_steam
|
||||||
ControllerType.KNOCKOFF:
|
ControllerType.KNOCKOFF:
|
||||||
_current_prompts = _prompts_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("KB & Mouse")
|
||||||
|
|
||||||
@export_subgroup("Controller")
|
@export_subgroup("Controller")
|
||||||
|
@export var controller_button_icons: Inputer.ControllerType = Inputer.ControllerType.UNSET
|
||||||
@export var movement_stick_deadzone: float = 0.5
|
@export var movement_stick_deadzone: float = 0.5
|
||||||
@export var aiming_stick_deadzone: float = 0.5
|
@export var aiming_stick_deadzone: float = 0.5
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user