Skip to content

Commit 857e673

Browse files
committed
helper functions for control manager
1 parent 110eeb1 commit 857e673

File tree

5 files changed

+60
-16
lines changed

5 files changed

+60
-16
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usefulGMLScripts1.1.yymps

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ control_labels[CONTROLS.Y] = "Y";
1010
num_controls = CONTROLS.MAX;
1111

1212
control_manager = instance_create_layer(0, 0, layer, obj_control_manager);
13-
control_manager.add_player();
13+
my_player = control_manager.add_player();
1414

15-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.UP, vk_up);
16-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.DOWN, vk_down);
17-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.LEFT, vk_left);
18-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.RIGHT, vk_right);
19-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.A, ord("A"));
20-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.B, ord("B"));
21-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.X, ord("X"));
22-
control_manager.players[| 0].set_control(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.MOUSE, CONTROLS.Y, mb_left);
15+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.UP, vk_up);
16+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.DOWN, vk_down);
17+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.LEFT, vk_left);
18+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.RIGHT, vk_right);
19+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.A, ord("A"));
20+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.B, ord("B"));
21+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.KEYBOARD, CONTROLS.X, ord("X"));
22+
my_player.set_control_map(CONTROL_TYPE.KEYBOARD, CONTROL_TYPE.MOUSE, CONTROLS.Y, mb_left);
2323

24-
control_manager.players[| 0].set_control(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.A, gp_face1);
25-
control_manager.players[| 0].set_control(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.B, gp_face2);
26-
control_manager.players[| 0].set_control(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.X, gp_face3);
27-
control_manager.players[| 0].set_control(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.Y, gp_face4);
24+
my_player.set_control_map(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.A, gp_face1);
25+
my_player.set_control_map(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.B, gp_face2);
26+
my_player.set_control_map(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.X, gp_face3);
27+
my_player.set_control_map(CONTROL_TYPE.GAMEPAD, -1, CONTROLS.Y, gp_face4);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
for (var i=0; i<num_controls; i++) {
2-
draw_text(8, i*32 + 16, control_labels[i] + ": " + string(control_manager.players[| 0].ctrl_held[i]));
2+
draw_text(8, i*32 + 16, control_labels[i] + ": " + string(my_player.get_control_state(i, CONTROL_STATE.HELD)));
33
}

current-scripts/Demos/useful-scripts/scripts/control_manager_functions/control_manager_functions.gml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,12 @@ function add_player() {
33
ds_list_add(players, _new_player);
44
num_players++;
55
return _new_player;
6+
}
7+
8+
function get_player(_index) {
9+
if (ds_list_size(self.players) > _index) {
10+
return self.players[| _index];
11+
}
12+
13+
return noone;
614
}

current-scripts/Demos/useful-scripts/scripts/control_manager_structs/control_manager_structs.gml

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ enum CONTROL_TYPE {
1717
MAX
1818
}
1919

20+
enum CONTROL_STATE {
21+
HELD,
22+
PRESSED,
23+
RELEASED,
24+
MAX
25+
}
26+
2027
function ControlManagerPlayer() constructor {
2128
for (var i=0; i<CONTROLS.MAX; i++) {
2229
keyboard_map[i] = -1;
@@ -42,7 +49,7 @@ function ControlManagerPlayer() constructor {
4249
stick_deadzone = 0.1;
4350
stick_threshold = 0.5;
4451

45-
function set_control(_control_type, _control_source, _control, _value) {
52+
function set_control_map(_control_type, _control_source, _control, _value) {
4653
if (_control_type == CONTROL_TYPE.KEYBOARD) {
4754
keyboard_control_source[_control] = _control_source;
4855
keyboard_map[_control] = _value;
@@ -51,6 +58,34 @@ function ControlManagerPlayer() constructor {
5158
}
5259
}
5360

61+
function get_control_map(_control_type, _control) {
62+
if (_control_type == CONTROL_TYPE.KEYBOARD) {
63+
return {
64+
control_source: keyboard_control_source[_control],
65+
control: keyboard_map[_control]
66+
};
67+
} else if (_control_type == CONTROL_TYPE.GAMEPAD) {
68+
return {
69+
control_source: _control_type,
70+
control: gamepad_map[_control]
71+
};
72+
} else {
73+
return noone;
74+
}
75+
}
76+
77+
function get_control_state(_control, _control_state) {
78+
if (_control_state == CONTROL_STATE.HELD) {
79+
return ctrl_held[_control];
80+
} else if (_control_state == CONTROL_STATE.PRESSED) {
81+
return ctrl_pressed[_control];
82+
} else if (_control_state == CONTROL_STATE.RELEASED) {
83+
return ctrl_released[_control];
84+
} else {
85+
return noone;
86+
}
87+
}
88+
5489
function process_input(_control_manager) {
5590
prev_stick_input.x = stick_input.x;
5691
prev_stick_input.y = stick_input.y;
@@ -61,7 +96,7 @@ function ControlManagerPlayer() constructor {
6196
ctrl_released[i] = false;
6297
}
6398

64-
ctrl_any_pressed = false;
99+
ctrl_any_pressed = false;
65100

66101
if (keyboard_enabled) {
67102
for (var i=0; i<CONTROLS.MAX; i++) {

0 commit comments

Comments
 (0)