Пример #1
0
        bool recurse(int iter, Vector3 direction, Vector3 p, Quaternion rotation, PropOverlay overlay, Room room, PropUnitCollection propUnitCollection)
        {
            if (iter == 0)
            {
                return(true);
            }



            var size   = rotation * overlay.size;
            var points = new List <Vector3>();
            var allocateBlackSpaceSucceeded = allocateBlackSpace(room, overlay, size, p, points);


            var totalblack = getListOfPointsOfColor(Color.black).ConvertAll(x => x.V).ToList();


            totalblack.AddRange(propUnitCollection.getListOfPoints());
            var totalWhite = grid.Keys.Except(totalblack).ToList();
            var islegal    = check(grid.Keys.ToList(), totalWhite, totalblack);

            if (!islegal)
            {
                GameObject.Instantiate(g3).transform.position = p;
                grid[p].changeColor(Color.white);
                return(false);
            }

            if (!allocateBlackSpaceSucceeded || points.Count == 0)
            {
                return(true);
            }

            var propUnit = new PropUnit(points, overlay);

            propUnitCollection.list.Add(propUnit);


            recurse(iter - 1, direction, p + direction, rotation, overlay, room, propUnitCollection);

            return(true);
        }
Пример #2
0
 public bool Equals(PropUnit other)
 {
     return(this.b == other.b && object.Equals(this.overlay, other.overlay));
 }