Example #1
0
        public void AddMeld(OpenMeld meld)
        {
            var prefab       = SelectPrefab(meld);
            var meldObj      = Instantiate(prefab, transform);
            var meldInstance = meldObj.GetComponent <MeldInstance>();

            meldObj.transform.localPosition = new Vector3(0, 0, -offset);
            meldInstance.SetMeld(meld);
            offset += meldInstance.MeldWidth + Gap;
        }
Example #2
0
        public void Kong(int playerIndex, OpenMeld kong)
        {
            var kongState = new PlayerKongState
            {
                CurrentRoundStatus = CurrentRoundStatus,
                CurrentPlayerIndex = playerIndex,
                MahjongSet         = mahjongSet,
                Kong = kong
            };

            StateMachine.ChangeState(kongState);
        }
Example #3
0
 private GameObject SelectPrefab(OpenMeld meld)
 {
     if (meld.Side == MeldSide.Self)
     {
         return(SelfKongPrefabs);
     }
     if (meld.IsKong && !meld.IsAdded)
     {
         return(OpenKongPrefabs[(int)meld.Side]);
     }
     return(ChowPongPrefabs[(int)meld.Side]);
 }
Example #4
0
        public void AddKong(int index, OpenMeld kong)
        {
            CheckRange(index);
            int i = openMelds[index].FindIndex(meld => meld.Type == MeldType.Triplet && meld.First.EqualsIgnoreColor(kong.First));

            if (i < 0)
            {
                Debug.LogError($"Pong of {kong} not found, this should not happen");
                return;
            }
            openMelds[index][i] = kong;
        }
Example #5
0
        public void RemoveTile(int index, OpenMeld meld)
        {
            CheckRange(index);
            var tiles = handTiles[index];
            int p     = System.Array.FindIndex(meld.Tiles, tile => tile.EqualsConsiderColor(meld.Tile));

            for (int i = 0; i < meld.Tiles.Length; i++)
            {
                if (i == p)
                {
                    continue;
                }
                RemoveTile(index, meld.Tiles[i]);
            }
        }
Example #6
0
 public void SetMeld(OpenMeld meld)
 {
     OpenMeld = meld;
     if (meld.Side == MeldSide.Self)
     {
         SelfKong();
     }
     else if (meld.IsAdded)
     {
         AddedKong();
     }
     else
     {
         OtherMeld();
     }
 }
Example #7
0
 public void SetMeld(OpenMeld meld, Action <OpenMeld> callback)
 {
     OpenMeld      = meld;
     this.callback = callback;
     for (int i = 0; i < meld.Tiles.Length; i++)
     {
         var tile   = meld.Tiles[i];
         var sprite = manager.GetTileSprite(tile);
         tiles[i].sprite = sprite;
     }
     for (int i = meld.Tiles.Length; i < tiles.Length; i++)
     {
         tiles[i].gameObject.SetActive(false);
     }
     rect.sizeDelta = new Vector2(TileWidth * meld.Tiles.Length, rect.sizeDelta.y);
 }
Example #8
0
 public void AddMeld(int index, OpenMeld meld)
 {
     CheckRange(index);
     openMelds[index].Add(meld);
 }