fix infinite check bug
[rofl0r-oopoker.git] / table.cpp
bloba2cc7ac114375d0f41a923e5619fb8b8810a0b60
1 /*
2 OOPoker
4 Copyright (c) 2010 Lode Vandevenne
5 All rights reserved.
7 This file is part of OOPoker.
9 OOPoker is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 OOPoker is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with OOPoker. If not, see <http://www.gnu.org/licenses/>.
23 #include "table.h"
24 #include "game.h"
25 #include "observer.h"
26 #include "player.h"
27 #include "util.h"
29 Table::Table()
30 : dealer(0)
31 , current(1)
32 , round(R_PRE_FLOP)
33 , turn(0)
37 int Table::getNumActivePlayers() const
39 int result = 0;
40 for(size_t i = 0; i < players.size(); i++)
42 if(!players[i].folded) result++;
44 return result;
47 int Table::getNumDecidingPlayers() const
49 return ::getNumActivePlayers(players);
52 int Table::getPot() const
54 int result = 0;
55 for(size_t i = 0; i < players.size(); i++)
57 result += players[i].wager;
59 return result;
62 int Table::wrap(int index) const
64 return ::wrap(index, players.size());
67 int Table::getSmallBlindIndex() const
69 if(players.size() == 2)
71 return dealer;
73 else
75 return wrap(dealer + 1);
79 int Table::getBigBlindIndex() const
81 if(players.size() == 2)
83 return wrap(dealer + 1);
85 else
87 return wrap(dealer + 2);
91 bool Table::hasHumanPlayer() const
93 for(size_t i = 0; i < players.size(); i++) if(players[i].isHuman()) return true;
94 return false;
99 int Table::getHighestWager() const
101 int result = 0;
102 for(size_t i = 0; i < players.size(); i++)
104 if(players[i].wager > result) result = players[i].wager;
106 return result;
109 int Table::getCallAmount() const
111 int result = getHighestWager() - players[current].wager;
113 if(players[current].stack < result) result = players[current].stack;
115 return result;