public override void OnRegister() { base.OnRegister(); HoveredTileChangeSignal.AddListener(OnHighlightPositionChange); HoverTileEnableSignal.AddListener(OnHighlightEnable); HoverTileDisableSignal.AddListener(OnHighlightDisable); ClearHighlightSignal.AddListener(OnClearHighlight); MapHighlightSignal.AddListener(OnHighlight); }
public override void Execute() { var map = Model.Map; if (map == null) { return; } if (Model.State == BattleUIState.SelectingMoveLocation) { var combatant = Model.SelectedCombatant; var moveRange = combatant.GetAttribute(Attribute.AttributeType.Move).Value; var destination = Position.GridCoordinates; var filter = PathfindingUtils.GetCombatantTileFilter(combatant); var path = map.FindPath(combatant.Position, destination, filter); if (path == null || path.Count - 1 > moveRange) { PathUnavailableSignal.Dispatch(); Model.CurrentMovementPath = null; } else { PathReadySignal.Dispatch(path); Model.CurrentMovementPath = new MovementPath(path, Model.SelectedCombatant); } } else if (Model.State != BattleUIState.Fighting || Model.State != BattleUIState.CombatantMoving) { if (map.IsBlockedByEnvironment(Position.GridCoordinates)) { HoveredTileChangeSignal.Dispatch(new Vector2(float.MaxValue, float.MaxValue)); } else { Model.HoveredTile = Position.GridCoordinates; HoveredTileChangeSignal.Dispatch(Position.WorldCoordinates); } } }