--
+33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
http://www.plopbyte.net


--- Begin Message ---
Hi,
I added the feature you requested, you can find the patch in attachement, i updated tests related to this feature.

Cedric

Loic Dachary wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Cedric Pinson wrote:
Hi,

Here a patch to add a packet in client side (pokerexplain.py). This
 packet translate the player bet and player amount into chips stack
 unit. Like bet2pot, or player2bet packet. So now each
poker_player_chips sent to the client is accompagned with a
poker_client_player_chips. The patch add the functionality and an
update of test related to update of chips of player.
Your patch looks good to me. However, because it generates a number of
additional packets, it should only be activated if a given bit of the
explain mode is set. I suggest you wrap them in a if XXX. Note that
setExplain in pokeravatar.py has a "what" argument that is not
currently used. It is intended precisely for this cases. In
pokernetwork/pokerpackets.py in packet PokerExplain the default is
ALL. I suggest you assign do something like:

NONE = 0x0000
REST = 0x0001
CHIPSTACKS = 0x0004
ALL = REST | CHIPSTACKS

I've not thought precisely about this, you will have to make
adjustements, but I hope you catch the spirit. Of course, because
you're not communicating with the pokerexplain thru the network, only
ALL is of interest to you. By using these conditional flags, you
isolate the REST clients from your modifications.

Cheers

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkjA660ACgkQ8dLMyEl6F23VQACgsxPz/+clHYdFy8F0WBRa6kaC
0WQAnAtHM1FI6ZXa3YWZjBoAeD0y4Tf+
=jhXi
-----END PGP SIGNATURE-----


--
+33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
http://www.plopbyte.net


Index: pokernetwork/pokerpackets.py
===================================================================
--- pokernetwork/pokerpackets.py        (revision 4409)
+++ pokernetwork/pokerpackets.py        (working copy)
@@ -3899,8 +3899,10 @@
 """
     pass #pragma: no cover
 
-    NONE = 0x0000
-    ALL  = 0xFFFF
+    NONE       = 0x0000
+    REST       = 0x0001
+    CHIPSTACKS = 0x0004
+    ALL        = REST | CHIPSTACKS
 
 Packet.infoDeclare(globals(), PacketPokerExplain, PacketInt, "POKER_EXPLAIN", 
142) # 142 # 0x8e # %SEQ%
 
Index: pokernetwork/pokeravatar.py
===================================================================
--- pokernetwork/pokeravatar.py (revision 4409)
+++ pokernetwork/pokeravatar.py (working copy)
@@ -70,7 +70,8 @@
                     return False
 
                 self.explain = PokerExplain(dirs = self.service.dirs,
-                                            verbose = self.service.verbose)
+                                            verbose = self.service.verbose,
+                                            explain = what)
         else:
             self.explain = None
         return True
Index: pokernetwork/pokerexplain.py
===================================================================
--- pokernetwork/pokerexplain.py        (revision 4409)
+++ pokernetwork/pokerexplain.py        (working copy)
@@ -90,6 +90,7 @@
         self._prefix = ""
         self.games = PokerGames(**kwargs)
         self.setVerbose(kwargs.get('verbose', 0))
+        self.what = kwargs.get("explain", PacketPokerExplain.ALL)
 
     def error(self, string):
         self.message("ERROR " + string)
@@ -148,6 +149,8 @@
                                             chips = self.normalizeChips(game, 
chips))
         packets.append(packet)
         packets.append(self.updatePlayerChips(game, player))
+        if self.what & PacketPokerExplain.CHIPSTACKS:
+            packets.append(self.explainPlayerChips(game, player))
         return packets
 
     def chipsBet2Pot(self, game, player, bet, pot_index):
@@ -165,6 +168,8 @@
                                          pot = pot_index)
         packets.append(packet)
         packets.append(self.updatePlayerChips(game, player))
+        if self.what & PacketPokerExplain.CHIPSTACKS:
+            packets.append(self.explainPlayerChips(game, player))
         return packets
         
     def chipsPot2Player(self, game, player, bet, pot_index, reason):
@@ -314,6 +319,8 @@
                         forward_packets.append(PacketPokerBoardCards(game_id = 
game.id, serial = self.getSerial()))
                         for serial in game.player_list:
                             
forward_packets.append(self.updatePlayerChips(game, game.serial2player[serial]))
+                            if self.what & PacketPokerExplain.CHIPSTACKS:
+                                
forward_packets.append(self.explainPlayerChips(game, 
game.serial2player[serial]))
                         forward_packets.extend(self.updatePotsChips(game, []))
 
             elif packet.type == PACKET_POKER_CANCELED:
@@ -482,11 +489,9 @@
                     #
                     player = game.getPlayer(packet.serial)
                     player.buy_in_payed = True
-                    chips = PacketPokerPlayerChips(game_id = game.id,
-                                                   serial = packet.serial,
-                                                   money = player.money,
-                                                   bet = player.bet)
-                    forward_packets.append(chips)
+                    forward_packets.append(self.updatePlayerChips(game, 
player))
+                    if self.what & PacketPokerExplain.CHIPSTACKS:
+                        forward_packets.append(self.explainPlayerChips(game, 
player))
 
             elif packet.type == PACKET_POKER_PLAYER_CHIPS:
                 player = game.getPlayer(packet.serial)
@@ -507,6 +512,8 @@
                     player.money = packet.money
                     if player.money > 0:
                         player.buy_in_payed = True
+                if self.what & PacketPokerExplain.CHIPSTACKS:
+                    forward_packets.append(self.explainPlayerChips(game, 
player))
 
             elif packet.type == PACKET_POKER_FOLD:
                 game.fold(packet.serial)
@@ -652,7 +659,7 @@
 
         packets.extend(self.updatePotsChips(game, game.getPots()))
         return packets
-        
+
     #
     # Should be move all bets back to players (for uncalled bets)
     # This is a border case we don't want to handle right now
@@ -696,6 +703,15 @@
             games.remove(exclude)
         return PacketPokerCurrentGames(game_ids = games,
                                        count = len(games))
+
+    def explainPlayerChips(self, game, player):
+        packet = PacketPokerClientPlayerChips(game_id = game.id,
+                                              serial = player.serial,
+                                              bet = self.normalizeChips(game, 
player.bet),
+                                              money = 
self.normalizeChips(game, player.money) )
+        return packet
+                
+        
     
     def packetsPot2Player(self, game):
         packets = []
@@ -747,6 +763,8 @@
                 
         for player in game.serial2player.itervalues():
             packets.append(self.updatePlayerChips(game, player))
+            if self.what & PacketPokerExplain.CHIPSTACKS:
+                packets.append(self.explainPlayerChips(game, player))
         packets.extend(self.updatePotsChips(game, []))
         return packets
         
Index: tests/test-pokeravatar.py.in
===================================================================
--- tests/test-pokeravatar.py.in        (revision 4409)
+++ tests/test-pokeravatar.py.in        (working copy)
@@ -863,7 +863,7 @@
                 else:
                     ignored += 1
         self.assertEquals(found, 28)
-        self.assertEquals(ignored, 12)
+        self.assertEquals(ignored, 16)
         return (client, packet)
     # ------------------------------------------------------------------------
     def sitTable(self, (client, packet), id, gameId):
Index: tests/test-pokerexplain.py.in
===================================================================
--- tests/test-pokerexplain.py.in       (revision 4409)
+++ tests/test-pokerexplain.py.in       (working copy)
@@ -18,6 +18,7 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
 #
 import sys
+import os
 sys.path.insert(0, "@srcdir@/..")
 sys.path.insert(0, "..")
 
@@ -126,7 +127,7 @@
             bet = 30
             money = 50
         packets = self.explain.chipsPlayer2Bet(PokerGame(), PokerPlayer(), 10)
-        self.assertEqual(2, len(packets))
+        self.assertEqual(3, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_PLAYER2BET, packet.type)
         self.assertEqual([1, 6, 2, 2], packet.chips)
@@ -147,14 +148,21 @@
 
         pot_index = 0
         packets = self.explain.chipsBet2Pot(PokerGame(), PokerPlayer(), 13, 
pot_index)
-        self.assertEqual(2, len(packets))
+        self.assertEqual(3, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_BET2POT, packet.type)
         self.assertEqual([1, 6, 2, 2], packet.chips)
         self.assertEqual(pot_index, packet.pot)
         packet = packets[1]
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, packet.type)
+        packet = packets[2]
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, packet.type)
 
+        # test without explain chipstack
+        self.explain.what = PacketPokerExplain.REST
+        packets = self.explain.chipsBet2Pot(PokerGame(), PokerPlayer(), 13, 
pot_index)
+        self.assertEqual(2, len(packets))
+
     def test07_chipsPot2Player(self):
         class PokerGame:
             id = 1
@@ -218,14 +226,23 @@
         event = ( "raise", player_serial, 20 )
         game.historyAdd(*event)
         self.assertEqual(True, self.explain.gameEvent(game_id, "money2bet", 
player_serial, 20))
-        self.assertEqual(4, len(self.explain.forward_packets))
+        self.assertEqual(5, len(self.explain.forward_packets))
         packet = self.explain.forward_packets[1]
         self.assertEqual(PACKET_POKER_HIGHEST_BET_INCREASE, packet.type)
         packet = self.explain.forward_packets[2]
         self.assertEqual(PACKET_POKER_CHIPS_PLAYER2BET, packet.type)
         packet = self.explain.forward_packets[3]
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, packet.type)
+        packet = self.explain.forward_packets[4]
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, packet.type)
 
+        # test without explain chipstack
+        self.explain.what = PacketPokerExplain.REST
+        self.explain.forward_packets = [ 'fake' ]
+        self.assertEqual(True, self.explain.gameEvent(game_id, "money2bet", 
player_serial, 20))
+        self.assertEqual(4, len(self.explain.forward_packets))
+
+
     def test08_gameEvent_bet2pot(self):
         self.explain.forward_packets = [ 'fake' ]
         game_id = 1
@@ -235,12 +252,20 @@
 
         game.current_round = -1
         self.assertEqual(True, self.explain.gameEvent(game_id, "bet2pot", 
player_serial, 20))
-        self.assertEqual(3, len(self.explain.forward_packets))
+        self.assertEqual(4, len(self.explain.forward_packets))
         packet = self.explain.forward_packets[1]
         self.assertEqual(PACKET_POKER_CHIPS_BET2POT, packet.type)
         packet = self.explain.forward_packets[2]
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, packet.type)
+        packet = self.explain.forward_packets[3]
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, packet.type)
 
+        # test without explain chipstack
+        self.explain.what = PacketPokerExplain.REST
+        self.explain.forward_packets = [ 'fake' ]
+        self.assertEqual(True, self.explain.gameEvent(game_id, "bet2pot", 
player_serial, 20))
+        self.assertEqual(3, len(self.explain.forward_packets))
+
         
     def test08_gameEvent_round_cap_decrease(self):
         self.explain.forward_packets = [ 'fake' ]
@@ -337,13 +362,21 @@
                 return False
 
         packets = self.explain.moveBet2Pot(PokerGame())
-        self.assertEqual(4, len(packets))
+        self.assertEqual(5, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_BET2POT, packet.type)
         self.assertEqual([1, 6, 2, 6, 5, 1], packet.chips)
         packet = packets[1]
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, packet.type)
+        packet = packets[2]
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, packet.type)
 
+        # test without explain chipstack
+        self.explain.what = PacketPokerExplain.REST
+        packets = self.explain.moveBet2Pot(PokerGame())
+        self.assertEqual(4, len(packets))
+
+
     def test15_updateBetLimit(self):
         game_id = 1
         game = self.explain.games.getOrCreateGame(game_id)
@@ -401,7 +434,7 @@
 
 
         packets = self.explain.packetsPot2Player(PokerGameChipsLeft())
-        self.assertEqual(3, len(packets))
+        self.assertEqual(4, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_POT2PLAYER, packet.type)
         self.assertEqual('left_over', packet.reason)
@@ -421,7 +454,7 @@
                 ]
 
         packets = self.explain.packetsPot2Player(PokerGameUncalled())
-        self.assertEqual(3, len(packets))
+        self.assertEqual(4, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_POT2PLAYER, packet.type)
         self.assertEqual('uncalled', packet.reason)
@@ -444,7 +477,7 @@
                 ]
 
         packets = self.explain.packetsPot2Player(PokerGameResolve())
-        self.assertEqual(4, len(packets))
+        self.assertEqual(5, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_POT_MERGE, packet.type)
         self.assertEqual([0], packet.sources)
@@ -475,7 +508,7 @@
                 ]
 
         packets = self.explain.packetsPot2Player(PokerGameResolve())
-        self.assertEqual(4, len(packets))
+        self.assertEqual(5, len(packets))
         packet = packets[0]
         self.assertEqual(PACKET_POKER_CHIPS_POT2PLAYER, packet.type)
         self.assertEqual("win", packet.reason)
@@ -601,11 +634,20 @@
         self.assertTrue(self.explain.explain(PacketPokerCanceled(game_id = 
game_id,
                                                                  serial = 
player_serial,
                                                                  amount = 
amount)))
-        self.assertEqual(5, len(self.explain.forward_packets))
+        self.assertEqual(6, len(self.explain.forward_packets))
         self.assertEqual(PACKET_POKER_CANCELED, 
self.explain.forward_packets[0].type)
         self.assertEqual(PACKET_POKER_CHIPS_BET2POT, 
self.explain.forward_packets[1].type)
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, 
self.explain.forward_packets[2].type)
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, 
self.explain.forward_packets[3].type)
 
+        # test without explain chipstack
+        self.explain.forward_packets = []
+        self.explain.what = PacketPokerExplain.REST
+        self.assertTrue(self.explain.explain(PacketPokerCanceled(game_id = 
game_id,
+                                                                 serial = 
player_serial,
+                                                                 amount = 
amount)))
+        self.assertEqual(5, len(self.explain.forward_packets))
+
     def test26_explain_player_arrive(self):
         game_id = 1
         game = self.explain.games.getOrCreateGame(game_id)
@@ -987,9 +1029,18 @@
         self.assertTrue(self.explain.explain(PacketPokerRebuy(game_id = 
game_id,
                                                               serial = 
player_serial,
                                                               amount = 
amount)))
-        self.assertEqual(1, len(self.explain.forward_packets))
+        self.assertEqual(2, len(self.explain.forward_packets))
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, 
self.explain.forward_packets[0].type)
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, 
self.explain.forward_packets[1].type)
 
+        # test without explain chipstack
+        self.explain.forward_packets = []
+        self.explain.what = PacketPokerExplain.REST
+        self.assertTrue(self.explain.explain(PacketPokerRebuy(game_id = 
game_id,
+                                                              serial = 
player_serial,
+                                                              amount = 
amount)))
+        self.assertEqual(1, len(self.explain.forward_packets))
+
     def test38_explain_player_chips(self):
         game_id = 1
         game = self.explain.games.getOrCreateGame(game_id)
@@ -1005,10 +1056,14 @@
                                                                     serial = 
player_serial,
                                                                     money = 
money - 1,
                                                                     bet = bet 
- 1)))
-        self.assertEqual(1, len(self.explain.forward_packets))
+        self.assertEqual(2, len(self.explain.forward_packets))
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, 
self.explain.forward_packets[0].type)
         self.assertEqual(money - 1, player.money)
         self.assertEqual(bet - 1, player.bet)
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, 
self.explain.forward_packets[1].type)
+        self.assertEqual([1, 7, 2, 2], self.explain.forward_packets[1].bet)
+        self.assertEqual([1, 7, 2, 5, 5, 1], 
self.explain.forward_packets[1].money)
+        
         self.failUnless(player.isBuyInPayed())
         #
         # override the money/bet
@@ -1017,11 +1072,23 @@
                                                                     serial = 
player_serial,
                                                                     money = 
money,
                                                                     bet = 
bet)))
-        self.assertEqual(1, len(self.explain.forward_packets))
+        self.assertEqual(2, len(self.explain.forward_packets))
         self.assertEqual(PACKET_POKER_PLAYER_CHIPS, 
self.explain.forward_packets[0].type)
         self.assertEqual(money, player.money)
         self.assertEqual(bet, player.bet)
+        self.assertEqual(PACKET_POKER_CLIENT_PLAYER_CHIPS, 
self.explain.forward_packets[1].type)
+        self.assertEqual([1, 6, 2, 3], self.explain.forward_packets[1].bet)
+        self.assertEqual([1, 6, 2, 6, 5, 1], 
self.explain.forward_packets[1].money)
 
+        # test without explain chipstack
+        self.explain.forward_packets = []
+        self.explain.what = PacketPokerExplain.REST
+        self.assertTrue(self.explain.explain(PacketPokerPlayerChips(game_id = 
game_id,
+                                                                    serial = 
player_serial,
+                                                                    money = 
money,
+                                                                    bet = 
bet)))
+        self.assertEqual(1, len(self.explain.forward_packets))
+
     def test39_explain_win(self):
         game_id = 1
         game = self.explain.games.getOrCreateGame(game_id)

--- End Message ---
_______________________________________________
Pokersource-users mailing list
[email protected]
https://mail.gna.org/listinfo/pokersource-users

Reply via email to