public void Start() { PlayerFactory f = new PlayerFactory(); PlayerProduct p = f.CreatePlayer(0, 0, bornPoint.transform.position); ICameraService m_cc = new CameraService(camera); ServiceLocator.prodive(m_cc); // 通过工厂创建时技能的释放过程。 // 那技能的加载就是将技能命令提取出来。 IInputEventService m_ec = new InputEventService(); m_ec.SetKeyMapping(); ServiceLocator.prodive(m_ec); IMapService m_mpc = new MapService(terrain); ServiceLocator.prodive(m_mpc); // 控制器分开比较好,根据不同类型的命令分别写 IMoveControlService m_ic = new MoveControlService(); m_ic.AddCommand(IInputEventService.VertualKey.MOVE_FORWARD, new MoveForwardCommandImpl()); m_ic.AddCommand(IInputEventService.VertualKey.MOVE_BACK, new MoveBackCommandImpl()); m_ic.AddCommand(IInputEventService.VertualKey.MOVE_LEFT, new MoveLeftCommandImpl()); m_ic.AddCommand(IInputEventService.VertualKey.MOVE_RIGHT, new MoveRightCommandImpl()); m_ic.AddCommand(IInputEventService.VertualKey.MOVE_JUMP, new MoveJumpCommandImpl()); ServiceLocator.prodive(m_ic); IMouseControlService m_mc = new MouseControlService(); m_mc.AddCommand(IInputEventService.VertualKey.MOUSE_RIGHTBUTTON_DOWN, new CameraRightCommandImpl()); m_mc.AddCommand(IInputEventService.VertualKey.MOUSE_LEFTBUTTON_DOWN, new CameraLeftCommandImpl()); m_mc.AddCommand(IInputEventService.VertualKey.MOUSE_MIDBUTTON_DOWN, new CameraZoomCommandImpl()); ServiceLocator.prodive(m_mc); IActionControlService m_sc = new ActionControlService(); m_sc.AddCommand(IInputEventService.VertualKey.NUM_1, ACTION_ID.ACTION_RangeAttack1); m_sc.AddCommand(IInputEventService.VertualKey.NUM_2, ACTION_ID.ACTION_RangeAttack2); m_sc.AddCommand(IInputEventService.VertualKey.NUM_3, ACTION_ID.ACTION_SpecialAttack1); m_sc.AddCommand(IInputEventService.VertualKey.NUM_4, ACTION_ID.ACTION_SpecialAttack2); m_sc.AddCommand(IInputEventService.VertualKey.NUM_5, ACTION_ID.ACTION_Uppercut); m_sc.AddCommand(IInputEventService.VertualKey.NUM_6, ACTION_ID.ACTION_DasheBackward); m_sc.AddCommand(IInputEventService.VertualKey.NUM_7, ACTION_ID.ACTION_DasheForward); m_sc.AddCommand(IInputEventService.VertualKey.NUM_8, ACTION_ID.ACTION_Kick); m_sc.AddCommand(IInputEventService.VertualKey.NUM_9, ACTION_ID.ACTION_MoveAttack1); ServiceLocator.prodive(m_sc); }
/// <summary> /// 执行脚本动作方法 /// </summary> /// <param name="bl">The bl.</param> private void TimeLineRun(object bl) { for (int i = 0; i < this.Count; i++) { MouseControlService.ExecuteAction(this[i]); if (i + 1 == this.Count) { break; } TimeSpan splitSpan = TimeSpan.Parse(this[i + 1].ActionTime).Subtract(TimeSpan.Parse(this[i].ActionTime)); Thread.Sleep(splitSpan); } IsRun = false; }
private void AddMouseControlService() { var directionHelper = ServiceProvider.GetService <DirectionHelper>(); var movementHelper = ServiceProvider.GetService <MovementEventRepository>(); var pickupEventRepository = ServiceProvider.GetService <PickupEventRepository>(); var interactEventRepository = ServiceProvider.GetService <InteractWithNpcEventRepository>(); var finishDialogueRepository = ServiceProvider.GetService <FinishDialogueEventRepository>(); var interactWithSceneTransferRepository = ServiceProvider.GetService <InteractWithSceneTransferEventRepository>(); var startDialogueEventRepository = ServiceProvider.GetService <StartDialogueEventRepository>(); var newTextEventRepository = ServiceProvider.GetService <NewTextEventRepository>(); var playerConfig = ServiceProvider.GetService <PlayerConfig>(); var player = GameObject; var service = new MouseControlService(player.transform, movementHelper, directionHelper, pickupEventRepository, interactEventRepository, newTextEventRepository, finishDialogueRepository, interactWithSceneTransferRepository, startDialogueEventRepository, playerConfig); Services.Add(service); }