private void ReadBoard()
    {
        var tilemaps = _grid.GetComponentsInChildren <Tilemap>();

        foreach (var tileMap in tilemaps)
        {
            if (tileMap.name == "Board")
            {
                _board = tileMap;
                break;
            }
        }

        if (_board == null)
        {
            throw new Exception("No Board tilemap found");
        }

        _board.CompressBounds();

        foreach (var position in _board.cellBounds.allPositionsWithin)
        {
            if (_board.GetTile(position) != null)
            {
                _boardTilesCubeCoordinates.Add(CoordinateUtils.OffsetToCube(position));
            }
        }
    }
Beispiel #2
0
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 pos          = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            var     board        = GridManager.Instance.Board;
            var     tilePosition = board.WorldToCell(pos);
            var     tile         = board.GetTile(tilePosition);

            if (tile != null)
            {
                GameManager.Instance.TileClicked(CoordinateUtils.OffsetToCube(tilePosition));
            }
        }
    }
    private IEnumerator SpawnStartingGems()
    {
        var     tilemaps       = _grid.GetComponentsInChildren <Tilemap>();
        Tilemap startingPoints = null;

        foreach (var tileMap in tilemaps)
        {
            if (tileMap.name == "StartingPoints")
            {
                startingPoints = tileMap;
            }
        }

        if (startingPoints == null)
        {
            throw new Exception("No StartingPoints tilemap found");
        }

        startingPoints.CompressBounds();

        var coroutines = new List <Coroutine>();

        foreach (var position in startingPoints.cellBounds.allPositionsWithin)
        {
            var cubeCoord = CoordinateUtils.OffsetToCube(position);

            if (startingPoints.GetTile(position) == _redGemTile)
            {
                coroutines.Add(StartCoroutine(GemPlacementManager.Instance.PutGem(GemType.Red, cubeCoord)));
            }
            if (startingPoints.GetTile(position) == _blueGemTile)
            {
                coroutines.Add(StartCoroutine(GemPlacementManager.Instance.PutGem(GemType.Blue, cubeCoord)));
            }
        }

        Destroy(startingPoints.gameObject);

        EffectsManager.Instance.PlayAppearSound();
        foreach (var coroutine in coroutines)
        {
            yield return(coroutine);
        }

        GameManager.Instance.BoardInitialized();
    }