/// <summary> /// Checks if adjacent neighbors have the same color as this one. /// </summary> /// <returns>Adjacent neighbors with same color. (Includes himself!)</returns> public List <HexagonController> GetAdjacentNeighborsWithSameColor() { var matches = new List <HexagonController>(); var values = Enum.GetValues(typeof(Direction)).Cast <Direction>().ToList(); for (var i = 0; i < values.Count; i++) { var firstDir = values[i]; var secondDir = i == values.Count - 1 ? values[0] : values[i + 1]; var firstController = HexagonManager.Instance.GetHexagonController(Identifier + ConvertDirectionToIdentifier(firstDir)); var secondController = HexagonManager.Instance.GetHexagonController(Identifier + ConvertDirectionToIdentifier(secondDir)); if (firstController && secondController && ColorManager.CompareColors(firstController.Color, secondController.Color, Color)) { matches.Add(firstController); matches.Add(secondController); } } matches.Add(this); return(matches); }
public List <HexagonController> GetControllersToDestroy() { var hexagonsToDestroy = HexagonManager.Instance.HexagonControllers .Where(controller => ColorManager.CompareColors(controller.Color, Color)).ToList(); hexagonsToDestroy.Add(this); return(hexagonsToDestroy); }
/// <summary> /// Checks neighbor hexagons and returns a list of excluded colors /// to prevent points at start. /// </summary> /// <returns>Excluded colors</returns> public List <Color> GetColorsToExclude() { var colorsToExclude = new List <Color>(); var neighborhoods = FindAllNeighborhoodControllers(); for (var i = 0; i < neighborhoods.Count; i++) { var first = neighborhoods[i]; var second = i == neighborhoods.Count - 1 ? neighborhoods[0] : neighborhoods[i + 1]; if (ColorManager.CompareColors(first.Color, second.Color)) { colorsToExclude.Add(first.Color); } } return(colorsToExclude); }