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: bfc6292969df1d806bb6c50b5fb85c453122ed95
4
- data.tar.gz: f98250d114194baa3a13860291c304d7fc7ac361
3
+ metadata.gz: fb03d6219a0b85d3de82a86fd197ea5bee6ddd77
4
+ data.tar.gz: 53dbb06ea4803a990592b6603a39bb4650eb97e8
5
5
  SHA512:
6
- metadata.gz: 1dd354bc1d4d13395db2d6d085e095bdc7c14f25a7bd7a6486cd66d25f7fdd8f01059393d2fa1b27e0a2c2001aac829618ba14d81dfed880c37a4e40344cfc88
7
- data.tar.gz: 8c6554d817331efaa594b802976a910bacddf99bc37e08f906ed9c0e6d69aa1bc92bd3ae57dc3dab5eb803663e9357eb9a4391a7df8c3151ca8883add92a90ce
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', '~> 3.1'
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, :users_seat_out_of_bounds,
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 = if users_seat.seat_in_bounds?(number_of_players) && @players.any?{|player| player.seat == 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 = @game_def.min_wagers.first
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
- number_of_players.times.inject(nil) do |player_who_might_act, i|
111
- position_relative_to_dealer_to_act = (reference_position + i + 1) % number_of_players
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) == number_of_players - 1}
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
- # dealer has a +position_relative_to_dealer+ of zero.
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+ == +number_of_players+ - 1
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
- player.seat.position_relative_to user_player.seat, number_of_players
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
- seat_of_dealer = @users_seat.seat_from_relative_position(
268
- users_position_relative_to_dealer, number_of_players)
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.position_relative_to seat_of_dealer, number_of_players
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
  )
@@ -1,3 +1,3 @@
1
1
  module AcpcPokerMatchState
2
- VERSION = "1.0.2"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -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.number_of_players.must_equal @match.players.length
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: 1.0.2
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-22 00:00:00.000000000 Z
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: '3.1'
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: '3.1'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: contextual_exceptions
29
29
  requirement: !ruby/object:Gem::Requirement