acpc_poker_match_state 1.0.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb03d6219a0b85d3de82a86fd197ea5bee6ddd77
|
4
|
+
data.tar.gz: 53dbb06ea4803a990592b6603a39bb4650eb97e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4d660fd3182a20c31f4520371db8ae519a1bbef22977a12c6fb207de5841678a71856acfd10cdcd69054df1a5dec5afb373d5bbe936b45b45d80db8e237fd86
|
7
|
+
data.tar.gz: 10d7c78349e63ea2864c014be84afc68c5acacdaea2027dd0a76e32b6117c16cb1d87048c8b38a3f21000efc72992c267f72120a01b4edeed74ae19ef16488ec
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.summary = %q{ACPC Poker Match State}
|
11
11
|
s.description = %q{Match state data manager.}
|
12
12
|
|
13
|
-
s.add_dependency 'acpc_poker_types', '~>
|
13
|
+
s.add_dependency 'acpc_poker_types', '~> 4.0'
|
14
14
|
s.add_dependency 'contextual_exceptions', '~> 0.0'
|
15
15
|
|
16
16
|
s.rubyforge_project = "acpc_poker_match_state"
|
@@ -3,31 +3,11 @@ require 'acpc_poker_match_state/match_state_transition'
|
|
3
3
|
|
4
4
|
require 'contextual_exceptions'
|
5
5
|
using ContextualExceptions::ClassRefinement
|
6
|
-
require 'acpc_poker_types/integer_as_seat'
|
7
|
-
using AcpcPokerTypes::IntegerAsSeat
|
8
|
-
|
9
|
-
module AcpcPokerMatchState
|
10
|
-
module ConvenienceArrayMethods
|
11
|
-
refine Array do
|
12
|
-
def find_out_of_bounds_seat(number_of_players)
|
13
|
-
self.find do |position|
|
14
|
-
!position.seat_in_bounds?(number_of_players)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
def copy
|
18
|
-
inject([]) { |new_array, elem| new_array << elem.copy }
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
using AcpcPokerMatchState::ConvenienceArrayMethods
|
24
6
|
|
25
7
|
module AcpcPokerMatchState
|
26
8
|
class PlayersAtTheTable
|
27
|
-
|
28
9
|
exceptions :player_acted_before_sitting_at_table,
|
29
|
-
:no_players_to_seat, :
|
30
|
-
:multiple_players_have_the_same_seat
|
10
|
+
:no_players_to_seat, :multiple_players_have_the_same_seat
|
31
11
|
|
32
12
|
attr_reader :players
|
33
13
|
|
@@ -59,14 +39,10 @@ module AcpcPokerMatchState
|
|
59
39
|
def initialize(game_def, player_names, users_seat, number_of_hands)
|
60
40
|
@players = AcpcPokerTypes::Player.create_players player_names, game_def
|
61
41
|
|
62
|
-
@users_seat =
|
63
|
-
users_seat
|
64
|
-
else
|
65
|
-
raise UsersSeatOutOfBounds, users_seat
|
66
|
-
end
|
42
|
+
@users_seat = AcpcPokerTypes::Seat.new(users_seat, player_names.length)
|
67
43
|
|
68
44
|
@game_def = game_def
|
69
|
-
@min_wager =
|
45
|
+
@min_wager = game_def.min_wagers.first
|
70
46
|
|
71
47
|
@transition = AcpcPokerMatchState::MatchStateTransition.new
|
72
48
|
|
@@ -75,13 +51,6 @@ module AcpcPokerMatchState
|
|
75
51
|
@number_of_hands = number_of_hands
|
76
52
|
end
|
77
53
|
|
78
|
-
def blinds
|
79
|
-
@game_def.blinds
|
80
|
-
end
|
81
|
-
|
82
|
-
# @return [Integer] The number of players seated at the table.
|
83
|
-
def number_of_players() @players.length end
|
84
|
-
|
85
54
|
# @param [MatchState] match_state The next match state.
|
86
55
|
def update!(match_state)
|
87
56
|
@transition.set_next_state! match_state
|
@@ -107,8 +76,8 @@ module AcpcPokerMatchState
|
|
107
76
|
@game_def.first_player_positions[state.round] - 1
|
108
77
|
end
|
109
78
|
|
110
|
-
|
111
|
-
position_relative_to_dealer_to_act = (reference_position + i + 1) %
|
79
|
+
@players.length.times.inject(nil) do |player_who_might_act, i|
|
80
|
+
position_relative_to_dealer_to_act = (reference_position + i + 1) % @players.length
|
112
81
|
player_who_might_act = active_players.find do |player|
|
113
82
|
position_relative_to_dealer(player) == position_relative_to_dealer_to_act
|
114
83
|
end
|
@@ -170,7 +139,7 @@ module AcpcPokerMatchState
|
|
170
139
|
# @return [AcpcPokerTypes::Player] The player with the dealer button.
|
171
140
|
def player_with_dealer_button
|
172
141
|
return nil unless @transition.next_state
|
173
|
-
@players.find { |player| position_relative_to_dealer(player) ==
|
142
|
+
@players.find { |player| position_relative_to_dealer(player) == @players.length - 1}
|
174
143
|
end
|
175
144
|
|
176
145
|
# @return [Hash<AcpcPokerTypes::Player, #to_i] Relation from player to the blind that player paid.
|
@@ -178,7 +147,7 @@ module AcpcPokerMatchState
|
|
178
147
|
return nil unless @transition.next_state
|
179
148
|
|
180
149
|
@players.inject({}) do |relation, player|
|
181
|
-
relation[player] = blinds[position_relative_to_dealer(player)]
|
150
|
+
relation[player] = @game_def.blinds[position_relative_to_dealer(player)]
|
182
151
|
relation
|
183
152
|
end
|
184
153
|
end
|
@@ -246,14 +215,14 @@ module AcpcPokerMatchState
|
|
246
215
|
# dealer is desired.
|
247
216
|
# @return [Integer] The position relative to the user of the given player,
|
248
217
|
# +player+, indexed such that the player immediately to the left of the
|
249
|
-
#
|
218
|
+
# user has a +position_relative_to_user+ of zero.
|
250
219
|
# @example The player immediately to the left of the user has
|
251
220
|
# +position_relative_to_user+ == 0
|
252
221
|
# @example The user has
|
253
|
-
# +position_relative_to_user+ == +
|
222
|
+
# +position_relative_to_user+ == +@players.length+ - 1
|
254
223
|
# @raise (see Integer#position_relative_to)
|
255
224
|
def position_relative_to_user(player)
|
256
|
-
|
225
|
+
@users_seat.n_seats_away(1).seats_to player.seat
|
257
226
|
end
|
258
227
|
|
259
228
|
# @param [Integer] player The player of which the position relative to the
|
@@ -264,10 +233,18 @@ module AcpcPokerMatchState
|
|
264
233
|
# @raise (see Integer#seat_from_relative_position)
|
265
234
|
# @raise (see Integer#position_relative_to)
|
266
235
|
def position_relative_to_dealer(player)
|
267
|
-
|
268
|
-
|
236
|
+
seats_from_dealer = (users_position_relative_to_dealer + 1) % @players.length
|
237
|
+
|
238
|
+
dealers_seat = AcpcPokerTypes::Seat.new(
|
239
|
+
if @users_seat < seats_from_dealer
|
240
|
+
@players.length
|
241
|
+
else
|
242
|
+
0
|
243
|
+
end + @users_seat - seats_from_dealer,
|
244
|
+
@players.length
|
245
|
+
)
|
269
246
|
|
270
|
-
player.seat
|
247
|
+
dealers_seat.n_seats_away(1).seats_to(player.seat)
|
271
248
|
end
|
272
249
|
|
273
250
|
def amount_to_call(player)
|
@@ -340,7 +317,7 @@ module AcpcPokerMatchState
|
|
340
317
|
|
341
318
|
@players.each do |player|
|
342
319
|
player.start_new_hand!(
|
343
|
-
blinds[position_relative_to_dealer(player)],
|
320
|
+
@game_def.blinds[position_relative_to_dealer(player)],
|
344
321
|
@game_def.chip_stacks[position_relative_to_dealer(player)], # @todo if playing Doyle's game
|
345
322
|
@transition.next_state.list_of_hole_card_hands[position_relative_to_dealer(player)]
|
346
323
|
)
|
@@ -48,7 +48,7 @@ describe AcpcPokerMatchState::PlayersAtTheTable do
|
|
48
48
|
|
49
49
|
def check_patient(patient=@patient)
|
50
50
|
patient.player_acting_sequence.must_equal @match.player_acting_sequence
|
51
|
-
patient.
|
51
|
+
patient.players.length.must_equal @match.players.length
|
52
52
|
check_last_action
|
53
53
|
check_next_to_act
|
54
54
|
check_last_turn
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acpc_poker_match_state
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dustin Morrill
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05
|
11
|
+
date: 2013-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: acpc_poker_types
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: contextual_exceptions
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|