MultiTile GetRandomMultiTile(Size size, MapVisualsSpecification spec)
        {
            int       terminator = 0;
            Tile      tile       = Global.instance.currentMap.board[Random.Range(spec.minDistanceToShortSide, Global.instance.currentMap.mapWidth - spec.minDistanceToShortSide), Random.Range(spec.minDistanceToLongSide, Global.instance.currentMap.mapHeight - spec.minDistanceToLongSide)];
            MultiTile position   = MultiTile.Create(tile, size);

            while (IsMultiTileLegal(position, spec) == false)
            {
                terminator++;
                tile     = Global.instance.currentMap.board[Random.Range(spec.minDistanceToShortSide, Global.instance.currentMap.mapWidth - spec.minDistanceToShortSide), Random.Range(spec.minDistanceToLongSide, Global.instance.currentMap.mapHeight - spec.minDistanceToLongSide)];
                position = MultiTile.Create(tile, size);
                if (terminator == 100)
                {
                    return(null);
                }
            }

            return(position);
        }
 bool IsMultiTileLegal(MultiTile position, MapVisualsSpecification spec)
 {
     return(position.IsEmpty() && (spec.needsExtraSpace == false || HasExtraSpace(position)));
 }