private void TestPongs(IList <Tile> handTiles, Tile discardTile, MeldSide side, IList <OutTurnOperation> operations) { if (!gameSettings.AllowPongs) { return; } var pongs = MahjongLogic.GetPongs(handTiles, discardTile, side); if (pongs.Any()) { foreach (var pong in pongs) { operations.Add(new OutTurnOperation { Type = OutTurnOperationType.Pong, Tile = discardTile, Meld = pong, ForbiddenTiles = gameSettings.AllowDiscardSameAfterOpen ? null : pong.GetForbiddenTiles(discardTile) }); } } }
public static void TestPongs() { var handTiles = new List <Tile> { new Tile(Suit.M, 1), new Tile(Suit.M, 2), new Tile(Suit.M, 3), new Tile(Suit.M, 4), new Tile(Suit.M, 4), new Tile(Suit.M, 5), new Tile(Suit.M, 5), new Tile(Suit.M, 5, true) }; var result = MahjongLogic.GetPongs(handTiles, new Tile(Suit.M, 4), MeldSide.Opposite); Debug.Log($"Melds: {string.Join(",", result)}"); result = MahjongLogic.GetPongs(handTiles, new Tile(Suit.M, 5), MeldSide.Opposite); Debug.Log($"Melds: {string.Join(",", result)}"); result = MahjongLogic.GetPongs(handTiles, new Tile(Suit.M, 5, true), MeldSide.Opposite); Debug.Log($"Melds: {string.Join(",", result)}"); handTiles = new List <Tile> { new Tile(Suit.M, 1), new Tile(Suit.M, 2), new Tile(Suit.M, 3), new Tile(Suit.M, 4), new Tile(Suit.M, 4), new Tile(Suit.M, 5), new Tile(Suit.M, 5), new Tile(Suit.M, 5) }; result = MahjongLogic.GetPongs(handTiles, new Tile(Suit.M, 5, true), MeldSide.Opposite); Debug.Log($"Melds: {string.Join(",", result)}"); }