Skip to content

Commit ac61cba

Browse files
authored
Merge pull request #597 from aaronfranke/joy-24
Handle up to 24 joypad buttons in the Joypads demo
2 parents dc5c101 + 21e8294 commit ac61cba

File tree

3 files changed

+162
-8
lines changed

3 files changed

+162
-8
lines changed

misc/joypads/joypad_diagram.tscn

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ flip_h = true
125125
region_enabled = true
126126
region_rect = Rect2( 50, 0, 14, 54 )
127127

128+
[node name="16" type="Sprite" parent="Buttons"]
129+
position = Vector2( 4, 64 )
130+
scale = Vector2( 0.9, 0.9 )
131+
texture = ExtResource( 2 )
132+
region_enabled = true
133+
region_rect = Rect2( 0, 0, 45, 45 )
134+
128135
[node name="Axes" type="Node2D" parent="."]
129136

130137
[node name="0-" type="Sprite" parent="Axes"]

misc/joypads/joypads.gd

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ onready var joypad_number = $DeviceInfo/JoyNumber
2323
func _ready():
2424
set_physics_process(true)
2525
Input.connect("joy_connection_changed", self, "_on_joy_connection_changed")
26+
# Guide button, not supported <= 3.2.3, so manually hide to account for that case.
27+
joypad_buttons.get_child(16).hide()
2628

2729

2830
func _process(_delta):
@@ -52,13 +54,15 @@ func _process(_delta):
5254
joypad_axes.get_node(str(axis) + "-").show()
5355

5456
# Loop through the buttons and highlight the ones that are pressed.
55-
for btn in range(JOY_BUTTON_0, JOY_BUTTON_MAX):
57+
for btn in range(JOY_BUTTON_0, int(min(JOY_BUTTON_MAX, 24))):
5658
if Input.is_joy_button_pressed(joy_num, btn):
57-
button_grid.get_node(str(btn)).add_color_override("font_color", Color.white)
58-
joypad_buttons.get_node(str(btn)).show()
59+
button_grid.get_child(btn).add_color_override("font_color", Color.white)
60+
if btn < 17:
61+
joypad_buttons.get_child(btn).show()
5962
else:
60-
button_grid.get_node(str(btn)).add_color_override("font_color", Color(0.2, 0.1, 0.3, 1))
61-
joypad_buttons.get_node(str(btn)).hide()
63+
button_grid.get_child(btn).add_color_override("font_color", Color(0.2, 0.1, 0.3, 1))
64+
if btn < 17:
65+
joypad_buttons.get_child(btn).hide()
6266

6367

6468
# Called whenever a joypad has been connected or disconnected.

misc/joypads/joypads.tscn

Lines changed: 146 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ __meta__ = {
1919
}
2020

2121
[node name="JoypadDiagram" parent="." instance=ExtResource( 2 )]
22-
position = Vector2( 415, 180 )
22+
position = Vector2( 415, 170 )
2323
scale = Vector2( 0.5, 0.5 )
2424

2525
[node name="DeviceInfo" type="HBoxContainer" parent="."]
@@ -569,7 +569,7 @@ anchor_top = 1.0
569569
anchor_right = 1.0
570570
anchor_bottom = 1.0
571571
margin_left = -250.0
572-
margin_top = -140.0
572+
margin_top = -150.0
573573
__meta__ = {
574574
"_edit_use_anchors_": false
575575
}
@@ -588,7 +588,7 @@ __meta__ = {
588588
[node name="ButtonGrid" type="GridContainer" parent="Buttons"]
589589
margin_top = 24.0
590590
margin_right = 250.0
591-
margin_bottom = 68.0
591+
margin_bottom = 92.0
592592
rect_min_size = Vector2( 200, 0 )
593593
columns = 8
594594
__meta__ = {
@@ -601,6 +601,7 @@ margin_bottom = 20.0
601601
rect_min_size = Vector2( 0, 20 )
602602
size_flags_horizontal = 3
603603
size_flags_vertical = 1
604+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
604605
text = "0"
605606
align = 1
606607
valign = 1
@@ -615,6 +616,7 @@ margin_bottom = 20.0
615616
rect_min_size = Vector2( 0, 20 )
616617
size_flags_horizontal = 3
617618
size_flags_vertical = 1
619+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
618620
text = "1"
619621
align = 1
620622
valign = 1
@@ -629,6 +631,7 @@ margin_bottom = 20.0
629631
rect_min_size = Vector2( 0, 20 )
630632
size_flags_horizontal = 3
631633
size_flags_vertical = 1
634+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
632635
text = "2"
633636
align = 1
634637
valign = 1
@@ -643,6 +646,7 @@ margin_bottom = 20.0
643646
rect_min_size = Vector2( 0, 20 )
644647
size_flags_horizontal = 3
645648
size_flags_vertical = 1
649+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
646650
text = "3"
647651
align = 1
648652
valign = 1
@@ -657,6 +661,7 @@ margin_bottom = 20.0
657661
rect_min_size = Vector2( 0, 20 )
658662
size_flags_horizontal = 3
659663
size_flags_vertical = 1
664+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
660665
text = "4"
661666
align = 1
662667
valign = 1
@@ -671,6 +676,7 @@ margin_bottom = 20.0
671676
rect_min_size = Vector2( 0, 20 )
672677
size_flags_horizontal = 3
673678
size_flags_vertical = 1
679+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
674680
text = "5"
675681
align = 1
676682
valign = 1
@@ -685,6 +691,7 @@ margin_bottom = 20.0
685691
rect_min_size = Vector2( 0, 20 )
686692
size_flags_horizontal = 3
687693
size_flags_vertical = 1
694+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
688695
text = "6"
689696
align = 1
690697
valign = 1
@@ -699,6 +706,7 @@ margin_bottom = 20.0
699706
rect_min_size = Vector2( 0, 20 )
700707
size_flags_horizontal = 3
701708
size_flags_vertical = 1
709+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
702710
text = "7"
703711
align = 1
704712
valign = 1
@@ -713,6 +721,7 @@ margin_bottom = 44.0
713721
rect_min_size = Vector2( 0, 20 )
714722
size_flags_horizontal = 3
715723
size_flags_vertical = 1
724+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
716725
text = "8"
717726
align = 1
718727
valign = 1
@@ -728,6 +737,7 @@ margin_bottom = 44.0
728737
rect_min_size = Vector2( 0, 20 )
729738
size_flags_horizontal = 3
730739
size_flags_vertical = 1
740+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
731741
text = "9"
732742
align = 1
733743
valign = 1
@@ -743,6 +753,7 @@ margin_bottom = 44.0
743753
rect_min_size = Vector2( 0, 20 )
744754
size_flags_horizontal = 3
745755
size_flags_vertical = 1
756+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
746757
text = "10"
747758
align = 1
748759
valign = 1
@@ -758,6 +769,7 @@ margin_bottom = 44.0
758769
rect_min_size = Vector2( 0, 20 )
759770
size_flags_horizontal = 3
760771
size_flags_vertical = 1
772+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
761773
text = "11"
762774
align = 1
763775
valign = 1
@@ -773,6 +785,7 @@ margin_bottom = 44.0
773785
rect_min_size = Vector2( 0, 20 )
774786
size_flags_horizontal = 3
775787
size_flags_vertical = 1
788+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
776789
text = "12"
777790
align = 1
778791
valign = 1
@@ -788,6 +801,7 @@ margin_bottom = 44.0
788801
rect_min_size = Vector2( 0, 20 )
789802
size_flags_horizontal = 3
790803
size_flags_vertical = 1
804+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
791805
text = "13"
792806
align = 1
793807
valign = 1
@@ -803,6 +817,7 @@ margin_bottom = 44.0
803817
rect_min_size = Vector2( 0, 20 )
804818
size_flags_horizontal = 3
805819
size_flags_vertical = 1
820+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
806821
text = "14"
807822
align = 1
808823
valign = 1
@@ -818,13 +833,141 @@ margin_bottom = 44.0
818833
rect_min_size = Vector2( 0, 20 )
819834
size_flags_horizontal = 3
820835
size_flags_vertical = 1
836+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
821837
text = "15"
822838
align = 1
823839
valign = 1
824840
__meta__ = {
825841
"_edit_use_anchors_": false
826842
}
827843

844+
[node name="16" type="Label" parent="Buttons/ButtonGrid"]
845+
margin_top = 48.0
846+
margin_right = 27.0
847+
margin_bottom = 68.0
848+
rect_min_size = Vector2( 0, 20 )
849+
size_flags_horizontal = 3
850+
size_flags_vertical = 1
851+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
852+
text = "16"
853+
align = 1
854+
valign = 1
855+
__meta__ = {
856+
"_edit_use_anchors_": false
857+
}
858+
859+
[node name="17" type="Label" parent="Buttons/ButtonGrid"]
860+
margin_left = 31.0
861+
margin_top = 48.0
862+
margin_right = 58.0
863+
margin_bottom = 68.0
864+
rect_min_size = Vector2( 0, 20 )
865+
size_flags_horizontal = 3
866+
size_flags_vertical = 1
867+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
868+
text = "17"
869+
align = 1
870+
valign = 1
871+
__meta__ = {
872+
"_edit_use_anchors_": false
873+
}
874+
875+
[node name="18" type="Label" parent="Buttons/ButtonGrid"]
876+
margin_left = 62.0
877+
margin_top = 48.0
878+
margin_right = 89.0
879+
margin_bottom = 68.0
880+
rect_min_size = Vector2( 0, 20 )
881+
size_flags_horizontal = 3
882+
size_flags_vertical = 1
883+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
884+
text = "18"
885+
align = 1
886+
valign = 1
887+
__meta__ = {
888+
"_edit_use_anchors_": false
889+
}
890+
891+
[node name="19" type="Label" parent="Buttons/ButtonGrid"]
892+
margin_left = 93.0
893+
margin_top = 48.0
894+
margin_right = 120.0
895+
margin_bottom = 68.0
896+
rect_min_size = Vector2( 0, 20 )
897+
size_flags_horizontal = 3
898+
size_flags_vertical = 1
899+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
900+
text = "19"
901+
align = 1
902+
valign = 1
903+
__meta__ = {
904+
"_edit_use_anchors_": false
905+
}
906+
907+
[node name="20" type="Label" parent="Buttons/ButtonGrid"]
908+
margin_left = 124.0
909+
margin_top = 48.0
910+
margin_right = 151.0
911+
margin_bottom = 68.0
912+
rect_min_size = Vector2( 0, 20 )
913+
size_flags_horizontal = 3
914+
size_flags_vertical = 1
915+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
916+
text = "20"
917+
align = 1
918+
valign = 1
919+
__meta__ = {
920+
"_edit_use_anchors_": false
921+
}
922+
923+
[node name="21" type="Label" parent="Buttons/ButtonGrid"]
924+
margin_left = 155.0
925+
margin_top = 48.0
926+
margin_right = 182.0
927+
margin_bottom = 68.0
928+
rect_min_size = Vector2( 0, 20 )
929+
size_flags_horizontal = 3
930+
size_flags_vertical = 1
931+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
932+
text = "21"
933+
align = 1
934+
valign = 1
935+
__meta__ = {
936+
"_edit_use_anchors_": false
937+
}
938+
939+
[node name="22" type="Label" parent="Buttons/ButtonGrid"]
940+
margin_left = 186.0
941+
margin_top = 48.0
942+
margin_right = 213.0
943+
margin_bottom = 68.0
944+
rect_min_size = Vector2( 0, 20 )
945+
size_flags_horizontal = 3
946+
size_flags_vertical = 1
947+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
948+
text = "22"
949+
align = 1
950+
valign = 1
951+
__meta__ = {
952+
"_edit_use_anchors_": false
953+
}
954+
955+
[node name="23" type="Label" parent="Buttons/ButtonGrid"]
956+
margin_left = 217.0
957+
margin_top = 48.0
958+
margin_right = 244.0
959+
margin_bottom = 68.0
960+
rect_min_size = Vector2( 0, 20 )
961+
size_flags_horizontal = 3
962+
size_flags_vertical = 1
963+
custom_colors/font_color = Color( 0.2, 0.1, 0.3, 1 )
964+
text = "23"
965+
align = 1
966+
valign = 1
967+
__meta__ = {
968+
"_edit_use_anchors_": false
969+
}
970+
828971
[node name="Vibration" type="VBoxContainer" parent="."]
829972
anchor_top = 1.0
830973
anchor_bottom = 1.0

0 commit comments

Comments
 (0)