acpc_poker_match_state 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
|