/// <summary> /// Processes user input. /// </summary> public override PlayerState ProcessInput(Board board, Point mouse) { base.ProcessInput(board, mouse); templateAffectedTiles = new List <Tile>(); validCast = false; if (MouseInfo.RightMousePressed) { return(new UnselectedPlayerState(player)); } if (HighlightedTile != null) { List <Position> tileCoords = TemplateService.GetAffectedTileCoordinates(HighlightedTile.BoardPosition, SelectedAbility.Template); templateAffectedTiles = board.GetTiles(tileCoords); } validCast = TargetValidationService.Validate(HighlightedTile, SelectedAbility.TargetType, player.PowerCaster); if (MouseInfo.LeftMousePressed) { SelectedAbility.Execute(HighlightedTile, templateAffectedTiles, player.PowerCaster); } return(this); }
/// <summary> /// Processes user input. /// </summary> public override PlayerState ProcessInput(Board board, Point mouse) { PlayerState result = base.ProcessInput(board, mouse); if (result != null) { return(result); } abilityPath = null; templateAffectedTiles = new List <Tile>(); validTarget = false; if (MouseInfo.RightMousePressed) { return(new SelectedPlayerState(player, SelectedUnit)); } if (HighlightedTile != null) { abilityPath = board.GetAbilityPath(SelectedUnit, HighlightedTile); List <Position> tileCoords = TemplateService.GetAffectedTileCoordinates(HighlightedTile.BoardPosition, SelectedAbility.Template); templateAffectedTiles = board.GetTiles(tileCoords); } validTarget = IsValidTarget(); if (MouseInfo.LeftMousePressed) { if (!IsValidTarget()) { eventManager.Notify(new UserAlertEvent("You cannot cast that there!")); } else if (!IsTargetInRange()) { eventManager.Notify(new UserAlertEvent("Target is not in range!")); } else { SelectedAbility.Execute(HighlightedTile, templateAffectedTiles, SelectedUnit); } } return(this); }