public ActionInformation(Func<Tile, ActionAnimationScript> script, TileSelector abilityRange, Func<Tile, TileSelector> abilityAreaOfEffect, ActionType actionType) { Script = script; AbilityRange = abilityRange; AbilityAreaOfEffect = abilityAreaOfEffect; ActionType = actionType; }
public static TileSelector CircularSelector(Level level, Tile currentTile, int radius) { var selector = new TileSelector(); for (int i = -radius; i <= radius; i++) { for (int j = -radius; j <= radius; j++) { if (Math.Abs(i) + Math.Abs(j) <= radius) { Tile t = level.GetTileAt(currentTile.XCoord + j, currentTile.YCoord + i); if (t != null) selector.AddValidTile(t); } } } return selector; }
public static TileSelector StandardMovementTileSelector(Level level, Tile currentTile, ActorBase actor) { var selector = new TileSelector(); int movementRange = actor.CurrentStats.MovementRange; for (int i = -movementRange; i <= movementRange; i++) { for (int j = -movementRange; j <= movementRange; j++) { if (Math.Abs(i) + Math.Abs(j) <= movementRange) { Tile t = level.GetTileAt(currentTile.XCoord + j, currentTile.YCoord + i); if (t != null && t.ActorInTile == null) { if (AStar.CalculateAStarPath(currentTile, t, level, actor) != null) { selector.AddValidTile(t); } } } } } return selector; }
public void SwitchToConfirming() { IsConfirming = true; _targetedTile = GameState.FindHighlightedTile(); _targetedAoe = _actionInformation.AbilityAreaOfEffect(_targetedTile); var validTiles = _targetedAoe.ValidTiles(); foreach (var aoeTile in validTiles) { aoeTile.Tint = GetTint(_actionInformation.ActionType, true); } }