public static void ShowActionRangeCursors(Cursor cursor, int actionIndex) { Unit unit = Unit.Subject(); Unit.Coordinate projectedCoordinate = unit.ProjectedCoordinate(); int unitxPos = projectedCoordinate.xPos; int unitzPos = projectedCoordinate.zPos; UnitAction action = unit.Actions()[actionIndex].GetComponent <UnitAction>(); List <Cursor> tiles = new List <Cursor>(); int xPos = cursor.xPos; int zPos = cursor.zPos; { if (action.CursorMode() == UnitAction.CursorModes.Radial) { if (action.RadialDistance() > 0) { tiles = Helpers.GetRadialTiles(xPos, zPos, action.RadialDistance(), 1, true); } } else { tiles = Helpers.GetLineTiles(unitxPos, unitzPos, xPos, zPos, action.LineDistance()); } } foreach (Cursor tile in tiles) { if (IsValidTarget(Unit.Subject(), action, tile, xPos, zPos)) { tile.SetAttackInRange(); } } }