public void VisualizeAim(Actor actor) { if (!WaitingForInput) { return; } if (_mouseMove != null && _aimVisualization == null) { _aimVisualization = actor.Being.Equipment.GetMain().GetVisualization(actor, _mouseMove.NewPos); actor.MainBus.Send(new ParticleEvent(_aimVisualization)); } if (_mouseMove != null) { _aimVisualization.UpdateTarget(_mouseMove.NewPos); } }
public override ActorAction GetNextAction(Actor actor) { if (!actor.ReadyToAct()) { return(null); } WaitingForInput = true; if (_input == null) { return(null); } Direction dir = null; int key = _input.KeyCode; if (key == _joystick.UpCode) { dir = Direction.UP; } else if (key == _joystick.RightCode) { dir = Direction.RIGHT; } else if (key == _joystick.DownCode) { dir = Direction.DOWN; } else if (key == _joystick.LeftCode) { dir = Direction.LEFT; } if (dir == null) { return(null); } WaitingForInput = false; _input = null; _aimVisualization?.Stop(); _aimVisualization = null; if (actor.Parent.CurrentMap.GetObject(actor.Parent.Position + dir)?.GetComponent <IInteractable>() is IInteractable interactable) { return(new InteractAction(actor, interactable)); } if (actor.Parent.CurrentMap.GetObject(actor.Parent.Position + dir) != null && actor.Being.Equipment.GetMain().CanUse(actor, actor.Parent.Position + dir)) { return(new UseAction(actor, actor.Parent.Position + dir, actor.Being.Equipment.GetMain())); } if (actor.Parent.CurrentMap.GetObject(actor.Parent.Position + dir) != null && !actor.Parent.CurrentMap.GetObject(actor.Parent.Position + dir).IsWalkable) { return(null); } return(new MoveAction(actor, dir)); }