Skip to content

Commit 4551326

Browse files
authored
Merge pull request #7 from mstop4/grid-menus
Grid menus
2 parents fbfeeae + 5c51762 commit 4551326

File tree

38 files changed

+754
-182
lines changed

38 files changed

+754
-182
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Version: 2.3
1+
Version: 2.4

current-scripts/Demos/useful-scripts/objects/obj_menu/CleanUp_0.gml renamed to current-scripts/Demos/useful-scripts/objects/obj_column_menu/CleanUp_0.gml

File renamed without changes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
event_inherited();
2+
3+
items = ds_list_create();
4+
num_items = 0;
5+
pos = 0;
6+
7+
column_menu_functions();
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
draw_set_font(menu_font);
2+
var _x = x + cursor_width + cursor_padding;
3+
4+
for (var i=0; i<num_items; i++) {
5+
var _item = items[| i];
6+
var _type = _item.types[| ds_list_size(_item.types)-1];
7+
8+
var _y = y + (item_height + line_spacing) * i;
9+
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+
}
27+
}
28+
29+
draw_sprite(cursor_spr, 0, x, y + (item_height + line_spacing) * pos);
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
if (keyboard_check_pressed(vk_anykey)) {
2+
if (active_key_config != noone) {
3+
self.handle_key_config(active_key_config);
4+
}
5+
}
6+
7+
8+
if (!enabled) exit;
9+
10+
control_state.poll_input();
11+
12+
if (control_state.pressed_state[MENU_CONTROLS.UP]) {
13+
pos = wrap(pos-1, 0, num_items-1);
14+
audio_play_sound(cursor_move_sfx, 1, false);
15+
}
16+
17+
if (control_state.pressed_state[MENU_CONTROLS.DOWN]) {
18+
pos = wrap(pos+1, 0, num_items-1);
19+
audio_play_sound(cursor_move_sfx, 1, false);
20+
}
21+
22+
if (control_state.pressed_state[MENU_CONTROLS.LEFT]) {
23+
var _item = items[| pos];
24+
25+
if (ds_list_find_index(_item.types, "spinner") != -1)
26+
self.handle_spinner(_item, -1);
27+
}
28+
29+
if (control_state.pressed_state[MENU_CONTROLS.RIGHT]) {
30+
var _item = items[| pos];
31+
32+
if (ds_list_find_index(_item.types, "spinner") != -1)
33+
self.handle_spinner(_item, 1);
34+
}
35+
36+
if (control_state.pressed_state[MENU_CONTROLS.CONFIRM]) {
37+
var _item = items[| pos];
38+
39+
if (ds_list_find_index(_item.types, "selectable") != -1)
40+
self.handle_selectable(_item);
41+
42+
else if (ds_list_find_index(_item.types, "keyconfig") != -1)
43+
self.handle_key_config(_item);
44+
}

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

Lines changed: 39 additions & 0 deletions
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_menu_demo/Create_0.gml renamed to current-scripts/Demos/useful-scripts/objects/obj_column_menu_demo/Create_0.gml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
menu = instance_create_layer(32, 32, layer, obj_menu);
2-
menu.menu_init({
1+
menu = instance_create_layer(32, 32, layer, obj_column_menu);
2+
menu.column_menu_init({
33
font: fnt_demo,
44
cursor_spr: spr_arrow,
55
cursor_move_sfx: snd_menu_move,
66
cursor_change_sfx: snd_menu_move,
77
cursor_confirm_sfx: -1,
88
});
99

10-
menu.add_menu_selectable({
10+
menu.column_menu_add_selectable({
1111
label: "Foo",
1212
on_confirm_func: "menu_demo_on_confirm",
1313
on_confirm_args: ["Foo"],
@@ -24,7 +24,7 @@ menu.add_menu_selectable({
2424
// - {boolean} silent_on_confirm
2525
// - {boolean} silent_on_change
2626

27-
menu.add_menu_spinner({
27+
menu.column_menu_add_spinner({
2828
label: "Bar",
2929
values: ["A", 1, "B", 2, "C", 3],
3030
init_index: 0,
@@ -36,14 +36,14 @@ menu.add_menu_spinner({
3636
silent_on_change: false
3737
});
3838

39-
menu.add_menu_selectable({
39+
menu.column_menu_add_selectable({
4040
label: "Baz",
4141
on_confirm_func: "menu_demo_on_confirm",
4242
on_confirm_args: ["Baz"],
4343
silent_on_confirm: false
4444
});
4545

46-
menu.add_menu_selectable({
46+
menu.column_menu_add_selectable({
4747
label: "Qux",
4848
on_confirm_func: "menu_demo_on_confirm",
4949
on_confirm_args: ["Qux"],

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

Lines changed: 33 additions & 0 deletions
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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ rooms = [
66
room_laser_demo,
77
room_input_demo,
88
room_math_demo,
9-
room_menu_demo,
9+
room_column_menu_demo,
10+
room_grid_menu_demo,
1011
room_strings_demo,
1112
room_web_demo
1213
];
@@ -20,13 +21,14 @@ room_names = [
2021
"Geometry",
2122
"Input",
2223
"Math",
23-
"Menu",
24+
"Column Menu",
25+
"Grid Menu",
2426
"Strings",
2527
"Web"
2628
];
2729

28-
menu = instance_create_layer(32, 64, layer, obj_menu);
29-
menu.menu_init({
30+
menu = instance_create_layer(32, 64, layer, obj_column_menu);
31+
menu.column_menu_init({
3032
font: fnt_demo,
3133
cursor_spr: spr_arrow,
3234
cursor_move_sfx: snd_menu_move,
@@ -36,7 +38,7 @@ menu.menu_init({
3638
menu.line_spacing = 16;
3739

3840
for (var i=0; i<num_rooms; i++) {
39-
menu.add_menu_selectable({
41+
menu.column_menu_add_selectable({
4042
label: room_names[i],
4143
on_confirm_func: "go_to_demo",
4244
on_confirm_args: [ rooms[i] ],
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
for (var i=0; i<ds_grid_width(items); i++) {
2+
for (var j=0; j<ds_grid_height(items); j++) {
3+
if (!is_struct(items[# i, j])) continue;
4+
items[# i, j].destroy();
5+
delete items[# i, j];
6+
}
7+
}
8+
9+
ds_grid_destroy(items);
10+
delete control_state;

0 commit comments

Comments
 (0)