Exemple #1
0
    private IEnumerator WaitWildCard(WildCardMarker marker, List <TreeControl> trees, Vector2 point)
    {
        yield return(marker.Animate());

        foreach (TreeControl addedTree in trees)
        {
            addedTree.AddPoint(GridToTreeCoords(point, addedTree));
        }
    }
Exemple #2
0
 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));
         }
     }
 }
Exemple #3
0
    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);
        }
    }