80 lines
2.0 KiB
Plaintext
80 lines
2.0 KiB
Plaintext
/*
|
|
文件名:Controller.nut
|
|
路径:User/Controller/Controller.nut
|
|
创建日期:2024-12-21 07:31
|
|
文件用途:控制器类
|
|
*/
|
|
class _GameController_ extends _Input_ {
|
|
|
|
//最新键码输入
|
|
|
|
|
|
KeyCode = null;
|
|
GameKeyCode = null;
|
|
GameKeyCodeCallback = null;
|
|
|
|
constructor() {
|
|
base.constructor();
|
|
GameKeyCodeCallback = {};
|
|
|
|
//建立键码表 按下flag全部为false
|
|
this.KeyCode = {};
|
|
foreach(value in getconsttable().KeyCode) {
|
|
this.KeyCode.rawset(value, false);
|
|
}
|
|
|
|
//建立游戏键码表
|
|
this.GameKeyCode = {};
|
|
foreach(Key, Value in getconsttable().CONTROLLER) {
|
|
this.GameKeyCode.rawset(Key, Value);
|
|
}
|
|
}
|
|
//系统对游戏的输入
|
|
function SystemInput(Code, Type) {
|
|
SetKeyCode(Code, Type);
|
|
}
|
|
|
|
//设定键码状态
|
|
function SetKeyCode(Code, Status) {
|
|
this.KeyCode[Code] = Status;
|
|
|
|
//只遍历有回调的键码
|
|
foreach(Code, Callback in GameKeyCodeCallback) {
|
|
//是否按下传递不同指令
|
|
if (GetGameKeyCode(Code)) {
|
|
Callback(true);
|
|
} else {
|
|
Callback(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
//获取键码状态
|
|
function GetKeyCode(Code) {
|
|
return this.KeyCode[Code];
|
|
}
|
|
|
|
//获取游戏键码状态
|
|
function GetGameKeyCode(Code) {
|
|
if (!(GameKeyCode.rawin(Code))) return false;
|
|
return GetKeyCode(GameKeyCode[Code]);
|
|
}
|
|
|
|
//注册游戏键码回调函数
|
|
function RegisterGameKeyCode(Code, Callback) {
|
|
GameKeyCodeCallback[Code] <- Callback;
|
|
}
|
|
|
|
//Proc逻辑
|
|
function Proc(Dt, GameLister) {
|
|
// //只遍历有回调的键码
|
|
// foreach(Code, Callback in GameKeyCodeCallback) {
|
|
// //是否按下传递不同指令
|
|
// if (GetGameKeyCode(Code)) {
|
|
// Callback(true);
|
|
// } else {
|
|
// Callback(false);
|
|
// }
|
|
// }
|
|
}
|
|
} |