Skip to content

Commit 1468533

Browse files
authored
Version 4 update (#12)
* Multi key config (#11) * various menu changes * update ctrl_any_pressed * use global control manager * update readme * fix get label for key config * multi key config working * added other controls to key config demo * simplify handle_key_config_discovery * update gird and nested menus * fix menu step events * fixed nested menus * update build * fix get_value * add locked bindings, array_find * renamed variables * add way to cancel key config discovery mode * minor fix * update editor version * add a way to remove bindings * add reset all bindings * control bindings can only be changed by the same control source * add menu dividers * add visual key prompts * add gamepad icons * added control icons to key config items * update package and version number
1 parent 7e4ddd7 commit 1468533

File tree

359 files changed

+2308
-396
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

359 files changed

+2308
-396
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Version: 3.1.1
1+
Version: 4.2.0

current-scripts/Demos/useful-scripts/notes/info/info.yy

+3-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

current-scripts/Demos/useful-scripts/objects/obj_column_menu/Draw_0.gml

+1-19
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,9 @@ var _x = x + cursor_padding;
33

44
for (var i=view_area.x; i<=view_area.y; i++) {
55
var _item = items[| i];
6-
var _type = _item.types[| ds_list_size(_item.types)-1];
7-
86
var _y = y + (item_height + line_spacing) * (i - view_area.x);
97

10-
switch (_type) {
11-
case "item":
12-
case "selectable":
13-
draw_text(_x, _y, _item.label);
14-
break;
15-
16-
case "spinner":
17-
draw_text(_x, _y, _item.get_full_label());
18-
break;
19-
20-
case "keyconfig":
21-
draw_text(_x, _y, _item.get_full_label());
22-
break;
23-
24-
default:
25-
draw_text(_x, _y, _item.label);
26-
}
8+
self.menu_base_draw_item(_item, _x, _y);
279
}
2810

2911
if (enabled) {
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,66 @@
1-
if (keyboard_check_pressed(vk_anykey)) {
2-
if (active_key_config != noone) {
3-
self.handle_key_config_change(active_key_config);
4-
}
5-
}
6-
71
if (!enabled) exit;
82

93
control_state.poll_input();
104

5+
if (active_key_config != noone && discovery_mode == MENU_DISCOVERY_MODE.DISCOVERING) {
6+
self.handle_key_config_discovery();
7+
exit;
8+
}
9+
1110
if (control_state.pressed_state[MENU_CONTROLS.UP]) {
12-
pos = wrap(pos-1, 0, num_items);
13-
self.column_menu_update_view();
14-
audio_play_sound(cursor_move_sfx, 1, false);
11+
if (active_key_config == noone) {
12+
var _cur_pos = pos;
13+
var _item = -1;
14+
15+
do {
16+
pos = wrap(pos-1, 0, num_items);
17+
_item = items[| pos];
18+
} until ((is_struct(_item)
19+
&& ds_list_find_index(_item.types, "divider") == -1)
20+
|| _cur_pos == pos)
21+
22+
self.column_menu_update_view();
23+
audio_play_sound(cursor_move_sfx, 1, false);
24+
}
1525
}
1626

1727
if (control_state.pressed_state[MENU_CONTROLS.DOWN]) {
18-
pos = wrap(pos+1, 0, num_items);
19-
self.column_menu_update_view();
20-
audio_play_sound(cursor_move_sfx, 1, false);
28+
if (active_key_config == noone) {
29+
var _cur_pos = pos;
30+
var _item = -1;
31+
32+
do {
33+
pos = wrap(pos+1, 0, num_items);
34+
_item = items[| pos];
35+
} until ((is_struct(_item)
36+
&& ds_list_find_index(_item.types, "divider") == -1)
37+
|| _cur_pos == pos)
38+
39+
self.column_menu_update_view();
40+
audio_play_sound(cursor_move_sfx, 1, false);
41+
}
2142
}
2243

2344
if (control_state.pressed_state[MENU_CONTROLS.LEFT]) {
2445
var _item = items[| pos];
2546

2647
if (ds_list_find_index(_item.types, "spinner") != -1)
2748
self.handle_spinner_change(_item, -1);
49+
50+
else if (ds_list_find_index(_item.types, "keyconfig") != -1
51+
&& active_key_config == _item)
52+
self.handle_key_config_select(_item, -1);
2853
}
2954

3055
if (control_state.pressed_state[MENU_CONTROLS.RIGHT]) {
3156
var _item = items[| pos];
3257

3358
if (ds_list_find_index(_item.types, "spinner") != -1)
3459
self.handle_spinner_change(_item, 1);
60+
61+
else if (ds_list_find_index(_item.types, "keyconfig") != -1
62+
&& active_key_config == _item)
63+
self.handle_key_config_select(_item, 1);
3564
}
3665

3766
if (control_state.pressed_state[MENU_CONTROLS.CONFIRM]) {
@@ -44,5 +73,19 @@ if (control_state.pressed_state[MENU_CONTROLS.CONFIRM]) {
4473
self.handle_selectable_confirm(_item);
4574

4675
else if (ds_list_find_index(_item.types, "keyconfig") != -1)
47-
self.handle_key_config_change(_item);
76+
self.handle_key_config_confirm(_item);
77+
}
78+
79+
if (control_state.pressed_state[MENU_CONTROLS.CANCEL]) {
80+
var _item = items[| pos];
81+
82+
if (ds_list_find_index(_item.types, "keyconfig") != -1)
83+
self.handle_key_config_cancel();
84+
}
85+
86+
if (control_state.pressed_state[MENU_CONTROLS.DELETE_BINDING]) {
87+
var _item = items[| pos];
88+
89+
if (ds_list_find_index(_item.types, "keyconfig") != -1)
90+
self.handle_key_config_delete(_item);
4891
}

current-scripts/Demos/useful-scripts/objects/obj_column_menu/obj_column_menu.yy

+8-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

current-scripts/Demos/useful-scripts/objects/obj_column_menu_demo/Create_0.gml

+7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
my_player = inst_control_manager.get_player(0);
2+
13
menu = instance_create_layer(32, 64, layer, obj_column_menu);
24
menu.column_menu_init({
5+
player_controller: my_player,
36
font: fnt_demo,
47
view_height: 0,
58
cursor_spr: spr_arrow,
69
cursor_move_sfx: snd_menu_move,
710
cursor_change_sfx: snd_menu_move,
811
cursor_confirm_sfx: -1,
12+
use_control_icons: false,
13+
keyboard_icons: [],
14+
gamepad_icons: [],
15+
control_icons_scale: 1,
916
});
1017

1118
menu.column_menu_add_selectable({

current-scripts/Demos/useful-scripts/objects/obj_column_menu_demo/obj_column_menu_demo.yy

+5-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
for (var i=0; i<num_players; i++) {
2+
players[| i].clear_all_input();
3+
}

current-scripts/Demos/useful-scripts/objects/obj_control_manager/obj_control_manager.yy

+8-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

current-scripts/Demos/useful-scripts/objects/obj_control_manager_demo/Create_0.gml

+4-33
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,13 @@ control_prompts[CONTROLS.JUMP] = [5, 13, 20];
1616
control_prompts[CONTROLS.INTERACT] = [6, 14, 21];
1717
control_prompts[CONTROLS.ITEM] = [7, 15, 23];
1818

19-
num_controls = CONTROLS.MAX;
19+
num_controls = 8;
2020

21-
control_manager = instance_create_layer(0, 0, layer, obj_control_manager);
22-
var _player_index = control_manager.add_player();
23-
my_player = control_manager.get_player(_player_index);
24-
25-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.UP, 0, vk_up);
26-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.DOWN, 0, vk_down);
27-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.LEFT, 0, vk_left);
28-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.RIGHT, 0, vk_right);
29-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.SHOOT, 0, ord("Z"));
30-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.JUMP, 0, ord("X"));
31-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.INTERACT, 0, ord("C"));
32-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.ITEM, 0, ord("V"));
33-
34-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.UP, 1, ord("W"));
35-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.DOWN, 1, ord("S"));
36-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.LEFT, 1, ord("A"));
37-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.RIGHT, 1, ord("D"));
38-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.SHOOT, 1, ord("L"));
39-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.JUMP, 1, vk_semicolon);
40-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.INTERACT, 1, vk_single_quote);
41-
my_player.set_binding(CONTROL_TYPE.KEYBOARD, CONTROL_SOURCE.KEYBOARD, CONTROLS.ITEM, 1, ord("P"));
42-
43-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.UP, 0, gp_padu);
44-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.DOWN, 0, gp_padd);
45-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.LEFT, 0, gp_padl);
46-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.RIGHT, 0, gp_padr);
47-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.SHOOT, 0, gp_face3);
48-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.JUMP, 0, gp_face1);
49-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.INTERACT, 0, gp_face2);
50-
my_player.set_binding(CONTROL_TYPE.GAMEPAD, CONTROL_SOURCE.GAMEPAD, CONTROLS.ITEM, 0, gp_face4);
21+
my_player = inst_control_manager.get_player(0);
5122

5223
num_controllers_connected = 0;
53-
current_gamepad_index = control_manager.is_on_steam_deck()
54-
? control_manager.get_steam_deck_gamepad_index()
24+
current_gamepad_index = inst_control_manager.is_on_steam_deck()
25+
? inst_control_manager.get_steam_deck_gamepad_index()
5526
: 0;
5627
device_count = gamepad_get_device_count();
5728

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
current_gamepad_index = inst_control_manager.is_on_steam_deck()
2+
? inst_control_manager.get_steam_deck_gamepad_index()
3+
: 0;
4+
5+
my_player.set_gamepad_slot(current_gamepad_index);

current-scripts/Demos/useful-scripts/objects/obj_control_manager_demo/obj_control_manager_demo.yy

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

current-scripts/Demos/useful-scripts/objects/obj_demo_title/Create_0.gml

+7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ rooms = [
1010
room_column_menu_demo,
1111
room_grid_menu_demo,
1212
room_nested_menu_demo,
13+
room_key_config_menu_demo,
1314
room_strings_demo,
1415
room_web_demo,
1516
room_system_info
@@ -28,19 +29,25 @@ room_names = [
2829
"Column Menu",
2930
"Grid Menu",
3031
"Nested Menu",
32+
"Control Config Menu",
3133
"Strings",
3234
"Web",
3335
"System Info"
3436
];
3537

3638
menu = instance_create_layer(32, 64, layer, obj_column_menu);
3739
menu.column_menu_init({
40+
player_controller: inst_control_manager.get_player(0),
3841
font: fnt_demo,
3942
view_height: 0,
4043
cursor_spr: spr_arrow,
4144
cursor_move_sfx: snd_menu_move,
4245
cursor_change_sfx: -1,
4346
cursor_confirm_sfx: -1,
47+
use_control_icons: false,
48+
keyboard_icons: [],
49+
gamepad_icons: [],
50+
control_icons_scale: 1,
4451
});
4552
menu.line_spacing = 8;
4653

0 commit comments

Comments
 (0)