|  |  |  | using Entitas; | 
					
						
							|  |  |  | using UnityEngine; | 
					
						
							|  |  |  | using Game; | 
					
						
							|  |  |  | public class InputSystem : IExecuteSystem, IInitializeSystem | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public void Initialize() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public void Execute() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         BuildFunctionKey(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static void BuildFunctionKey() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         BuildPlayerAction(); | 
					
						
							|  |  |  |         if (!Util.IsControl()) return; | 
					
						
							|  |  |  |         BuildMove(); | 
					
						
							|  |  |  |         BuildJump(); | 
					
						
							|  |  |  |         BuildTest(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static void BuildTest() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (Input.GetKeyDown(KeyCode.I)) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             var master = Util.GetMaster(); | 
					
						
							|  |  |  |             // var castDir = master.move.moveDir; | 
					
						
							|  |  |  |             // castDir = new Vector3(castDir.x, 0, castDir.z);//忽略y | 
					
						
							|  |  |  |             // var rotf = Util.Vec3ToRot(castDir); | 
					
						
							|  |  |  |             // Util.CastEffect(GameConst.EffectHitKill, master.Pos(), rotf, targetEntity: master.ID()); | 
					
						
							|  |  |  |             // Util.SetTimeScaleEffect(0, 1, 0.8f); | 
					
						
							|  |  |  |             // Util.SetAberrationEffect(1, 0, 0.7f); | 
					
						
							|  |  |  |             // Util.SetFovEffect(0.9f, 1, 0.7f); | 
					
						
							|  |  |  |             // Util.EntityShake(master, 7); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // foreach (var item in Util.GetAllEnemies()) | 
					
						
							|  |  |  |             // { | 
					
						
							|  |  |  |             //     var entity = Util.GetEntity(item); | 
					
						
							|  |  |  |             //     entity.SetPos(master.Pos() + Vector3.up * 3); | 
					
						
							|  |  |  |             // } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static void BuildPlayerAction() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         foreach (var item in GameSetting.KeyMap) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             var functionKey = item.Key; | 
					
						
							|  |  |  |             if (Input.GetKeyDown(item.Value)) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 EventManager.Instance.SendEvent<PPlayerInput>(EEvent.PlayerInput, new PPlayerInput() | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     Key = functionKey, | 
					
						
							|  |  |  |                     Action = EKeyActionType.Press, | 
					
						
							|  |  |  |                 }); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (Input.GetKeyUp(item.Value)) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 EventManager.Instance.SendEvent<PPlayerInput>(EEvent.PlayerInput, new PPlayerInput() | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     Key = functionKey, | 
					
						
							|  |  |  |                     Action = EKeyActionType.Release, | 
					
						
							|  |  |  |                 }); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static void BuildMove() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         var leftPress = Input.GetKey(GameSetting.KeyMap[EFunctionKey.Left]); | 
					
						
							|  |  |  |         var rightPress = Input.GetKey(GameSetting.KeyMap[EFunctionKey.Right]); | 
					
						
							|  |  |  |         var upPress = Input.GetKey(GameSetting.KeyMap[EFunctionKey.Up]); | 
					
						
							|  |  |  |         var downPress = Input.GetKey(GameSetting.KeyMap[EFunctionKey.Down]); | 
					
						
							|  |  |  |         var horizonPress = leftPress != rightPress; | 
					
						
							|  |  |  |         var verticalPress = upPress != downPress; | 
					
						
							|  |  |  |         var command = EMoveCommand.Stop; | 
					
						
							|  |  |  |         var commandType = EMoveCommandType.Move; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (horizonPress && verticalPress) | 
					
						
							|  |  |  |             if (upPress) | 
					
						
							|  |  |  |                 command = leftPress ? EMoveCommand.UpLeft : EMoveCommand.UpRight; | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |                 command = leftPress ? EMoveCommand.DownLeft : EMoveCommand.DownRight; | 
					
						
							|  |  |  |         else if (horizonPress || verticalPress) | 
					
						
							|  |  |  |             if (horizonPress) | 
					
						
							|  |  |  |                 command = leftPress ? EMoveCommand.Left : EMoveCommand.Right; | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |                 command = upPress ? EMoveCommand.Up : EMoveCommand.Down; | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             commandType = EMoveCommandType.Stop; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         SendMoveInputEvent(command, commandType); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static void BuildJump() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         var jumpPress = Input.GetKeyDown(GameSetting.KeyMap[EFunctionKey.Jump]); | 
					
						
							|  |  |  |         if (jumpPress) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             SendMoveInputEvent(EMoveCommand.Jump, EMoveCommandType.FunctionKey); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         var jumpRelease = Input.GetKeyUp(GameSetting.KeyMap[EFunctionKey.Jump]); | 
					
						
							|  |  |  |         if (jumpRelease) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             SendMoveInputEvent(EMoveCommand.JumpRelease, EMoveCommandType.FunctionKey); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static void SendMoveInputEvent(EMoveCommand command, EMoveCommandType commandType) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         var entityID = Util.GetMasterID(); | 
					
						
							|  |  |  |         EventManager.Instance.SendEvent(EEvent.EntityMoveInput, new PEntityMoveInput() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             EntityID = entityID, | 
					
						
							|  |  |  |             Command = command, | 
					
						
							|  |  |  |             CommandType = commandType, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |