public void UncoverTile(GameObject tile)
 {
     if (gameState != MemoryTileGameState.Guess)
     {
         return;
     }
     tile.GetComponent <MemoryTile>().ToggleColor(true);
     if (_targetTiles.Contains(tile))
     {
         _targetTiles.Remove(tile);
         if (_targetTiles.Count == 0)
         {
             gameState = MemoryTileGameState.Success;
             SaveSystem.UpdateMiniGameData(true);
             LevelLoader.Instance.LoadMainGame();
         }
     }
     else
     {
         gameState = MemoryTileGameState.Failure;
         ToggleAllTileColor(true);
         SaveSystem.UpdateMiniGameData(false);
         LevelLoader.Instance.LoadMainGame();
     }
 }
        public IEnumerator HideTile(float secToWait)
        {
            yield return(new WaitForSeconds(secToWait));

            gameState = MemoryTileGameState.Guess;
            ToggleAllTileColor(false);
        }
        public IEnumerator ShowHint(float hintDuration)
        {
            yield return(new WaitForSeconds(hintDuration));

            gameState = MemoryTileGameState.ShowHint;
            ToggleAllTileColor(true);
            StartCoroutine(HideTile(5));
        }
        // Start is called before the first frame update
        void Start()
        {
            gameState    = MemoryTileGameState.Hidden;
            _tileGroup   = new List <GameObject>();
            _targetTiles = new List <GameObject>();
            foreach (Transform child in tileParent.transform)
            {
                _tileGroup.Add(child.gameObject);
            }

            for (int i = 0; i < NumOfTilesToRemember; i++)
            {
                int randomNum = Random.Range(0, _tileGroup.Count);
                while (_targetTiles.Contains(_tileGroup[randomNum]))
                {
                    randomNum = Random.Range(0, _tileGroup.Count);
                }
                _targetTiles.Add(_tileGroup[randomNum]);
            }

            foreach (GameObject tile in _tileGroup)
            {
                tile.GetComponent <MemoryTile>().hiddenColor  = hiddenColor;
                tile.GetComponent <MemoryTile>().surfaceColor = surfaceColor;
            }

            foreach (GameObject targetTile in _targetTiles)
            {
                targetTile.GetComponent <MemoryTile>().hiddenColor = hiddenColorForTarget;
            }

            foreach (GameObject tile in _tileGroup)
            {
                tile.GetComponent <MemoryTile>().ToggleColor(false);
            }
            StartCoroutine(ShowHint(1));
        }