@@ -22,6 +22,18 @@ function menu_base_init(_config) {
2222 keyboard_icons_index = 0 ;
2323 gamepad_icons_index = 0 ;
2424 control_icons_scale = _config.control_icons_scale ;
25+ keyboard_icons_width = array_map (keyboard_icons, function (_sprite) {
26+ return sprite_get_width (_sprite);
27+ });
28+ gamepad_icons_width = array_map (gamepad_icons, function (_sprite) {
29+ return sprite_get_width (_sprite);
30+ });
31+ keyboard_icons_half_height = array_map (keyboard_icons, function (_sprite) {
32+ return sprite_get_height (_sprite) / 2 ;
33+ });
34+ gamepad_icons_half_height = array_map (gamepad_icons, function (_sprite) {
35+ return sprite_get_height (_sprite) / 2 ;
36+ });
2537}
2638
2739function menu_base_start_scroll_up () {
@@ -37,6 +49,7 @@ function menu_base_start_scroll_down() {
3749// / @func handle_selectable_confirm(item)
3850// / @param {MenuSelectable} item
3951function handle_selectable_confirm (_item) {
52+ if (!_item.enabled ) return ;
4053 if (script_exists (_item.on_confirm_func )) {
4154 script_execute (_item.on_confirm_func , _item.on_confirm_args );
4255 }
@@ -49,6 +62,7 @@ function handle_selectable_confirm(_item) {
4962// / @func handle_spinner_confirm(item)
5063// / @param {MenuSpinner} item
5164function handle_spinner_confirm (_item) {
65+ if (!_item.enabled ) return ;
5266 if (script_exists (_item.on_confirm_func )) {
5367 script_execute (_item.on_confirm_func , _item.cur_index , _item.values [_item.cur_index ], _item.on_confirm_args );
5468 }
@@ -62,6 +76,7 @@ function handle_spinner_confirm(_item) {
6276// / @param {MenuSpinner} item
6377// / @param {number} delta -1 or 1
6478function handle_spinner_change (_item, _delta) {
79+ if (!_item.enabled ) return ;
6580 var _num_values = array_length (_item.values );
6681 _item.cur_index = wrap (_item.cur_index +_delta, 0 , _num_values);
6782
@@ -84,6 +99,7 @@ function handle_spinner_change(_item, _delta) {
8499// / @param {MenuKeyConfig} item
85100// / @param {number} delta
86101function handle_key_config_select (_item, _delta) {
102+ if (!_item.enabled ) return ;
87103 var _num_values = KEYBOARD_MAX_BINDINGS_PER_CONTROL + GAMEPAD_MAX_BINDINGS_PER_CONTROL;
88104 var _last_pressed = control_state.control_any_pressed ();
89105 var _binding_info;
@@ -102,6 +118,7 @@ function handle_key_config_select(_item, _delta) {
102118// / @func handle_key_config_confirm(item)
103119// / @param {MenuKeyConfig} item
104120function handle_key_config_confirm (_item) {
121+ if (!_item.enabled ) return ;
105122 var _last_pressed = control_state.control_any_pressed ();
106123
107124 if (discovery_mode == MENU_DISCOVERY_MODE.NONE ) {
@@ -127,7 +144,8 @@ function handle_key_config_confirm(_item) {
127144}
128145
129146// / @func handle_key_config_cancel()
130- function handle_key_config_cancel () {
147+ function handle_key_config_cancel (_item) {
148+ if (!_item.enabled ) return ;
131149 if (discovery_mode == MENU_DISCOVERY_MODE.SELECTING ) {
132150 discovery_mode = MENU_DISCOVERY_MODE.NONE ;
133151 self.active_key_config = noone;
@@ -136,6 +154,7 @@ function handle_key_config_cancel() {
136154
137155// / @func handle_key_config_delete()
138156function handle_key_config_delete (_item) {
157+ if (!_item.enabled ) return ;
139158 var _binding_info = _item.get_binding_info ();
140159 if (_binding_info.binding_locked ) return ;
141160
@@ -153,12 +172,16 @@ function handle_key_config_delete(_item) {
153172
154173 _item[$ _binding_key][_control_index] = -1 ;
155174 player_controller.remove_binding (_control_type, _item.control , _control_index);
156-
157175 discovery_mode = MENU_DISCOVERY_MODE.NONE ;
176+ if (active_key_config) {
177+ active_key_config.discovery_binding_info = false ;
178+ }
179+ self.active_key_config = noone;
158180}
159181
160182// / @func handle_key_config_discovery()
161- function handle_key_config_discovery () {
183+ function handle_key_config_discovery (_item) {
184+ if (!_item.enabled ) return ;
162185 if (control_state.pressed_state [MENU_CONTROLS.CANCEL ]) {
163186 discovery_mode = MENU_DISCOVERY_MODE.SELECTING ;
164187 active_key_config.discovery_binding_info = false ;
@@ -198,6 +221,8 @@ function handle_key_config_discovery() {
198221
199222function menu_base_draw_item (_item, _x, _y) {
200223 var _type = _item.types [| ds_list_size (_item.types )-1 ];
224+ if (_item.enabled ) draw_set_colour (c_white);
225+ else draw_set_colour (c_gray);
201226
202227 switch (_type) {
203228 case " item" :
@@ -224,14 +249,21 @@ function menu_base_draw_item(_item, _x, _y) {
224249 for (var i=0 ; i<KEYBOARD_MAX_BINDINGS_PER_CONTROL; i++) {
225250 if (use_control_icons) {
226251 var _item_icon_index = _item.get_icon_index (CONTROL_TYPE.KEYBOARD_AND_MOUSE , i);
227- var _blend = _item.locked_kbm_bindings [i] ? c_grey : c_white;
228- draw_sprite_ext (keyboard_icons[keyboard_icons_index], _item_icon_index, _cur_x, _y + control_icons_y_offset * control_icons_scale, control_icons_scale, control_icons_scale, 0 , _blend, menu_alpha.v );
252+ draw_sprite_ext (keyboard_icons[keyboard_icons_index], _item_icon_index, _cur_x, _y + control_icons_y_offset * control_icons_scale, control_icons_scale, control_icons_scale, 0 , c_white, menu_alpha.v );
253+ if (_item.locked_kbm_bindings [i]) {
254+ draw_sprite_ext (lock_sprite, 0 ,
255+ _cur_x + keyboard_icons_width[keyboard_icons_index] * control_icons_scale + 24 ,
256+ _y + (control_icons_y_offset + keyboard_icons_half_height[keyboard_icons_index]) * control_icons_scale,
257+ control_icons_scale, control_icons_scale, 0 , c_white, menu_alpha.v
258+ );
259+ }
229260 } else {
230261 var _item_value = _item.get_text_value (CONTROL_TYPE.KEYBOARD_AND_MOUSE , i);
231262 if (_item.locked_kbm_bindings [i]) {
232263 draw_set_colour (c_gray);
233264 } else {
234- draw_set_colour (c_white);
265+ if (_item.enabled ) draw_set_colour (c_white);
266+ else draw_set_colour (c_gray);
235267 }
236268 draw_text (_cur_x, _y, _item_value);
237269 }
@@ -252,14 +284,21 @@ function menu_base_draw_item(_item, _x, _y) {
252284 for (var i=0 ; i<GAMEPAD_MAX_BINDINGS_PER_CONTROL; i++) {
253285 if (use_control_icons) {
254286 var _item_icon_index = _item.get_icon_index (CONTROL_TYPE.GAMEPAD , i);
255- var _blend = _item.locked_gamepad_bindings [i] ? c_grey : c_white;
256- draw_sprite_ext (gamepad_icons[gamepad_icons_index], _item_icon_index, _cur_x, _y + control_icons_y_offset * control_icons_scale, control_icons_scale, control_icons_scale, 0 , _blend, menu_alpha.v );
287+ draw_sprite_ext (gamepad_icons[gamepad_icons_index], _item_icon_index, _cur_x, _y + control_icons_y_offset * control_icons_scale, control_icons_scale, control_icons_scale, 0 , c_white, menu_alpha.v );
288+ if (_item.locked_gamepad_bindings [i]) {
289+ draw_sprite_ext (lock_sprite, 0 ,
290+ _cur_x + gamepad_icons_width[gamepad_icons_index] * control_icons_scale + 24 ,
291+ _y + (control_icons_y_offset + gamepad_icons_half_height[gamepad_icons_index]) * control_icons_scale,
292+ control_icons_scale, control_icons_scale, 0 , c_white, menu_alpha.v
293+ );
294+ }
257295 } else {
258296 var _item_value = _item.get_text_value (CONTROL_TYPE.GAMEPAD , i);
259297 if (_item.locked_gamepad_bindings [i]) {
260298 draw_set_colour (c_gray);
261299 } else {
262- draw_set_colour (c_white);
300+ if (_item.enabled ) draw_set_colour (c_white);
301+ else draw_set_colour (c_gray);
263302 }
264303
265304 draw_text (_cur_x, _y, _item_value);
0 commit comments