private IEnumerator WaitWildCard(WildCardMarker marker, List <TreeControl> trees, Vector2 point) { yield return(marker.Animate()); foreach (TreeControl addedTree in trees) { addedTree.AddPoint(GridToTreeCoords(point, addedTree)); } }
private void AddToTrees(List <TreeControl> trees, Marker marker, Vector2 point) { if (marker.color == TreeControl.TreeColor.WILDCARD) { WildCardMarker wildMarker = (WildCardMarker)marker; StartCoroutine(WaitWildCard(wildMarker, trees, point)); } else { foreach (TreeControl addedTree in trees) { addedTree.AddPoint(GridToTreeCoords(point, addedTree)); } } }
private void AddPoint(Vector2 point, Marker marker) { int x = (int)point.x; int y = (int)point.y; TreeControl.TreeColor color = marker.color; if (y > 0) { HashSet <TreeControl> added = new HashSet <TreeControl> (); if (CanAdd(x - 1, y, color)) { added.Add(pointsToTrees [x - 1, y]); } if (CanAdd(x + 1, y, color)) { added.Add(pointsToTrees [x + 1, y]); } if (CanAdd(x, y - 1, color)) { added.Add(pointsToTrees [x, y - 1]); } List <TreeControl> addingList = new List <TreeControl>(added); if (color == TreeControl.TreeColor.WILDCARD) { Dictionary <TreeControl.TreeColor, List <TreeControl> > colorsToTrees = new Dictionary <TreeControl.TreeColor, List <TreeControl> >(); foreach (TreeControl treeControl in added) { if (!colorsToTrees.ContainsKey(treeControl.color)) { colorsToTrees[treeControl.color] = new List <TreeControl>(); } colorsToTrees[treeControl.color].Add(treeControl); } List <TreeControl.TreeColor> colorsList = new List <TreeControl.TreeColor>(colorsToTrees.Keys); WildCardMarker wildMarker = (WildCardMarker)marker; TreeControl.TreeColor wildColor = wildMarker.SetColor(colorsList); addingList = colorsToTrees[wildColor]; } if (addingList.Count > 1) { foreach (TreeControl treeControl in addingList) { GameControl.animationLock.Inc(); deletingSet.Add(treeControl); } AddToTrees(addingList, marker, point); } else { TreeControl addedTree = addingList [0]; GameControl.animationLock.Inc(); AddToTrees(addingList, marker, point); if (!addingSet.ContainsKey(addedTree)) { addingSet[addedTree] = new List <int[]>(); } addingSet[addedTree].Add(new int[] { x, y }); } } else if (color != TreeControl.TreeColor.WILDCARD) { GameControl.animationLock.Inc(); MakeTree(x, color); } }