Esempio n. 1
0
    private KMSelectable.OnInteractHandler clickTile(int i)
    {
        return(delegate
        {
            if (_selectedTile == i)
            {
                Audio.PlaySoundAtTransform("Selection", _layout.Tiles[i].Transform);
                _layout.Tiles[i].SetNormal();
                _selectedTile = null;
            }
            else if (!_layout.IsTileAvailable(i, _taken))
            {
                Debug.LogFormat(@"[Mahjong #{0}] You received a strike because you selected a tile ({1}) that was not available.", _moduleId, _layout.Tiles[i].Name);
                Module.HandleStrike();
            }
            else if (_selectedTile == null)
            {
                Audio.PlaySoundAtTransform("Selection", _layout.Tiles[i].Transform);
                _layout.Tiles[i].SetHighlighted();
                _selectedTile = i;
            }
            else if (i == _layout.Tiles[_selectedTile.Value].PairedWith)
            {
                // Valid pair! Eliminate
                Audio.PlaySoundAtTransform("Elimination", _layout.Tiles[i].Transform);
                Smoke1.transform.localPosition = _layout.Tiles[i].Transform.localPosition;
                Smoke1.Play();
                Smoke2.transform.localPosition = _layout.Tiles[_selectedTile.Value].Transform.localPosition;
                Smoke2.Play();
                Debug.LogFormat(@"[Mahjong #{0}] {1} and {2} correctly eliminated.", _moduleId, _layout.Tiles[_selectedTile.Value].Name, _layout.Tiles[i].Name);
                _layout.Tiles[i].GameObject.SetActive(false);
                _layout.Tiles[_selectedTile.Value].GameObject.SetActive(false);
                _taken[i] = true;
                _taken[_selectedTile.Value] = true;
                _selectedTile = null;

                if (_taken.All(t => t))
                {
                    Debug.LogFormat(@"[Mahjong #{0}] Module passed.", _moduleId);
                    Module.HandlePass();
                }
            }
            else
            {
                // Invalid pair. Strike.
                Debug.LogFormat(@"[Mahjong #{0}] {1} and {2} are not a valid pair. Strike.", _moduleId, _layout.Tiles[_selectedTile.Value].Name, _layout.Tiles[i].Name);
                Module.HandleStrike();
                _layout.Tiles[_selectedTile.Value].SetNormal();
                _selectedTile = null;
            }
            return false;
        });
    }