sc2ai 0.0.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/data/sc2ai/protocol/common.proto +1 -1
  3. data/data/sc2ai/protocol/data.proto +4 -1
  4. data/data/sc2ai/protocol/debug.proto +5 -1
  5. data/data/sc2ai/protocol/error.proto +2 -1
  6. data/data/sc2ai/protocol/query.proto +1 -1
  7. data/data/sc2ai/protocol/raw.proto +9 -7
  8. data/data/sc2ai/protocol/sc2api.proto +21 -7
  9. data/data/sc2ai/protocol/score.proto +2 -1
  10. data/data/sc2ai/protocol/spatial.proto +2 -1
  11. data/data/sc2ai/protocol/ui.proto +5 -2
  12. data/lib/docker_build/Dockerfile.ruby +5 -3
  13. data/lib/sc2ai/api/ability_id.rb +6 -1
  14. data/lib/sc2ai/api/data.rb +15 -0
  15. data/lib/sc2ai/api/tech_tree.rb +1 -1
  16. data/lib/sc2ai/api/tech_tree_data.rb +54 -3
  17. data/lib/sc2ai/cli/cli.rb +1 -1
  18. data/lib/sc2ai/connection.rb +1 -1
  19. data/lib/sc2ai/local_play/client_manager.rb +2 -0
  20. data/lib/sc2ai/local_play/match.rb +0 -11
  21. data/lib/sc2ai/overrides/async/process/child.rb +1 -1
  22. data/lib/sc2ai/paths.rb +1 -1
  23. data/lib/sc2ai/player/debug.rb +36 -2
  24. data/lib/sc2ai/player/{geometry.rb → geo.rb} +41 -5
  25. data/lib/sc2ai/player/units.rb +32 -2
  26. data/lib/sc2ai/player.rb +8 -48
  27. data/lib/sc2ai/ports.rb +0 -1
  28. data/lib/sc2ai/protocol/_meta_documentation.rb +249 -4
  29. data/lib/sc2ai/protocol/common_pb.rb +2 -23
  30. data/lib/sc2ai/protocol/data_pb.rb +2 -23
  31. data/lib/sc2ai/protocol/debug_pb.rb +2 -24
  32. data/lib/sc2ai/protocol/error_pb.rb +2 -23
  33. data/lib/sc2ai/protocol/extensions/color.rb +1 -1
  34. data/lib/sc2ai/protocol/extensions/point_2_d.rb +4 -0
  35. data/lib/sc2ai/protocol/extensions/position.rb +1 -1
  36. data/lib/sc2ai/protocol/extensions/unit.rb +45 -4
  37. data/lib/sc2ai/protocol/extensions/unit_type_data.rb +8 -0
  38. data/lib/sc2ai/protocol/query_pb.rb +2 -24
  39. data/lib/sc2ai/protocol/raw_pb.rb +2 -24
  40. data/lib/sc2ai/protocol/sc2api_pb.rb +2 -31
  41. data/lib/sc2ai/protocol/score_pb.rb +2 -23
  42. data/lib/sc2ai/protocol/spatial_pb.rb +2 -24
  43. data/lib/sc2ai/protocol/ui_pb.rb +2 -23
  44. data/lib/sc2ai/unit_group/action_ext.rb +2 -2
  45. data/lib/sc2ai/unit_group/filter_ext.rb +36 -1
  46. data/lib/sc2ai/version.rb +1 -1
  47. data/lib/sc2ai.rb +0 -7
  48. data/lib/templates/new/.ladderignore +15 -5
  49. data/lib/templates/new/api/raw.proto +1 -1
  50. data/lib/templates/new/api/ui.proto +1 -1
  51. data/lib/templates/new/my_bot.rb.tt +1 -1
  52. data/sig/minaswan.rbs +10323 -0
  53. data/sig/sc2ai.rbs +1170 -980
  54. metadata +52 -25
  55. data/lib/sc2ai/data.rb +0 -101
  56. data/lib/sc2ai/protocol/extensions/unit_type.rb +0 -9
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sc2ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dyson Returns
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-27 00:00:00.000000000 Z
11
+ date: 2024-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -16,112 +16,112 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.14.1
19
+ version: '2.20'
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: 2.14.1
26
+ version: '2.20'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-websocket
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.27.0
33
+ version: '0.30'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.27.0
40
+ version: '0.30'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: google-protobuf
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 4.27.2
47
+ version: '4.28'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 4.27.2
54
+ version: '4.28'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: async-process
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3.1
61
+ version: '1.4'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.3.1
68
+ version: '1.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.3.1
75
+ version: '1.3'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.3.1
82
+ version: '1.3'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: numo-narray
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.9.2.1
89
+ version: '0.9'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.9.2.1
96
+ version: '0.9'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: numo-linalg
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.1.7
103
+ version: '0.1'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.1.7
110
+ version: '0.1'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rumale
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.29.0
117
+ version: '0.29'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.29.0
124
+ version: '0.29'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: sc2ai-kdtree
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,34 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.9.36
167
+ - !ruby/object:Gem::Dependency
168
+ name: abbrev
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.1.2
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.1.2
181
+ - !ruby/object:Gem::Dependency
182
+ name: ostruct
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.6.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.6.0
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: webrick
169
197
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +226,14 @@ dependencies:
198
226
  requirements:
199
227
  - - "~>"
200
228
  - !ruby/object:Gem::Version
201
- version: '1.39'
229
+ version: '1.40'
202
230
  type: :development
203
231
  prerelease: false
204
232
  version_requirements: !ruby/object:Gem::Requirement
205
233
  requirements:
206
234
  - - "~>"
207
235
  - !ruby/object:Gem::Version
208
- version: '1.39'
236
+ version: '1.40'
209
237
  - !ruby/object:Gem::Dependency
210
238
  name: factory_bot
211
239
  requirement: !ruby/object:Gem::Requirement
@@ -321,7 +349,6 @@ files:
321
349
  - lib/sc2ai/connection/connection_listener.rb
322
350
  - lib/sc2ai/connection/requests.rb
323
351
  - lib/sc2ai/connection/status_listener.rb
324
- - lib/sc2ai/data.rb
325
352
  - lib/sc2ai/local_play/client.rb
326
353
  - lib/sc2ai/local_play/client/configurable_options.rb
327
354
  - lib/sc2ai/local_play/client_manager.rb
@@ -335,7 +362,7 @@ files:
335
362
  - lib/sc2ai/player/actions.rb
336
363
  - lib/sc2ai/player/debug.rb
337
364
  - lib/sc2ai/player/game_state.rb
338
- - lib/sc2ai/player/geometry.rb
365
+ - lib/sc2ai/player/geo.rb
339
366
  - lib/sc2ai/player/previous_state.rb
340
367
  - lib/sc2ai/player/units.rb
341
368
  - lib/sc2ai/ports.rb
@@ -352,7 +379,6 @@ files:
352
379
  - lib/sc2ai/protocol/extensions/position.rb
353
380
  - lib/sc2ai/protocol/extensions/power_source.rb
354
381
  - lib/sc2ai/protocol/extensions/unit.rb
355
- - lib/sc2ai/protocol/extensions/unit_type.rb
356
382
  - lib/sc2ai/protocol/extensions/unit_type_data.rb
357
383
  - lib/sc2ai/protocol/query_pb.rb
358
384
  - lib/sc2ai/protocol/raw_pb.rb
@@ -381,6 +407,7 @@ files:
381
407
  - lib/templates/new/boot.rb.tt
382
408
  - lib/templates/new/my_bot.rb.tt
383
409
  - lib/templates/new/run_example_match.rb.tt
410
+ - sig/minaswan.rbs
384
411
  - sig/sc2ai.rbs
385
412
  homepage: https://sc2ai.pages.dev/
386
413
  licenses:
@@ -398,14 +425,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
398
425
  requirements:
399
426
  - - ">="
400
427
  - !ruby/object:Gem::Version
401
- version: 3.2.5
428
+ version: 3.2.6
402
429
  required_rubygems_version: !ruby/object:Gem::Requirement
403
430
  requirements:
404
431
  - - ">="
405
432
  - !ruby/object:Gem::Version
406
433
  version: '0'
407
434
  requirements: []
408
- rubygems_version: 3.5.14
435
+ rubygems_version: 3.5.18
409
436
  signing_key:
410
437
  specification_version: 4
411
438
  summary: STARCRAFT® II AI API
data/lib/sc2ai/data.rb DELETED
@@ -1,101 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "api/ability_id"
4
- require_relative "api/unit_type_id"
5
- require_relative "api/upgrade_id"
6
- require_relative "api/buff_id"
7
- require_relative "api/effect_id"
8
- require_relative "api/tech_tree"
9
-
10
- module Sc2
11
- # Holds game data from tech tree and Api::ResponseData
12
- # Called once on game start
13
- class Data
14
- # @!attribute abilities
15
- # @return [Hash<Integer, Api::AbilityData]>] AbilitId => AbilityData
16
- attr_accessor :abilities
17
- # @!attribute units
18
- # @return [Hash<Integer, Api::UnitTypeData>] UnitId => UnitData
19
- attr_accessor :units
20
- # @!attribute upgrades
21
- # @return [Hash<Integer, Api::UpgradeData>] UpgradeId => UpgradeData
22
- attr_accessor :upgrades
23
- # @!attribute buffs
24
- # Not particularly useful data. Just use BuffId directly
25
- # @return [Hash<Integer, Api::UpgradeData>] BuffId => BuffData
26
- attr_accessor :buffs
27
- # @!attribute effects
28
- # Not particularly useful data. Just use EffectId directly
29
- # @return [Hash<Integer, Api::UpgradeData>] EffectId => EffectData
30
- attr_accessor :effects
31
-
32
- # @param data [Api::ResponseData]
33
- def initialize(data)
34
- return unless data
35
-
36
- @abilities = abilities_from_proto(data.abilities)
37
- @units = units_from_proto(data.units)
38
- @upgrades = upgrades_from_proto(data.upgrades)
39
- @buffs = buffs_from_proto(data.buffs)
40
- @effects = effects_from_proto(data.effects)
41
- end
42
-
43
- private
44
-
45
- # Indexes ability data by ability id
46
- # @param abilities [Array<Api::AbilityData>]
47
- # @return [Hash<Integer, Api::AbilityData] indexed data
48
- def abilities_from_proto(abilities)
49
- result = {}
50
-
51
- ability_ids = Api::AbilityId.constants.map { |c| Api::AbilityId.const_get(c) }
52
- abilities.each do |a|
53
- next if a.ability_id.zero?
54
- next if ability_ids.delete(a.ability_id).nil?
55
-
56
- result[a.ability_id] = a
57
- end
58
- result
59
- end
60
-
61
- # Indexes unit data by id
62
- # @param units [Array<Api::UnitTypeData>]
63
- # @return [Hash<Integer, Api::UnitTypeData>] indexed data
64
- def units_from_proto(units)
65
- result = {}
66
- units.each do |u|
67
- next unless u.available
68
-
69
- result[u.unit_id] = u
70
- end
71
- result
72
- end
73
-
74
- # Indexes upgrades data by id
75
- # @param upgrades [Array<Api::UpgradeData>]
76
- # @return [Hash<Integer, Api::UpgradeData] indexed data
77
- def upgrades_from_proto(upgrades)
78
- result = {}
79
- upgrades.each do |u|
80
- result[u.upgrade_id] = u
81
- end
82
- result
83
- end
84
-
85
- def effects_from_proto(effects)
86
- result = {}
87
- effects.each do |e|
88
- result[e.effect_id] = e
89
- end
90
- result
91
- end
92
-
93
- def buffs_from_proto(buffs)
94
- result = {}
95
- buffs.each do |b|
96
- result[b.buff_id] = b
97
- end
98
- result
99
- end
100
- end
101
- end
@@ -1,9 +0,0 @@
1
- module Api
2
- # Adds additional functionality to message object Api::Unit
3
- module UnitTypeExtension
4
- def mood
5
- "Crafty"
6
- end
7
- end
8
- end
9
- Api::UnitTypeData.prepend Api::UnitTypeExtension