Refactor the Joypads demo

This commit is contained in:
Aaron Franke
2020-03-05 20:45:59 -05:00
parent 18679efd75
commit 5322be1a54
3 changed files with 780 additions and 645 deletions

View File

@@ -3,56 +3,56 @@
[ext_resource path="res://diagram.png" type="Texture" id=1]
[ext_resource path="res://indicators.png" type="Texture" id=2]
[node name="diagram" type="Sprite"]
[node name="JoypadDiagram" type="Sprite"]
position = Vector2( 368.635, 155.289 )
scale = Vector2( 0.432859, 0.446287 )
texture = ExtResource( 1 )
[node name="buttons" type="Node2D" parent="."]
[node name="Buttons" type="Node2D" parent="."]
[node name="0" type="Sprite" parent="buttons"]
[node name="0" type="Sprite" parent="Buttons"]
position = Vector2( 147.73, 120.925 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="1" type="Sprite" parent="buttons"]
[node name="1" type="Sprite" parent="Buttons"]
position = Vector2( 185.769, 82.4874 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="2" type="Sprite" parent="buttons"]
[node name="2" type="Sprite" parent="Buttons"]
position = Vector2( 112.377, 82.4874 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="3" type="Sprite" parent="buttons"]
[node name="3" type="Sprite" parent="Buttons"]
position = Vector2( 149.073, 47.3293 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="4" type="Sprite" parent="buttons"]
[node name="4" type="Sprite" parent="Buttons"]
position = Vector2( -161.038, -158.037 )
scale = Vector2( 5.3348, 3.35512 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 10, 10, 10, 10 )
[node name="5" type="Sprite" parent="buttons"]
[node name="5" type="Sprite" parent="Buttons"]
position = Vector2( 159.362, -156.977 )
scale = Vector2( 5.3348, 3.35512 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 10, 10, 10, 10 )
[node name="6" type="Sprite" parent="buttons"]
[node name="6" type="Sprite" parent="Buttons"]
position = Vector2( -159.349, -221.878 )
scale = Vector2( 1.0458, 2.16952 )
texture = ExtResource( 2 )
@@ -60,49 +60,49 @@ flip_h = true
region_enabled = true
region_rect = Rect2( 0, 0, 45, 22 )
[node name="7" type="Sprite" parent="buttons"]
[node name="7" type="Sprite" parent="Buttons"]
position = Vector2( 156.677, -220.11 )
scale = Vector2( 1.0458, 2.16952 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 22 )
[node name="8" type="Sprite" parent="buttons"]
[node name="8" type="Sprite" parent="Buttons"]
position = Vector2( -67.5308, 164.422 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="9" type="Sprite" parent="buttons"]
[node name="9" type="Sprite" parent="Buttons"]
position = Vector2( 75.8825, 167.363 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="10" type="Sprite" parent="buttons"]
[node name="10" type="Sprite" parent="Buttons"]
position = Vector2( -46.6707, 52.702 )
scale = Vector2( 0.810497, 0.57205 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="11" type="Sprite" parent="buttons"]
[node name="11" type="Sprite" parent="Buttons"]
position = Vector2( 56.2581, 54.4382 )
scale = Vector2( 0.810497, 0.57205 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 0, 0, 45, 45 )
[node name="12" type="Sprite" parent="buttons"]
[node name="12" type="Sprite" parent="Buttons"]
position = Vector2( -139.402, 46.8295 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 50, 0, 54, 14 )
[node name="13" type="Sprite" parent="buttons"]
[node name="13" type="Sprite" parent="Buttons"]
position = Vector2( -139.838, 115.789 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
@@ -110,14 +110,14 @@ flip_v = true
region_enabled = true
region_rect = Rect2( 50, 0, 54, 14 )
[node name="14" type="Sprite" parent="buttons"]
[node name="14" type="Sprite" parent="Buttons"]
position = Vector2( -172.262, 81.8793 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 50, 0, 14, 54 )
[node name="15" type="Sprite" parent="buttons"]
[node name="15" type="Sprite" parent="Buttons"]
position = Vector2( -105.085, 81.0326 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
@@ -125,16 +125,16 @@ flip_h = true
region_enabled = true
region_rect = Rect2( 50, 0, 14, 54 )
[node name="axes" type="Node2D" parent="."]
[node name="Axes" type="Node2D" parent="."]
[node name="0-" type="Sprite" parent="axes"]
[node name="0-" type="Sprite" parent="Axes"]
position = Vector2( -94.4295, 164.932 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 50, 0, 14, 54 )
[node name="0+" type="Sprite" parent="axes"]
[node name="0+" type="Sprite" parent="Axes"]
position = Vector2( -40.3475, 164.509 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
@@ -142,14 +142,14 @@ flip_h = true
region_enabled = true
region_rect = Rect2( 50, 0, 14, 54 )
[node name="1-" type="Sprite" parent="axes"]
[node name="1-" type="Sprite" parent="Axes"]
position = Vector2( -67.6802, 137.926 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 50, 0, 54, 14 )
[node name="1+" type="Sprite" parent="axes"]
[node name="1+" type="Sprite" parent="Axes"]
position = Vector2( -67.4618, 192.915 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
@@ -157,14 +157,14 @@ flip_v = true
region_enabled = true
region_rect = Rect2( 50, 0, 54, 14 )
[node name="2-" type="Sprite" parent="axes"]
[node name="2-" type="Sprite" parent="Axes"]
position = Vector2( 48.8152, 167.145 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 50, 0, 14, 54 )
[node name="2+" type="Sprite" parent="axes"]
[node name="2+" type="Sprite" parent="Axes"]
position = Vector2( 102.899, 167.857 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
@@ -172,14 +172,14 @@ flip_h = true
region_enabled = true
region_rect = Rect2( 50, 0, 14, 54 )
[node name="3-" type="Sprite" parent="axes"]
[node name="3-" type="Sprite" parent="Axes"]
position = Vector2( 76.6557, 140.986 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )
region_enabled = true
region_rect = Rect2( 50, 0, 54, 14 )
[node name="3+" type="Sprite" parent="axes"]
[node name="3+" type="Sprite" parent="Axes"]
position = Vector2( 76.0009, 195.339 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 2 )

View File

@@ -13,60 +13,64 @@ var joy_num
var cur_joy = -1
var axis_value
onready var axes = $Axes
onready var button_grid = $Buttons/ButtonGrid
onready var joypad_axes = $JoypadDiagram/Axes
onready var joypad_buttons = $JoypadDiagram/Buttons
onready var joypad_name = $DeviceInfo/JoyName
onready var joypad_number = $DeviceInfo/JoyNumber
func _ready():
set_physics_process(true)
Input.connect("joy_connection_changed", self, "_on_joy_connection_changed")
func _physics_process(_delta):
func _process(_delta):
# Get the joypad device number from the spinbox.
joy_num = get_node("device_info/joy_num").get_value()
joy_num = joypad_number.get_value()
# Display the name of the joypad if we haven't already.
if joy_num != cur_joy:
cur_joy = joy_num
get_node("device_info/joy_name").set_text(Input.get_joy_name(joy_num))
joypad_name.set_text(Input.get_joy_name(joy_num))
# Loop through the axes and show their current values.
for axis in range(JOY_AXIS_0, JOY_AXIS_MAX):
for axis in range(JOY_AXIS_MAX):
axis_value = Input.get_joy_axis(joy_num, axis)
get_node("axes/axis_prog" + str(axis)).set_value(100 * axis_value)
get_node("axes/axis_val" + str(axis)).set_text(str(axis_value))
axes.get_node("Axis" + str(axis) + "/ProgressBar").set_value(100 * axis_value)
axes.get_node("Axis" + str(axis) + "/ProgressBar/Value").set_text(str(axis_value))
# Show joypad direction indicators
if axis <= JOY_ANALOG_RY:
if abs(axis_value) < DEADZONE:
get_node("diagram/axes/" + str(axis) + "+").hide()
get_node("diagram/axes/" + str(axis) + "-").hide()
joypad_axes.get_node(str(axis) + "+").hide()
joypad_axes.get_node(str(axis) + "-").hide()
elif axis_value > 0:
get_node("diagram/axes/" + str(axis) + "+").show()
get_node("diagram/axes/" + str(axis) + "-").hide()
joypad_axes.get_node(str(axis) + "+").show()
joypad_axes.get_node(str(axis) + "-").hide()
else:
get_node("diagram/axes/" + str(axis) + "+").hide()
get_node("diagram/axes/" + str(axis) + "-").show()
joypad_axes.get_node(str(axis) + "+").hide()
joypad_axes.get_node(str(axis) + "-").show()
# Loop through the buttons and highlight the ones that are pressed.
for btn in range(JOY_BUTTON_0, JOY_BUTTON_MAX):
if Input.is_joy_button_pressed(joy_num, btn):
get_node("buttons/btn" + str(btn)).add_color_override("font_color", Color.white)
get_node("diagram/buttons/" + str(btn)).show()
button_grid.get_node(str(btn)).add_color_override("font_color", Color.white)
joypad_buttons.get_node(str(btn)).show()
else:
get_node("buttons/btn" + str(btn)).add_color_override("font_color", Color(0.2, 0.1, 0.3, 1))
get_node("diagram/buttons/" + str(btn)).hide()
button_grid.get_node(str(btn)).add_color_override("font_color", Color(0.2, 0.1, 0.3, 1))
joypad_buttons.get_node(str(btn)).hide()
# Called whenever a joypad has been connected or disconnected.
func _on_joy_connection_changed(device_id, connected):
if device_id == cur_joy:
if connected:
get_node("device_info/joy_name").set_text(Input.get_joy_name(device_id))
else:
get_node("device_info/joy_name").set_text("")
joypad_name.set_text(Input.get_joy_name(device_id) if connected else "")
func _on_start_vibration_pressed():
var weak = get_node("vibration/vibration_weak_value").get_value()
var strong = get_node("vibration/vibration_strong_value").get_value()
var duration = get_node("vibration/vibration_duration_value").get_value()
var weak = $Vibration/Weak/Value.get_value()
var strong = $Vibration/Strong/Value.get_value()
var duration = $Vibration/Duration/Value.get_value()
Input.start_joy_vibration(cur_joy, weak, strong, duration)

File diff suppressed because it is too large Load Diff