acpc_dealer_data 0.1.3 → 0.1.4

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.
@@ -142,8 +142,8 @@ class PokerMatchData
142
142
 
143
143
  @players.each_with_index do |player, seat|
144
144
  player.start_new_hand!(
145
- @match_def.game_def.blinds[@seat],
146
- @match_def.game_def.chip_stacks[@seat],
145
+ @match_def.game_def.blinds[seat],
146
+ @match_def.game_def.chip_stacks[seat],
147
147
  current_hand.data.first.state_messages[seat].users_hole_cards
148
148
  )
149
149
  end
@@ -165,8 +165,8 @@ class PokerMatchData
165
165
  last_match_state = current_hand.last_match_state(seat)
166
166
  match_state = current_hand.current_match_state(seat)
167
167
 
168
- if current_hand.next_action && player.seat == current_hand.next_action[:seat]
169
- player.take_action!(current_hand.next_action[:action])
168
+ if current_hand.last_action && player.seat == current_hand.last_action.seat
169
+ player.take_action!(current_hand.last_action.action)
170
170
  end
171
171
 
172
172
  if !match_state.first_state_of_first_round? && match_state.round > last_match_state.round
@@ -175,7 +175,7 @@ class PokerMatchData
175
175
 
176
176
  if current_hand.final_turn?
177
177
  player.take_winnings!(
178
- current_hand.chip_distribution[seat] + @match_def.game_def.blinds[@seat]
178
+ current_hand.chip_distribution[seat] + @match_def.game_def.blinds[seat]
179
179
  )
180
180
  end
181
181
  end
@@ -186,6 +186,30 @@ class PokerMatchData
186
186
  self
187
187
  end
188
188
 
189
+ def player_acting_sequence
190
+ return nil unless @hand_number
191
+
192
+ sequence = [[]]
193
+
194
+ return sequence if current_hand.turn_number < 1
195
+
196
+ turns_taken = current_hand.data[0..current_hand.turn_number-1]
197
+ turns_taken.each_with_index do |turn, turn_index|
198
+ next unless turn.action_message
199
+
200
+ sequence[turn.action_message.state.round] << turn.action_message.seat
201
+
202
+ if (
203
+ new_round?(sequence.length - 1 , turn_index) ||
204
+ players_all_in?(sequence.length - 1, turn_index)
205
+ )
206
+ sequence << []
207
+ end
208
+ end
209
+
210
+ sequence
211
+ end
212
+
189
213
  def current_hand
190
214
  if @hand_number then @data[@hand_number] else nil end
191
215
  end
@@ -233,4 +257,21 @@ class PokerMatchData
233
257
 
234
258
  self
235
259
  end
260
+
261
+ private
262
+
263
+ def players_all_in?(current_round, turn_index)
264
+ current_hand.data.length == turn_index + 2 &&
265
+ current_round < (@match_def.game_def.number_of_rounds - 1) &&
266
+ turn.action_message &&
267
+ (turns_taken[0..turn_index].count do |t|
268
+ t.action_message.action.to_sym == :fold
269
+ end) != @players.length - 1
270
+ end
271
+
272
+ def new_round?(current_round, turn_index)
273
+ current_hand.data.length > turn_index + 1 &&
274
+ current_hand.data[turn_index + 1].action_message &&
275
+ current_hand.data[turn_index + 1].action_message.state.round > current_round
276
+ end
236
277
  end
@@ -1,3 +1,3 @@
1
1
  module AcpcDealerData
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -100,9 +100,13 @@ describe PokerMatchData do
100
100
 
101
101
  @hand_number = 0
102
102
  @patient.for_every_hand! do
103
+ @turn_number = 0
104
+
103
105
  @final_hand = @hand_number >= @hand_data_list.length - 1
104
106
  @patient.for_every_turn! do
105
107
  check_patient
108
+
109
+ @turn_number += 1
106
110
  end
107
111
 
108
112
  @hand_number += 1
@@ -126,9 +130,13 @@ describe PokerMatchData do
126
130
 
127
131
  @hand_number = 0
128
132
  @patient.for_every_hand! do
133
+ @turn_number = 0
134
+
129
135
  @final_hand = @hand_number >= @hand_data_list.length - 1
130
136
  @patient.for_every_turn! do
131
137
  check_patient
138
+
139
+ @turn_number += 1
132
140
  end
133
141
 
134
142
  @hand_number += 1
@@ -144,6 +152,7 @@ describe PokerMatchData do
144
152
  @patient.hand_number.must_equal @hand_number
145
153
  @patient.current_hand.must_equal @hand_data_list[@hand_number]
146
154
  @patient.final_hand?.must_equal @final_hand
155
+ @patient.player_acting_sequence.must_equal @player_acting_sequences[@hand_number] if @turn_number + 1 == @hand_data_list[@hand_number].data.length
147
156
  end
148
157
 
149
158
  def init_data(num_hands=nil)
@@ -177,6 +186,8 @@ describe PokerMatchData do
177
186
  hand_result
178
187
  )
179
188
  end
189
+
190
+ @player_acting_sequences = data_hash[:player_acting_sequences]
180
191
 
181
192
  yield data_hash[:action_messages], data_hash[:result_messages]
182
193
  end
@@ -267,7 +278,8 @@ describe PokerMatchData do
267
278
  hand_start_line_indices: [6, 35],
268
279
  match_def_line_index: 0,
269
280
  player_names: ['p1', 'p2'],
270
- chip_distribution: [110, -110]
281
+ chip_distribution: [110, -110],
282
+ player_acting_sequences: [[[1, 0], [0, 1, 0], [0, 1], [0, 1]], [[0, 1, 0], [1, 0], [1, 0, 1], [1, 0]]]
271
283
  }
272
284
  }
273
285
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acpc_dealer_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-01 00:00:00.000000000 Z
12
+ date: 2013-01-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: acpc_dealer
@@ -164,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
164
  version: '0'
165
165
  segments:
166
166
  - 0
167
- hash: -128442043826121202
167
+ hash: -4118394275309926132
168
168
  required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  none: false
170
170
  requirements:
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  version: '0'
174
174
  segments:
175
175
  - 0
176
- hash: -128442043826121202
176
+ hash: -4118394275309926132
177
177
  requirements: []
178
178
  rubyforge_project:
179
179
  rubygems_version: 1.8.24