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); | ||
|  |         //     } | ||
|  |         // } | ||
|  |     } | ||
|  | } |