-
Notifications
You must be signed in to change notification settings - Fork 0
/
gamestate.php
71 lines (59 loc) · 1.54 KB
/
gamestate.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
/**
* Created by PhpStorm.
* User: gmanner
* Date: 02/10/15
* Time: 10:09
*/
class GameState extends GameObject
{
public function getMyself()
{
$myself = $this->getPlayer($this->in_action);
$dealer = $this->getDealer();
$myself->isDealer = $myself->id === $dealer->id;
return $myself;
}
public function getDealer()
{
return $this->getPlayer($this->dealer);
}
public function playersWithStatus($status)
{
$outPlayers = array();
foreach ($this->players as $player) {
if ($player->status == $status) {
$outPlayers[] = $player;
}
}
return $outPlayers;
}
public function getCommunityCards()
{
return $this->sortCards($this->community_cards);
}
public function getAllCards()
{
return $this->sortCards(array_merge($this->getMyself()->getHand(), $this->getCommunityCards()));
}
private function getPlayer($index)
{
return new MyPlayer($this->players[$index]);
}
public function sortCards($cards)
{
usort($cards, function($a, $b) {
return (CardHelper::mapRankToValues($a->rank) < CardHelper::mapRankToValues($b->rank)) ? -1 : 1;
});
return $cards;
}
public function isPreFlop()
{
$communityCards = $this->getCommunityCards();
return empty($communityCards);
}
public function isSomeBodyRaised()
{
return $this->current_buy_in > 2 * $this->small_blind;
}
}