| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- global.input_consumed = {};
- if !(variable_global_exists("handle_priority")) global.handle_priority = [1]
- var _max_priority = 0;
- for(var i = 0; i < array_length(global.handle_priority); i++){
- _max_priority = max(_max_priority, global.handle_priority[i])
- }
- global.current_priority = _max_priority
- /// @desc 尝试对按键进行消费
- /// @param {Constant.VirtualKey|Real} _key 检测的键盘按键
- /// @param {Constant.Real} _tier 当前句柄的优先级
- function _try_input_consume(_key, _tier){
- //如果低于最高优先级 且 非系统级优先级( -1 ), 则拒绝访问
- if(_tier < global.current_priority && _tier != -1) return false;
-
- //同一帧内已经被同级句柄/更高级句柄访问( 消费 ), 则拒绝访问
- var _key_id = string(_key);
- if (struct_exists(global.input_consumed, _key_id)) return false;
-
- return true;
- }
- /// @desc 强制消费给定键盘按键
- /// @param {Constant.VirtualKey|Real} _key 检测的键盘按键
- function _force_input_consume(_key){
- var _id = key_get_id(_key);
- global.input_consumed[$ string(_id)] = true;
- }
- /// @desc 优雅地检测此帧某给定键盘按键是否被按住
- /// @param {Constant.VirtualKey|Real} _key 检测的键盘按键
- /// @param {Constant.Real} _tier 当前句柄的优先级
- function kc(_key, _tier = 0)
- {
- var _id = key_get_id(_key);
- if (_try_input_consume(_id, _tier) && keyboard_check(_id)) {
- //判定成功则对按键进行消费
- global.input_consumed[$ string(_id)] = true;
- return true;
- }
- return false;
- }
- /// @desc 优雅地检测此帧某给定键盘按键是否被按下
- /// @param {Constant.VirtualKey|Real} _key 检测的键盘按键
- /// @param {Constant.Real} _tier 当前句柄的优先级
- function kcp( _key, _tier = 0) {
- var _id = key_get_id(_key);
- if (_try_input_consume(_id, _tier) && keyboard_check_pressed(_id)) {
- //判定成功则对按键进行消费
- global.input_consumed[$ string(_id)] = true;
- return true;
- }
- return false;
- }
- /// @desc 优雅地检测此帧某给定键盘按键是否被松开
- /// @param {Constant.VirtualKey|Real} _key 检测的键盘按键
- /// @param {Constant.Real} _tier 当前句柄的优先级
- function kcr(_key, _tier = 0) {
- var _id = key_get_id(_key);
- if (_try_input_consume(_id, _tier) && keyboard_check_released(_id)) {
- //判定成功则对按键进行消费
- global.input_consumed[$ string(_id)] = true;
- return true;
- }
- return false;
- }
|