gd: added input addon
This commit is contained in:
@ -0,0 +1,115 @@
|
||||
extends GUIDETextProvider
|
||||
|
||||
func _init():
|
||||
priority = -1
|
||||
|
||||
func _controller_names() -> Array[String]:
|
||||
return []
|
||||
|
||||
func _a_button_name() -> String:
|
||||
return "A"
|
||||
|
||||
func _b_button_name() -> String:
|
||||
return "B"
|
||||
|
||||
func _x_button_name() -> String:
|
||||
return "X"
|
||||
|
||||
func _y_button_name() -> String:
|
||||
return "Y"
|
||||
|
||||
func _left_bumper_name() -> String:
|
||||
return "LB"
|
||||
|
||||
func _right_bumper_name() -> String:
|
||||
return "RB"
|
||||
|
||||
func _left_trigger_name() -> String:
|
||||
return "LT"
|
||||
|
||||
func _right_trigger_name() -> String:
|
||||
return "RT"
|
||||
|
||||
func _back_button_name() -> String:
|
||||
return "Back"
|
||||
|
||||
func _misc_1_button_name() -> String:
|
||||
return "Misc 1"
|
||||
|
||||
func _start_button_name() -> String:
|
||||
return "Start"
|
||||
|
||||
|
||||
func supports(input:GUIDEInput) -> bool:
|
||||
var controller_name = GUIDEInputFormatter._joy_name_for_input(input)
|
||||
if controller_name == "":
|
||||
return false
|
||||
|
||||
var haystack = controller_name.to_lower()
|
||||
for needle in _controller_names():
|
||||
if haystack.contains(needle.to_lower()):
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func _format(input:String) -> String:
|
||||
return "[%s]" % [input]
|
||||
|
||||
|
||||
func get_text(input:GUIDEInput) -> String:
|
||||
if input is GUIDEInputJoyAxis1D:
|
||||
match input.axis:
|
||||
JOY_AXIS_LEFT_X:
|
||||
return _format(tr("Left Stick Horizontal"))
|
||||
JOY_AXIS_LEFT_Y:
|
||||
return _format(tr("Left Stick Vertical"))
|
||||
JOY_AXIS_RIGHT_X:
|
||||
return _format(tr("Right Stick Horizontal"))
|
||||
JOY_AXIS_RIGHT_Y:
|
||||
return _format(tr("Right Stick Vertical"))
|
||||
JOY_AXIS_TRIGGER_LEFT:
|
||||
return _format(tr(_left_trigger_name()))
|
||||
JOY_AXIS_TRIGGER_RIGHT:
|
||||
return _format(tr(_right_trigger_name()))
|
||||
|
||||
if input is GUIDEInputJoyAxis2D:
|
||||
match input.x:
|
||||
JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y:
|
||||
return _format(tr("Left Stick"))
|
||||
JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y:
|
||||
return _format(tr("Right Stick"))
|
||||
|
||||
if input is GUIDEInputJoyButton:
|
||||
match input.button:
|
||||
JOY_BUTTON_A:
|
||||
return _format(tr(_a_button_name()))
|
||||
JOY_BUTTON_B:
|
||||
return _format(tr(_b_button_name()))
|
||||
JOY_BUTTON_X:
|
||||
return _format(tr(_x_button_name()))
|
||||
JOY_BUTTON_Y:
|
||||
return _format(tr(_y_button_name()))
|
||||
JOY_BUTTON_DPAD_LEFT:
|
||||
return _format(tr("DPAD Left"))
|
||||
JOY_BUTTON_DPAD_RIGHT:
|
||||
return _format(tr("DPAD Right"))
|
||||
JOY_BUTTON_DPAD_UP:
|
||||
return _format(tr("DPAD Up"))
|
||||
JOY_BUTTON_DPAD_DOWN:
|
||||
return _format(tr("DPAD Down"))
|
||||
JOY_BUTTON_LEFT_SHOULDER:
|
||||
return _format(tr(_left_bumper_name()))
|
||||
JOY_BUTTON_RIGHT_SHOULDER:
|
||||
return _format(tr(_right_bumper_name()))
|
||||
JOY_BUTTON_LEFT_STICK:
|
||||
return _format(tr("Left Stick"))
|
||||
JOY_BUTTON_RIGHT_STICK:
|
||||
return _format(tr("Right Stick"))
|
||||
JOY_BUTTON_BACK:
|
||||
return _format(tr(_back_button_name()))
|
||||
JOY_BUTTON_MISC1:
|
||||
return _format(tr(_misc_1_button_name()))
|
||||
JOY_BUTTON_START:
|
||||
return _format(tr(_start_button_name()))
|
||||
|
||||
return _format("??")
|
@ -0,0 +1 @@
|
||||
uid://drnn2tb5xp5li
|
@ -0,0 +1,37 @@
|
||||
extends "res://addons/guide/ui/text_providers/controllers/controller_text_provider.gd"
|
||||
|
||||
func _controller_names() -> Array[String]:
|
||||
return ["DualSense", "DualShock", "Playstation", "PS3", "PS4", "PS5"]
|
||||
|
||||
func _a_button_name() -> String:
|
||||
return "Cross"
|
||||
|
||||
func _b_button_name() -> String:
|
||||
return "Circle"
|
||||
|
||||
func _x_button_name() -> String:
|
||||
return "Square"
|
||||
|
||||
func _y_button_name() -> String:
|
||||
return "Triangle"
|
||||
|
||||
func _left_bumper_name() -> String:
|
||||
return "L1"
|
||||
|
||||
func _right_bumper_name() -> String:
|
||||
return "R1"
|
||||
|
||||
func _left_trigger_name() -> String:
|
||||
return "L2"
|
||||
|
||||
func _right_trigger_name() -> String:
|
||||
return "R2"
|
||||
|
||||
func _back_button_name() -> String:
|
||||
return "Share"
|
||||
|
||||
func _misc_1_button_name() -> String:
|
||||
return "Microphone"
|
||||
|
||||
func _start_button_name() -> String:
|
||||
return "Options"
|
@ -0,0 +1 @@
|
||||
uid://cbsxonq3kwsx3
|
@ -0,0 +1,37 @@
|
||||
extends "res://addons/guide/ui/text_providers/controllers/controller_text_provider.gd"
|
||||
|
||||
func _controller_names() -> Array[String]:
|
||||
return ["Nintendo Switch"]
|
||||
|
||||
func _a_button_name() -> String:
|
||||
return "B"
|
||||
|
||||
func _b_button_name() -> String:
|
||||
return "A"
|
||||
|
||||
func _x_button_name() -> String:
|
||||
return "Y"
|
||||
|
||||
func _y_button_name() -> String:
|
||||
return "X"
|
||||
|
||||
func _left_bumper_name() -> String:
|
||||
return "L"
|
||||
|
||||
func _right_bumper_name() -> String:
|
||||
return "R"
|
||||
|
||||
func _left_trigger_name() -> String:
|
||||
return "ZL"
|
||||
|
||||
func _right_trigger_name() -> String:
|
||||
return "ZR"
|
||||
|
||||
func _back_button_name() -> String:
|
||||
return "-"
|
||||
|
||||
func _misc_1_button_name() -> String:
|
||||
return "Square"
|
||||
|
||||
func _start_button_name() -> String:
|
||||
return "+"
|
@ -0,0 +1 @@
|
||||
uid://cjlop0xk86bnt
|
@ -0,0 +1,37 @@
|
||||
extends "res://addons/guide/ui/text_providers/controllers/controller_text_provider.gd"
|
||||
|
||||
func _controller_names() -> Array[String]:
|
||||
return ["XInput", "XBox"]
|
||||
|
||||
func _a_button_name() -> String:
|
||||
return "A"
|
||||
|
||||
func _b_button_name() -> String:
|
||||
return "B"
|
||||
|
||||
func _x_button_name() -> String:
|
||||
return "X"
|
||||
|
||||
func _y_button_name() -> String:
|
||||
return "Y"
|
||||
|
||||
func _left_bumper_name() -> String:
|
||||
return "LB"
|
||||
|
||||
func _right_bumper_name() -> String:
|
||||
return "RB"
|
||||
|
||||
func _left_trigger_name() -> String:
|
||||
return "LT"
|
||||
|
||||
func _right_trigger_name() -> String:
|
||||
return "RT"
|
||||
|
||||
func _back_button_name() -> String:
|
||||
return "View"
|
||||
|
||||
func _misc_1_button_name() -> String:
|
||||
return "Share"
|
||||
|
||||
func _start_button_name() -> String:
|
||||
return "Menu"
|
@ -0,0 +1 @@
|
||||
uid://d04a556ciqq35
|
141
addons/guide/ui/text_providers/default_text_provider.gd
Normal file
141
addons/guide/ui/text_providers/default_text_provider.gd
Normal file
@ -0,0 +1,141 @@
|
||||
extends GUIDETextProvider
|
||||
|
||||
var _is_on_desktop:bool = false
|
||||
|
||||
func _init():
|
||||
priority = 0
|
||||
_is_on_desktop = OS.has_feature("linuxbsd") or OS.has_feature("macos") or OS.has_feature("windows")
|
||||
|
||||
func supports(input:GUIDEInput) -> bool:
|
||||
return true
|
||||
|
||||
|
||||
func _format(input:String) -> String:
|
||||
return "[%s]" % [input]
|
||||
|
||||
|
||||
func get_text(input:GUIDEInput) -> String:
|
||||
if input is GUIDEInputKey:
|
||||
var result:PackedStringArray = []
|
||||
if input.control:
|
||||
var ctrl = GUIDEInputKey.new()
|
||||
ctrl.key = KEY_CTRL
|
||||
result.append(get_text(ctrl))
|
||||
if input.alt:
|
||||
var alt = GUIDEInputKey.new()
|
||||
alt.key = KEY_ALT
|
||||
result.append(get_text(alt))
|
||||
if input.shift:
|
||||
var shift = GUIDEInputKey.new()
|
||||
shift.key = KEY_SHIFT
|
||||
result.append(get_text(shift))
|
||||
if input.meta:
|
||||
var meta = GUIDEInputKey.new()
|
||||
meta.key = KEY_META
|
||||
result.append(get_text(meta))
|
||||
|
||||
var the_key = input.key
|
||||
|
||||
# if we are on desktop, translate the physical keycode into the actual label
|
||||
# this is not supported on mobile, so we have to check
|
||||
if _is_on_desktop:
|
||||
the_key = DisplayServer.keyboard_get_label_from_physical(input.key)
|
||||
|
||||
|
||||
result.append(_format(OS.get_keycode_string(the_key)))
|
||||
return "+".join(result)
|
||||
|
||||
if input is GUIDEInputMouseAxis1D:
|
||||
match input.axis:
|
||||
GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.X:
|
||||
return _format(tr("Mouse Left/Right"))
|
||||
GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.Y:
|
||||
return _format(tr("Mouse Up/Down"))
|
||||
|
||||
if input is GUIDEInputMouseAxis2D:
|
||||
return _format(tr("Mouse"))
|
||||
|
||||
if input is GUIDEInputMouseButton:
|
||||
match input.button:
|
||||
MOUSE_BUTTON_LEFT:
|
||||
return _format(tr("Left Mouse Button"))
|
||||
MOUSE_BUTTON_RIGHT:
|
||||
return _format(tr("Right Mouse Button"))
|
||||
MOUSE_BUTTON_MIDDLE:
|
||||
return _format(tr("Middle Mouse Button"))
|
||||
MOUSE_BUTTON_WHEEL_UP:
|
||||
return _format(tr("Mouse Wheel Up"))
|
||||
MOUSE_BUTTON_WHEEL_DOWN:
|
||||
return _format(tr("Mouse Wheel Down"))
|
||||
MOUSE_BUTTON_WHEEL_LEFT:
|
||||
return _format(tr("Mouse Wheel Left"))
|
||||
MOUSE_BUTTON_WHEEL_RIGHT:
|
||||
return _format(tr("Mouse Wheel Right"))
|
||||
MOUSE_BUTTON_XBUTTON1:
|
||||
return _format(tr("Mouse Side 1"))
|
||||
MOUSE_BUTTON_XBUTTON2:
|
||||
return _format(tr("Mouse Side 2"))
|
||||
|
||||
if input is GUIDEInputJoyAxis1D:
|
||||
match input.axis:
|
||||
JOY_AXIS_LEFT_X:
|
||||
return _format(tr("Stick 1 Horizontal"))
|
||||
JOY_AXIS_LEFT_Y:
|
||||
return _format(tr("Stick 1 Vertical"))
|
||||
JOY_AXIS_RIGHT_X:
|
||||
return _format(tr("Stick 2 Horizontal"))
|
||||
JOY_AXIS_RIGHT_Y:
|
||||
return _format(tr("Stick 2 Vertical"))
|
||||
JOY_AXIS_TRIGGER_LEFT:
|
||||
return _format(tr("Axis 3"))
|
||||
JOY_AXIS_TRIGGER_RIGHT:
|
||||
return _format(tr("Axis 4"))
|
||||
|
||||
if input is GUIDEInputJoyAxis2D:
|
||||
match input.x:
|
||||
JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y:
|
||||
return _format(tr("Stick 1"))
|
||||
JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y:
|
||||
return _format(tr("Stick 2"))
|
||||
|
||||
if input is GUIDEInputJoyButton:
|
||||
return _format(tr("Joy %s") % [input.button])
|
||||
|
||||
|
||||
if input is GUIDEInputAction:
|
||||
return _format(tr("Action %s") % ["?" if input.action == null else input.action._editor_name()])
|
||||
|
||||
if input is GUIDEInputAny:
|
||||
var parts:Array[String] = []
|
||||
if input.joy:
|
||||
parts.append(tr("Joy Button"))
|
||||
if input.mouse:
|
||||
parts.append(tr("Mouse Button"))
|
||||
if input.keyboard:
|
||||
parts.append(tr("Key"))
|
||||
|
||||
return _format(tr("Any %s") % [ "/".join(parts) ] )
|
||||
|
||||
if input is GUIDEInputMousePosition:
|
||||
return _format(tr("Mouse Position"))
|
||||
|
||||
if input is GUIDEInputTouchPosition:
|
||||
return _format(tr("Touch Position %s") % [input.finger_index if input.finger_index >= 0 else "Average"])
|
||||
|
||||
if input is GUIDEInputTouchAngle:
|
||||
return _format(tr("Touch Angle"))
|
||||
|
||||
if input is GUIDEInputTouchDistance:
|
||||
return _format(tr("Touch Distance"))
|
||||
|
||||
if input is GUIDEInputTouchAxis1D:
|
||||
match input.axis:
|
||||
GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.X:
|
||||
_format(tr("Touch Left/Right %s") % [input.finger_index if input.finger_index >= 0 else "Average"])
|
||||
GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.Y:
|
||||
_format(tr("Touch Up/Down %s") % [input.finger_index if input.finger_index >= 0 else "Average"])
|
||||
|
||||
if input is GUIDEInputTouchAxis2D:
|
||||
return _format(tr("Touch Axis 2D %s") % [input.finger_index if input.finger_index >= 0 else "Average"])
|
||||
|
||||
return _format("??")
|
@ -0,0 +1 @@
|
||||
uid://cpsrogavf5hy7
|
Reference in New Issue
Block a user