Package bluffinmuffin.protocol.commands.game

Source Code of bluffinmuffin.protocol.commands.game.TableInfoCommand

package bluffinmuffin.protocol.commands.game;

import java.util.ArrayList;
import java.util.StringTokenizer;

import bluffinmuffin.game.entities.Card;
import bluffinmuffin.poker.entities.PlayerInfo;
import bluffinmuffin.poker.entities.PotInfo;
import bluffinmuffin.poker.entities.TableInfo;
import bluffinmuffin.poker.entities.type.GameBetLimitType;
import bluffinmuffin.protocol.TuplePlayerInfo;
import bluffinmuffin.protocol.commands.AbstractCommand;

public class TableInfoCommand extends AbstractCommand
{
    @Override
    protected String getCommandName()
    {
        return TableInfoCommand.COMMAND_NAME;
    }
   
    private final int m_totalPotAmount;
    private final int m_nbSeats;
    private final ArrayList<Integer> m_potsAmount;
    private final ArrayList<Integer> m_boardCardIDs;
    private final int m_nbPlayers;
    private final ArrayList<TuplePlayerInfo> m_seats;
    private final GameBetLimitType m_limit;
   
    public static String COMMAND_NAME = "gameTABLE_INFO";
   
    public TableInfoCommand(StringTokenizer argsToken)
    {
        m_potsAmount = new ArrayList<Integer>();
        m_boardCardIDs = new ArrayList<Integer>();
        m_seats = new ArrayList<TuplePlayerInfo>();
       
        m_totalPotAmount = Integer.parseInt(argsToken.nextToken());
        m_nbSeats = Integer.parseInt(argsToken.nextToken());
        for (int i = 0; i < m_nbSeats; ++i)
        {
            m_potsAmount.add(Integer.parseInt(argsToken.nextToken()));
        }
        for (int i = 0; i < 5; ++i)
        {
            m_boardCardIDs.add(Integer.parseInt(argsToken.nextToken()));
        }
        m_nbPlayers = Integer.parseInt(argsToken.nextToken());
        for (int i = 0; i < m_nbPlayers; ++i)
        {
            m_seats.add(new TuplePlayerInfo(argsToken));
        }
        m_limit = GameBetLimitType.values()[Integer.parseInt(argsToken.nextToken())];
    }
   
    public TableInfoCommand(int totalPotAmount, int nbSeats, ArrayList<Integer> potsAmount, ArrayList<Integer> boardCardIDs, int nbPlayers, ArrayList<TuplePlayerInfo> seats, GameBetLimitType limit)
    {
        m_totalPotAmount = totalPotAmount;
        m_nbSeats = nbSeats;
        m_potsAmount = potsAmount;
        m_boardCardIDs = boardCardIDs;
        m_nbPlayers = nbPlayers;
        m_seats = seats;
        m_limit = limit;
    }
   
    public TableInfoCommand(TableInfo info, PlayerInfo pPlayer)
    {
        m_potsAmount = new ArrayList<Integer>();
        m_boardCardIDs = new ArrayList<Integer>();
        m_seats = new ArrayList<TuplePlayerInfo>();
       
        m_totalPotAmount = info.getTotalPotAmnt();
        m_nbSeats = info.getNbMaxSeats();
        m_nbPlayers = info.getNbMaxSeats();
       
        for (final PotInfo pot : info.getPots())
        {
            m_potsAmount.add(pot.getAmount());
        }
       
        for (int i = info.getPots().size(); i < m_nbSeats; i++)
        {
            m_potsAmount.add(0);
        }
        final Card[] boardCards = new Card[5];
        info.getCards().toArray(boardCards);
        for (int i = 0; i < 5; ++i)
        {
            if (boardCards[i] == null)
            {
                m_boardCardIDs.add(Card.NO_CARD_ID);
            }
            else
            {
                m_boardCardIDs.add(boardCards[i].getId());
            }
        }
       
        for (int i = 0; i < info.getNbMaxSeats(); ++i)
        {
            final TuplePlayerInfo seat = new TuplePlayerInfo(i);
            m_seats.add(seat);
            final PlayerInfo player = info.getPlayer(i);
            seat.m_isEmpty = (player == null);
           
            if (seat.m_isEmpty)
            {
                continue;
            }
           
            seat.m_playerName = player.getName(); // playerName
            seat.m_money = player.getMoneySafeAmnt(); // playerMoney
           
            final boolean showCard = (i == pPlayer.getNoSeat());
           
            // Player cards
            final Card[] holeCards = player.getCards(showCard);
            for (int j = 0; j < 2; ++j)
            {
                seat.m_holeCardIDs.add(holeCards[j].getId());
            }
           
            seat.m_isDealer = info.getNoSeatDealer() == i; // isDealer
            seat.m_isSmallBlind = info.getNoSeatSmallBlind() == i; // isSmallBlind
            seat.m_isBigBlind = info.getNoSeatBigBlind() == i; // isBigBlind
            seat.m_isCurrentPlayer = info.getNoSeatCurrPlayer() == i; // isCurrentPlayer
            seat.m_timeRemaining = 0; // timeRemaining
            seat.m_bet = player.getMoneyBetAmnt(); // betAmount
            seat.m_isPlaying = player.isPlaying();
        }
        m_limit = info.getBetLimit();
    }
   
    @Override
    public void encode(StringBuilder sb)
    {
        append(sb, m_totalPotAmount);
        append(sb, m_nbSeats);
        for (int i = 0; i < m_potsAmount.size(); ++i)
        {
            append(sb, m_potsAmount.get(i));
        }
        for (int i = 0; i < m_boardCardIDs.size(); ++i)
        {
            append(sb, m_boardCardIDs.get(i));
        }
        append(sb, m_nbPlayers);
        for (int i = 0; i < m_seats.size(); ++i)
        {
            append(sb, m_seats.get(i).toString("" + AbstractCommand.Delimitter));
        }
        append(sb, m_limit.ordinal());
    }
   
    public int getTotalPotAmount()
    {
        return m_totalPotAmount;
    }
   
    public int getNbSeats()
    {
        return m_nbSeats;
    }
   
    public ArrayList<Integer> getPotsAmount()
    {
        return m_potsAmount;
    }
   
    public ArrayList<Integer> getBoardCardIDs()
    {
        return m_boardCardIDs;
    }
   
    public int getNbPlayers()
    {
        return m_nbPlayers;
    }
   
    public ArrayList<TuplePlayerInfo> getSeats()
    {
        return m_seats;
    }
   
    public GameBetLimitType getLimit()
    {
        return m_limit;
    }
}
TOP

Related Classes of bluffinmuffin.protocol.commands.game.TableInfoCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.