basketball 0.0.11 → 0.0.13

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
  SHA256:
3
- metadata.gz: 95fd9cb9bb1c51ed7a76e5640f5297ea463b412803bcfacf8c47ea8b9abc5b21
4
- data.tar.gz: 726e72b88fd8c81a30bfb4e47742e07fd97ba88fd86d9695852b0733ee6c0e5f
3
+ metadata.gz: 07c17436d67c69fdda803a3b43623dea353ce9c8e8699d32733b1a6006843dc8
4
+ data.tar.gz: 1a9a5bee3bca6e755e72a806653079ca42ec205c2a9c32f7e2797882cfc41d50
5
5
  SHA512:
6
- metadata.gz: b00a86aca794ea7b1ccbba172bc0fd63cfbbf4b8ff5eee2a7763f3877d8669a2b23141109fbf78461d9bd5b475e6a758381cc24c3a5d0e8b2e6dcb17f69e97bf
7
- data.tar.gz: 5b8d75ca8cb88dc6733d1453d485a9fe8842a2e98d601f3870837bf3197718d181b77a475960202320be2d92a651ed5d741719e1d90882984d6286f629d2cd6d
6
+ metadata.gz: 9d6854e37c39bc719eae78421020798f18123b18e486fd0ee8f97470e39de1706ad74a48086a86e6cfbecc79f6b23dd2fa73d8d291bb5e401ee3dc7ff2782949
7
+ data.tar.gz: 42bb76951430e75d0be97ebcec2611b5937236412d3233296c40de95ac1d6dc8d537c4c17e303418946be6a306374d8655b12d54f1aa93343148d3377324672c
@@ -46,7 +46,9 @@ module Basketball
46
46
  def serialize_front_office(front_office)
47
47
  {
48
48
  id: front_office.id,
49
- risk_level: front_office.risk_level
49
+ risk_level: front_office.risk_level,
50
+ prioritized_positions: front_office.prioritized_positions.map(&:code),
51
+ star_level: front_office.star_level
50
52
  }
51
53
  end
52
54
 
@@ -96,7 +98,9 @@ module Basketball
96
98
  def deserialize_front_office(hash)
97
99
  Draft::FrontOffice.new(
98
100
  id: hash[:id],
99
- risk_level: hash[:risk_level]
101
+ risk_level: hash[:risk_level].to_i,
102
+ prioritized_positions: (hash[:prioritized_positions] || []).map { |c| Org::Position.new(c) },
103
+ star_level: hash[:star_level].to_i
100
104
  )
101
105
  end
102
106
 
@@ -5,6 +5,7 @@ module Basketball
5
5
  # Main pick-by-pick iterator object which will round-robin rotate team selections.
6
6
  class Room < Entity
7
7
  class AlreadyPickedError < StandardError; end
8
+ class DraftUnderwayError < StandardError; end
8
9
  class EndOfDraftError < StandardError; end
9
10
  class EventOutOfOrderError < StandardError; end
10
11
  class FrontOfficeAlreadyRegisteredError < StandardError; end
@@ -12,9 +13,11 @@ module Basketball
12
13
  class UnknownFrontOfficeError < StandardError; end
13
14
  class UnknownPlayerError < StandardError; end
14
15
 
16
+ DEFAULT_ROUNDS = 12
17
+
15
18
  attr_reader :rounds, :players, :front_offices, :events
16
19
 
17
- def initialize(front_offices:, rounds:, players: [], events: [])
20
+ def initialize(events: [], front_offices: [], players: [], rounds: DEFAULT_ROUNDS)
18
21
  super()
19
22
 
20
23
  raise InvalidRoundsError, "#{rounds} should be a positive number" unless rounds.positive?
@@ -110,6 +113,36 @@ module Basketball
110
113
  players - drafted_players
111
114
  end
112
115
 
116
+ ### Builder Methods
117
+
118
+ def add_player!(player)
119
+ raise DraftUnderwayError, 'draft already started!' if events.any?
120
+ raise ArgumentError, 'player required' unless player
121
+ raise PlayerAlreadyAddedError, "#{player} already added" if player?(player)
122
+
123
+ players << player
124
+
125
+ self
126
+ end
127
+
128
+ def register!(front_office)
129
+ raise DraftUnderwayError, 'draft already started!' if events.any?
130
+ raise ArgumentError, 'front_office required' unless front_office
131
+ raise FrontOfficeAlreadyRegisteredError, "#{front_office} already registered" if registered?(front_office)
132
+
133
+ front_offices << front_office
134
+
135
+ self
136
+ end
137
+
138
+ def registered?(front_office)
139
+ front_offices.include?(front_office)
140
+ end
141
+
142
+ def player?(player)
143
+ players.include?(player)
144
+ end
145
+
113
146
  ### Event Methods
114
147
 
115
148
  def skip!
@@ -188,32 +221,6 @@ module Basketball
188
221
  def internal_pick
189
222
  events.length + 1
190
223
  end
191
-
192
- def registered?(front_office)
193
- front_offices.include?(front_office)
194
- end
195
-
196
- def register!(front_office)
197
- raise ArgumentError, 'front_office required' unless front_office
198
- raise FrontOfficeAlreadyRegisteredError, "#{front_office} already registered" if registered?(front_office)
199
-
200
- front_offices << front_office
201
-
202
- self
203
- end
204
-
205
- def player?(player)
206
- players.include?(player)
207
- end
208
-
209
- def add_player!(player)
210
- raise ArgumentError, 'player required' unless player
211
- raise PlayerAlreadyAddedError, "#{player} already added" if player?(player)
212
-
213
- players << player
214
-
215
- self
216
- end
217
224
  end
218
225
  end
219
226
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Basketball
4
- VERSION = '0.0.11'
4
+ VERSION = '0.0.13'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basketball
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ruggio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-07 00:00:00.000000000 Z
11
+ date: 2023-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop