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: 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