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; }
public void Kong(int playerIndex, OpenMeld kong) { var kongState = new PlayerKongState { CurrentRoundStatus = CurrentRoundStatus, CurrentPlayerIndex = playerIndex, MahjongSet = mahjongSet, Kong = kong }; StateMachine.ChangeState(kongState); }
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]); }
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; }
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]); } }
public void SetMeld(OpenMeld meld) { OpenMeld = meld; if (meld.Side == MeldSide.Self) { SelfKong(); } else if (meld.IsAdded) { AddedKong(); } else { OtherMeld(); } }
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); }
public void AddMeld(int index, OpenMeld meld) { CheckRange(index); openMelds[index].Add(meld); }