sc2ai 0.7.0 → 0.8.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 +4 -4
- data/data/data.json +1 -1
- data/data/data_readable.json +482 -22
- data/data/setup/setup.SC2Replay +0 -0
- data/data/stableid.json +297 -2321
- data/data/versions.json +17 -6
- data/docker_build/Dockerfile.ruby +1 -1
- data/lib/sc2ai/api/ability_id.rb +38 -2
- data/lib/sc2ai/api/buff_id.rb +5 -7
- data/lib/sc2ai/api/tech_tree_data.rb +3 -10
- data/lib/sc2ai/api/unit_type_id.rb +21 -47
- data/lib/sc2ai/cli/cli.rb +19 -11
- data/lib/sc2ai/cli/new.rb +6 -3
- data/lib/sc2ai/connection/requests.rb +7 -2
- data/lib/sc2ai/connection.rb +14 -5
- data/lib/sc2ai/local_play/client/configurable_options.rb +1 -1
- data/lib/sc2ai/local_play/client.rb +27 -21
- data/lib/sc2ai/local_play/client_manager.rb +1 -0
- data/lib/sc2ai/local_play/map_file.rb +3 -0
- data/lib/sc2ai/player/actions.rb +55 -0
- data/lib/sc2ai/player/game_state.rb +1 -0
- data/lib/sc2ai/player/geo.rb +3 -3
- data/lib/sc2ai/player/units.rb +3 -12
- data/lib/sc2ai/player.rb +23 -36
- data/lib/sc2ai/ports.rb +15 -3
- data/lib/sc2ai/protocol/extensions/position.rb +15 -3
- data/lib/sc2ai/protocol/extensions/unit.rb +64 -19
- data/lib/sc2ai/step_timer.rb +134 -0
- data/lib/sc2ai/unit_group/action_ext.rb +1 -1
- data/lib/sc2ai/unit_group/filter_ext.rb +152 -10
- data/lib/sc2ai/unit_group.rb +4 -4
- data/lib/sc2ai/version.rb +1 -1
- data/lib/sc2ai.rb +3 -4
- data/lib/templates/new/run_example_match.rb.tt +1 -1
- data/sig/sc2ai.rbs +336 -174
- metadata +35 -71
data/data/versions.json
CHANGED
@@ -559,19 +559,30 @@
|
|
559
559
|
"replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5",
|
560
560
|
"version": 92028
|
561
561
|
},
|
562
|
+
|
562
563
|
{
|
563
|
-
"base-version":
|
564
|
-
"data-hash": "
|
565
|
-
"fixed-hash": "
|
566
|
-
"label": "5.0.14
|
564
|
+
"base-version": 94137,
|
565
|
+
"data-hash": "519EE8D06E384469C652DD58FC6016AC",
|
566
|
+
"fixed-hash": "B100C340B3D0797CBE914AE091A68653",
|
567
|
+
"label": "5.0.14",
|
567
568
|
"replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5",
|
568
|
-
"version":
|
569
|
+
"version": 94137
|
570
|
+
},
|
571
|
+
{
|
572
|
+
"base-version": 95248,
|
573
|
+
"data-hash": "D3BB9F619ADA87F2943384DAF437EA32",
|
574
|
+
"fixed-hash": "17DA25BB12C6372C4E5944B5E4303906",
|
575
|
+
"label": "5.0.15",
|
576
|
+
"replay-hash": "5563DC35EC51D0464DC16B56B424C9DF",
|
577
|
+
"version": 95248
|
569
578
|
},
|
579
|
+
|
580
|
+
|
570
581
|
{
|
571
582
|
"base-version": 94137,
|
572
583
|
"data-hash": "519EE8D06E384469C652DD58FC6016AC",
|
573
584
|
"fixed-hash": "B100C340B3D0797CBE914AE091A68653",
|
574
|
-
"label": "
|
585
|
+
"label": "ladder",
|
575
586
|
"replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5",
|
576
587
|
"version": 94137
|
577
588
|
}
|
data/lib/sc2ai/api/ability_id.rb
CHANGED
@@ -119,6 +119,7 @@ module Api
|
|
119
119
|
LOAD_BUNKER = 407
|
120
120
|
UNLOADALL_BUNKER = 408
|
121
121
|
UNLOADUNIT_BUNKER = 410
|
122
|
+
COMMANDCENTERTRANSPORT_COMMANDCENTERTRANSPORT = 412
|
122
123
|
UNLOADALL_COMMANDCENTER = 413
|
123
124
|
UNLOADUNIT_COMMANDCENTER = 415
|
124
125
|
LOADALL_COMMANDCENTER = 416
|
@@ -146,6 +147,7 @@ module Api
|
|
146
147
|
BARRACKSTRAIN_REAPER = 561
|
147
148
|
BARRACKSTRAIN_GHOST = 562
|
148
149
|
BARRACKSTRAIN_MARAUDER = 563
|
150
|
+
FACTORYTRAIN_FACTORYTRAIN = 590
|
149
151
|
FACTORYTRAIN_SIEGETANK = 591
|
150
152
|
FACTORYTRAIN_THOR = 594
|
151
153
|
FACTORYTRAIN_HELLION = 595
|
@@ -410,9 +412,11 @@ module Api
|
|
410
412
|
TRAINQUEEN_QUEEN = 1632
|
411
413
|
BURROWCREEPTUMORDOWN_BURROWDOWN = 1662
|
412
414
|
TRANSFUSION_TRANSFUSION = 1664
|
415
|
+
TECHLABMORPH_TECHLABMORPH = 1666
|
413
416
|
BARRACKSTECHLABMORPH_TECHLABBARRACKS = 1668
|
414
417
|
FACTORYTECHLABMORPH_TECHLABFACTORY = 1670
|
415
418
|
STARPORTTECHLABMORPH_TECHLABSTARPORT = 1672
|
419
|
+
REACTORMORPH_REACTORMORPH = 1674
|
416
420
|
BARRACKSREACTORMORPH_REACTOR = 1676
|
417
421
|
FACTORYREACTORMORPH_REACTOR = 1678
|
418
422
|
STARPORTREACTORMORPH_REACTOR = 1680
|
@@ -440,17 +444,23 @@ module Api
|
|
440
444
|
BUILD_NYDUSWORM = 1768
|
441
445
|
BUILDNYDUSCANAL_SUMMONNYDUSCANALATTACKER = 1769
|
442
446
|
BUILDNYDUSCANAL_CANCEL = 1798
|
447
|
+
BROODLORDHANGAR_BROODLORDHANGAR = 1799
|
443
448
|
EFFECT_CHARGE = 1819
|
449
|
+
TOWERCAPTURE_TOWERCAPTURE = 1820
|
444
450
|
HERDINTERACT_HERD = 1821
|
445
451
|
CONTAMINATE_CONTAMINATE = 1825
|
452
|
+
SHATTER_SHATTER = 1827
|
446
453
|
CANCEL_QUEUEPASIVE = 1831
|
447
454
|
CANCELSLOT_QUEUEPASSIVE = 1832
|
448
455
|
CANCEL_QUEUEPASSIVECANCELTOSELECTION = 1833
|
449
456
|
CANCELSLOT_QUEUEPASSIVECANCELTOSELECTION = 1834
|
450
457
|
MORPHTOGHOSTNOVA_MOVE = 1837
|
451
458
|
DIGESTERCREEPSPRAY_DIGESTERCREEPSPRAY = 1839
|
459
|
+
MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS_MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS = 1841
|
452
460
|
MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS_CANCEL = 1842
|
461
|
+
MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT_MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT = 1843
|
453
462
|
MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT_CANCEL = 1844
|
463
|
+
MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT_MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT = 1845
|
454
464
|
MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT_CANCEL = 1846
|
455
465
|
MORPH_MOTHERSHIP = 1847
|
456
466
|
CANCEL_MORPHMOTHERSHIP = 1848
|
@@ -458,6 +468,7 @@ module Api
|
|
458
468
|
NEXUSINVULNERABILITY_NEXUSINVULNERABILITY = 1930
|
459
469
|
EFFECT_MASSRECALL_MOTHERSHIPCORE = 1974
|
460
470
|
MORPH_HELLION = 1978
|
471
|
+
MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS_MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS = 1996
|
461
472
|
MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS_CANCEL = 1997
|
462
473
|
MORPH_HELLBAT = 1998
|
463
474
|
BURROWDOWN_SWARMHOST = 2014
|
@@ -473,6 +484,7 @@ module Api
|
|
473
484
|
BLINDINGCLOUD_BLINDINGCLOUD = 2063
|
474
485
|
EFFECT_ABDUCT = 2067
|
475
486
|
VIPERCONSUMESTRUCTURE_VIPERCONSUME = 2073
|
487
|
+
TESTZERG_TESTZERG = 2079
|
476
488
|
TESTZERG_CANCEL = 2080
|
477
489
|
BEHAVIOR_BUILDINGATTACKON = 2081
|
478
490
|
BEHAVIOR_BUILDINGATTACKOFF = 2082
|
@@ -493,7 +505,9 @@ module Api
|
|
493
505
|
HALLUCINATION_ORACLE = 2114
|
494
506
|
EFFECT_MEDIVACIGNITEAFTERBURNERS = 2116
|
495
507
|
ORACLEREVELATION_ORACLEREVELATION = 2146
|
508
|
+
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT = 2152
|
496
509
|
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT_CANCEL = 2153
|
510
|
+
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT = 2154
|
497
511
|
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT_CANCEL = 2155
|
498
512
|
ULTRALISKWEAPONCOOLDOWN_ULTRALISKWEAPONCOOLDOWN = 2158
|
499
513
|
EFFECT_PHOTONOVERCHARGE = 2162
|
@@ -505,6 +519,22 @@ module Api
|
|
505
519
|
XELNAGA_CAVERNS_DOORSWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN = 2190
|
506
520
|
XELNAGA_CAVERNS_DOORWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN = 2194
|
507
521
|
EFFECT_TIMEWARP = 2244
|
522
|
+
TARSONIS_DOORN_TARSONIS_DOORN = 2262
|
523
|
+
TARSONIS_DOORNLOWERED_TARSONIS_DOORNLOWERED = 2264
|
524
|
+
TARSONIS_DOORNE_TARSONIS_DOORNE = 2266
|
525
|
+
TARSONIS_DOORNELOWERED_TARSONIS_DOORNELOWERED = 2268
|
526
|
+
TARSONIS_DOORE_TARSONIS_DOORE = 2270
|
527
|
+
TARSONIS_DOORELOWERED_TARSONIS_DOORELOWERED = 2272
|
528
|
+
TARSONIS_DOORNW_TARSONIS_DOORNW = 2274
|
529
|
+
TARSONIS_DOORNWLOWERED_TARSONIS_DOORNWLOWERED = 2276
|
530
|
+
COMPOUNDMANSION_DOORN_COMPOUNDMANSION_DOORN = 2278
|
531
|
+
COMPOUNDMANSION_DOORNLOWERED_COMPOUNDMANSION_DOORNLOWERED = 2280
|
532
|
+
COMPOUNDMANSION_DOORNE_COMPOUNDMANSION_DOORNE = 2282
|
533
|
+
COMPOUNDMANSION_DOORNELOWERED_COMPOUNDMANSION_DOORNELOWERED = 2284
|
534
|
+
COMPOUNDMANSION_DOORE_COMPOUNDMANSION_DOORE = 2286
|
535
|
+
COMPOUNDMANSION_DOORELOWERED_COMPOUNDMANSION_DOORELOWERED = 2288
|
536
|
+
COMPOUNDMANSION_DOORNW_COMPOUNDMANSION_DOORNW = 2290
|
537
|
+
COMPOUNDMANSION_DOORNWLOWERED_COMPOUNDMANSION_DOORNWLOWERED = 2292
|
508
538
|
CAUSTICSPRAY_CAUSTICSPRAY = 2324
|
509
539
|
MORPHTORAVAGER_RAVAGER = 2330
|
510
540
|
CANCEL_MORPHRAVAGER = 2331
|
@@ -533,6 +563,7 @@ module Api
|
|
533
563
|
HALLUCINATION_DISRUPTOR = 2389
|
534
564
|
HALLUCINATION_ADEPT = 2391
|
535
565
|
EFFECT_VOIDRAYPRISMATICALIGNMENT = 2393
|
566
|
+
SEEKERDUMMYCHANNEL_SEEKERDUMMYCHANNEL = 2395
|
536
567
|
VOIDMPIMMORTALREVIVEREBUILD_IMMORTAL = 2469
|
537
568
|
ARBITERMPSTASISFIELD_ARBITERMPSTASISFIELD = 2473
|
538
569
|
ARBITERMPRECALL_ARBITERMPRECALL = 2475
|
@@ -566,6 +597,7 @@ module Api
|
|
566
597
|
CANCEL_ADEPTPHASESHIFT = 2594
|
567
598
|
CANCEL_ADEPTSHADEPHASESHIFT = 2596
|
568
599
|
SLAYNELEMENTALGRAB_SLAYNELEMENTALGRAB = 2598
|
600
|
+
MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS_MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS = 2600
|
569
601
|
MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS_CANCEL = 2601
|
570
602
|
EFFECT_SHADOWSTRIDE = 2700
|
571
603
|
EFFECT_SPAWNLOCUSTS = 2704
|
@@ -640,8 +672,11 @@ module Api
|
|
640
672
|
MOVE = 3794
|
641
673
|
PATROL = 3795
|
642
674
|
UNLOADUNIT = 3796
|
675
|
+
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN = 3966
|
643
676
|
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN_CANCEL = 3967
|
677
|
+
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN = 3969
|
644
678
|
MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN_CANCEL = 3970
|
679
|
+
HYDRALISKFRENZY_HYDRALISKFRENZY = 4109
|
645
680
|
AMORPHOUSARMORCLOUD_AMORPHOUSARMORCLOUD = 4111
|
646
681
|
SHIELDBATTERYRECHARGEEX5_SHIELDBATTERYRECHARGE = 4113
|
647
682
|
SHIELDBATTERYRECHARGEEX5_STOP = 4114
|
@@ -651,12 +686,11 @@ module Api
|
|
651
686
|
ENERGYRECHARGE_ENERGYRECHARGE = 4126
|
652
687
|
SALVAGEEFFECT_SALVAGE = 4128
|
653
688
|
WORKERSTOPIDLEABILITYVESPENE_GATHER = 4132
|
654
|
-
FRENZY = 4109
|
655
689
|
|
656
690
|
# Returns an array of all constants
|
657
691
|
# @return [Array<Integer>]
|
658
692
|
def self.ids
|
659
|
-
@ids ||= [1, 2, 4, 5, 6, 7, 16, 17, 18, 19, 20, 23, 24, 25, 26, 28, 30, 36, 38, 40, 42, 45, 46, 47, 48, 49, 74, 76, 78, 110, 140, 142, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 167, 171, 173, 174, 175, 181, 195, 199, 203, 207, 211, 212, 216, 217, 218, 245, 249, 250, 251, 253, 255, 263, 265, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 312, 313, 314, 315, 316, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 331, 333, 348, 380, 382, 383, 386, 388, 390, 392, 393, 394, 396, 397, 399, 401, 403, 405, 407, 408, 410, 413, 415, 416, 417, 419, 421, 422, 451, 452, 454, 455, 484, 485, 487, 488, 517, 518, 520, 522, 524, 554, 556, 558, 560, 561, 562, 563, 591, 594, 595, 596, 597, 614, 620, 621, 622, 623, 624, 626, 650, 651, 652, 653, 654, 655, 656, 657, 658, 710, 730, 731, 732, 761, 763, 764, 765, 766, 767, 768, 769, 770, 790, 793, 796, 797, 799, 800, 802, 803, 806, 807, 820, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 880, 881, 882, 883, 884, 885, 886, 887, 889, 890, 891, 892, 893, 894, 895, 910, 911, 912, 913, 914, 916, 917, 919, 920, 921, 922, 946, 948, 950, 954, 955, 976, 977, 978, 979, 994, 1006, 1036, 1038, 1039, 1040, 1041, 1042, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1093, 1094, 1097, 1099, 1126, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167, 1182, 1183, 1184, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1216, 1217, 1218, 1219, 1220, 1221, 1223, 1224, 1225, 1252, 1253, 1282, 1283, 1284, 1312, 1313, 1314, 1315, 1316, 1317, 1342, 1343, 1344, 1345, 1346, 1348, 1351, 1352, 1353, 1354, 1356, 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1380, 1382, 1383, 1384, 1386, 1387, 1388, 1390, 1391, 1392, 1394, 1396, 1406, 1408, 1409, 1411, 1412, 1413, 1414, 1416, 1417, 1418, 1419, 1433, 1434, 1435, 1437, 1438, 1440, 1442, 1444, 1445, 1446, 1448, 1449, 1450, 1451, 1455, 1456, 1457, 1482, 1512, 1514, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1524, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1571, 1592, 1593, 1594, 1595, 1596, 1597, 1622, 1623, 1628, 1632, 1662, 1664, 1668, 1670, 1672, 1676, 1678, 1680, 1682, 1683, 1684, 1691, 1692, 1693, 1694, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1763, 1764, 1766, 1767, 1768, 1769, 1798, 1819, 1821, 1825, 1831, 1832, 1833, 1834, 1837, 1839, 1842, 1844, 1846, 1847, 1848, 1928, 1930, 1974, 1978, 1997, 1998, 2014, 2015, 2016, 2048, 2049, 2050, 2057, 2058, 2059, 2060, 2063, 2067, 2073, 2080, 2081, 2082, 2083, 2085, 2087, 2089, 2091, 2093, 2095, 2096, 2097, 2099, 2101, 2108, 2109, 2110, 2114, 2116, 2146, 2153, 2155, 2158, 2162, 2172, 2174, 2178, 2184, 2186, 2190, 2194, 2244, 2324, 2330, 2331, 2332, 2333, 2338, 2340, 2341, 2342, 2344, 2346, 2350, 2354, 2358, 2362, 2363, 2364, 2365, 2370, 2371, 2375, 2376, 2383, 2385, 2387, 2389, 2391, 2393, 2469, 2473, 2475, 2477, 2479, 2480, 2481, 2482, 2483, 2485, 2487, 2489, 2490, 2491, 2493, 2495, 2497, 2505, 2535, 2536, 2542, 2544, 2548, 2550, 2552, 2554, 2556, 2558, 2560, 2588, 2594, 2596, 2598, 2601, 2700, 2704, 2706, 2708, 2709, 2714, 2715, 2716, 2718, 2720, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3707, 3709, 3710, 3739, 3741, 3743, 3745, 3747, 3751, 3753, 3755, 3757, 3763, 3771, 3772, 3773, 3776, 3777, 3778, 3779, 3780, 3783, 3784, 3785, 3786, 3789, 3791, 3793, 3794, 3795, 3796, 3967, 3970, 4111, 4113, 4114, 4121, 4122, 4124, 4126, 4128, 4132
|
693
|
+
@ids ||= [1, 2, 4, 5, 6, 7, 16, 17, 18, 19, 20, 23, 24, 25, 26, 28, 30, 36, 38, 40, 42, 45, 46, 47, 48, 49, 74, 76, 78, 110, 140, 142, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 167, 171, 173, 174, 175, 181, 195, 199, 203, 207, 211, 212, 216, 217, 218, 245, 249, 250, 251, 253, 255, 263, 265, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 312, 313, 314, 315, 316, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 331, 333, 348, 380, 382, 383, 386, 388, 390, 392, 393, 394, 396, 397, 399, 401, 403, 405, 407, 408, 410, 412, 413, 415, 416, 417, 419, 421, 422, 451, 452, 454, 455, 484, 485, 487, 488, 517, 518, 520, 522, 524, 554, 556, 558, 560, 561, 562, 563, 590, 591, 594, 595, 596, 597, 614, 620, 621, 622, 623, 624, 626, 650, 651, 652, 653, 654, 655, 656, 657, 658, 710, 730, 731, 732, 761, 763, 764, 765, 766, 767, 768, 769, 770, 790, 793, 796, 797, 799, 800, 802, 803, 806, 807, 820, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 880, 881, 882, 883, 884, 885, 886, 887, 889, 890, 891, 892, 893, 894, 895, 910, 911, 912, 913, 914, 916, 917, 919, 920, 921, 922, 946, 948, 950, 954, 955, 976, 977, 978, 979, 994, 1006, 1036, 1038, 1039, 1040, 1041, 1042, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1093, 1094, 1097, 1099, 1126, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167, 1182, 1183, 1184, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1216, 1217, 1218, 1219, 1220, 1221, 1223, 1224, 1225, 1252, 1253, 1282, 1283, 1284, 1312, 1313, 1314, 1315, 1316, 1317, 1342, 1343, 1344, 1345, 1346, 1348, 1351, 1352, 1353, 1354, 1356, 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1380, 1382, 1383, 1384, 1386, 1387, 1388, 1390, 1391, 1392, 1394, 1396, 1406, 1408, 1409, 1411, 1412, 1413, 1414, 1416, 1417, 1418, 1419, 1433, 1434, 1435, 1437, 1438, 1440, 1442, 1444, 1445, 1446, 1448, 1449, 1450, 1451, 1455, 1456, 1457, 1482, 1512, 1514, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1524, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1571, 1592, 1593, 1594, 1595, 1596, 1597, 1622, 1623, 1628, 1632, 1662, 1664, 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1683, 1684, 1691, 1692, 1693, 1694, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1763, 1764, 1766, 1767, 1768, 1769, 1798, 1799, 1819, 1820, 1821, 1825, 1827, 1831, 1832, 1833, 1834, 1837, 1839, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1928, 1930, 1974, 1978, 1996, 1997, 1998, 2014, 2015, 2016, 2048, 2049, 2050, 2057, 2058, 2059, 2060, 2063, 2067, 2073, 2079, 2080, 2081, 2082, 2083, 2085, 2087, 2089, 2091, 2093, 2095, 2096, 2097, 2099, 2101, 2108, 2109, 2110, 2114, 2116, 2146, 2152, 2153, 2154, 2155, 2158, 2162, 2172, 2174, 2178, 2184, 2186, 2190, 2194, 2244, 2262, 2264, 2266, 2268, 2270, 2272, 2274, 2276, 2278, 2280, 2282, 2284, 2286, 2288, 2290, 2292, 2324, 2330, 2331, 2332, 2333, 2338, 2340, 2341, 2342, 2344, 2346, 2350, 2354, 2358, 2362, 2363, 2364, 2365, 2370, 2371, 2375, 2376, 2383, 2385, 2387, 2389, 2391, 2393, 2395, 2469, 2473, 2475, 2477, 2479, 2480, 2481, 2482, 2483, 2485, 2487, 2489, 2490, 2491, 2493, 2495, 2497, 2505, 2535, 2536, 2542, 2544, 2548, 2550, 2552, 2554, 2556, 2558, 2560, 2588, 2594, 2596, 2598, 2600, 2601, 2700, 2704, 2706, 2708, 2709, 2714, 2715, 2716, 2718, 2720, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3707, 3709, 3710, 3739, 3741, 3743, 3745, 3747, 3751, 3753, 3755, 3757, 3763, 3771, 3772, 3773, 3776, 3777, 3778, 3779, 3780, 3783, 3784, 3785, 3786, 3789, 3791, 3793, 3794, 3795, 3796, 3966, 3967, 3969, 3970, 4109, 4111, 4113, 4114, 4121, 4122, 4124, 4126, 4128, 4132]
|
660
694
|
end
|
661
695
|
end
|
662
696
|
end
|
@@ -737,6 +771,8 @@ module Api
|
|
737
771
|
Api::AbilityId::LOAD_BUNKER => Api::AbilityId::LOAD,
|
738
772
|
Api::AbilityId::UNLOADALL_BUNKER => Api::AbilityId::UNLOADALL,
|
739
773
|
Api::AbilityId::UNLOADUNIT_BUNKER => Api::AbilityId::UNLOADUNIT,
|
774
|
+
Api::AbilityId::COMMANDCENTERTRANSPORT_COMMANDCENTERTRANSPORT =>
|
775
|
+
Api::AbilityId::LOAD,
|
740
776
|
Api::AbilityId::UNLOADALL_COMMANDCENTER => Api::AbilityId::UNLOADALL,
|
741
777
|
Api::AbilityId::UNLOADUNIT_COMMANDCENTER => Api::AbilityId::UNLOADUNIT,
|
742
778
|
Api::AbilityId::LOADALL_COMMANDCENTER => Api::AbilityId::LOADALL,
|
data/lib/sc2ai/api/buff_id.rb
CHANGED
@@ -305,12 +305,10 @@ module Api
|
|
305
305
|
TAKENDAMAGE = 299
|
306
306
|
RAVENSCRAMBLERMISSILECARRIER = 300
|
307
307
|
BATTERYOVERCHARGE = 301
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
DUMMYBUFF004 = 307
|
314
|
-
DUMMYBUFF005 = 308
|
308
|
+
DUMMYBUFF002 = 302
|
309
|
+
DUMMYBUFF001 = 303
|
310
|
+
DUMMYBUFF003 = 304
|
311
|
+
DUMMYBUFF004 = 305
|
312
|
+
DUMMYBUFF005 = 306
|
315
313
|
end
|
316
314
|
end
|
@@ -418,10 +418,6 @@ module Api
|
|
418
418
|
Api::UnitTypeId::CREEPTUMORBURROWED =>
|
419
419
|
{Api::UnitTypeId::CREEPTUMOR =>
|
420
420
|
{ability: Api::AbilityId::BUILD_CREEPTUMOR,
|
421
|
-
requires_placement_position: true}},
|
422
|
-
Api::UnitTypeId::CREEPTUMORQUEEN =>
|
423
|
-
{Api::UnitTypeId::CREEPTUMOR =>
|
424
|
-
{ability: Api::AbilityId::BUILD_CREEPTUMOR_TUMOR,
|
425
421
|
requires_placement_position: true}},
|
426
422
|
Api::UnitTypeId::LARVA =>
|
427
423
|
{Api::UnitTypeId::DRONE => {ability: Api::AbilityId::LARVATRAIN_DRONE},
|
@@ -932,9 +928,7 @@ module Api
|
|
932
928
|
Api::UnitTypeId::BROODLORD => [Api::UnitTypeId::CORRUPTOR],
|
933
929
|
Api::UnitTypeId::CREEPTUMORQUEEN => [Api::UnitTypeId::QUEEN],
|
934
930
|
Api::UnitTypeId::CREEPTUMOR =>
|
935
|
-
[Api::UnitTypeId::QUEEN,
|
936
|
-
Api::UnitTypeId::CREEPTUMORBURROWED,
|
937
|
-
Api::UnitTypeId::CREEPTUMORQUEEN],
|
931
|
+
[Api::UnitTypeId::QUEEN, Api::UnitTypeId::CREEPTUMORBURROWED],
|
938
932
|
Api::UnitTypeId::CHANGELING =>
|
939
933
|
[Api::UnitTypeId::OVERSEER, Api::UnitTypeId::OVERSEERSIEGEMODE],
|
940
934
|
Api::UnitTypeId::DRONE => [Api::UnitTypeId::LARVA],
|
@@ -1772,7 +1766,7 @@ module Api
|
|
1772
1766
|
Api::AbilityId::SMART,
|
1773
1767
|
Api::AbilityId::BURROWDOWN_HYDRALISK,
|
1774
1768
|
Api::AbilityId::MORPH_LURKER,
|
1775
|
-
Api::AbilityId::
|
1769
|
+
Api::AbilityId::HYDRALISKFRENZY_HYDRALISKFRENZY],
|
1776
1770
|
Api::UnitTypeId::MUTALISK =>
|
1777
1771
|
[Api::AbilityId::STOP_STOP,
|
1778
1772
|
Api::AbilityId::MOVE_MOVE,
|
@@ -1916,8 +1910,7 @@ module Api
|
|
1916
1910
|
[Api::AbilityId::BUILD_CREEPTUMOR_TUMOR,
|
1917
1911
|
Api::AbilityId::SMART,
|
1918
1912
|
Api::AbilityId::BUILD_CREEPTUMOR],
|
1919
|
-
Api::UnitTypeId::CREEPTUMORQUEEN =>
|
1920
|
-
[Api::AbilityId::BUILD_CREEPTUMOR_TUMOR, Api::AbilityId::SMART],
|
1913
|
+
Api::UnitTypeId::CREEPTUMORQUEEN => [],
|
1921
1914
|
Api::UnitTypeId::SPINECRAWLERUPROOTED =>
|
1922
1915
|
[Api::AbilityId::STOP_STOP,
|
1923
1916
|
Api::AbilityId::MOVE_MOVE,
|
@@ -2023,52 +2023,26 @@ module Api
|
|
2023
2023
|
MECHABATTLECARRIERLORDACGLUESCREENDUMMY_2 = 2007
|
2024
2024
|
MECHASPINECRAWLERACGLUESCREENDUMMY_2 = 2008
|
2025
2025
|
MECHASPORECRAWLERACGLUESCREENDUMMY_2 = 2009
|
2026
|
-
|
2027
|
-
|
2028
|
-
|
2029
|
-
|
2030
|
-
|
2031
|
-
|
2032
|
-
|
2033
|
-
|
2034
|
-
|
2035
|
-
|
2036
|
-
|
2037
|
-
|
2038
|
-
|
2039
|
-
|
2040
|
-
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
LOADOUTSPRAY10_2 = 2031
|
2048
|
-
LOADOUTSPRAY11_2 = 2032
|
2049
|
-
LOADOUTSPRAY12_2 = 2033
|
2050
|
-
LOADOUTSPRAY13_2 = 2034
|
2051
|
-
LOADOUTSPRAY14_2 = 2035
|
2052
|
-
COLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN = 2036
|
2053
|
-
COLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN = 2037
|
2054
|
-
COLLAPSIBLEROCKTOWERPUSHUNITRAMPLEFTGREEN = 2038
|
2055
|
-
COLLAPSIBLEROCKTOWERPUSHUNITRAMPRIGHTGREEN = 2039
|
2056
|
-
COLLAPSIBLEROCKTOWERRAMPLEFTGREEN = 2040
|
2057
|
-
COLLAPSIBLEROCKTOWERRAMPRIGHTGREEN = 2041
|
2058
|
-
DUMMYUNIT000 = 2042
|
2059
|
-
DUMMYUNIT001 = 2043
|
2060
|
-
DUMMYUNIT002 = 2044
|
2061
|
-
DUMMYUNIT003 = 2045
|
2062
|
-
DUMMYUNIT004 = 2046
|
2063
|
-
DUMMYUNIT005 = 2047
|
2064
|
-
DUMMYUNIT006 = 2048
|
2065
|
-
DUMMYUNIT007 = 2049
|
2066
|
-
DUMMYUNIT008 = 2050
|
2067
|
-
DUMMYUNIT009 = 2051
|
2068
|
-
DUMMYUNIT010 = 2052
|
2069
|
-
DUMMYUNIT011 = 2053
|
2070
|
-
DUMMYUNIT012 = 2054
|
2071
|
-
DUMMYUNIT013 = 2055
|
2072
|
-
DUMMYUNIT014 = 2056
|
2026
|
+
COLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN = 2010
|
2027
|
+
COLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN = 2011
|
2028
|
+
COLLAPSIBLEROCKTOWERPUSHUNITRAMPLEFTGREEN = 2012
|
2029
|
+
COLLAPSIBLEROCKTOWERPUSHUNITRAMPRIGHTGREEN = 2013
|
2030
|
+
COLLAPSIBLEROCKTOWERRAMPLEFTGREEN = 2014
|
2031
|
+
COLLAPSIBLEROCKTOWERRAMPRIGHTGREEN = 2015
|
2032
|
+
DUMMYUNIT000 = 2016
|
2033
|
+
DUMMYUNIT001 = 2017
|
2034
|
+
DUMMYUNIT002 = 2018
|
2035
|
+
DUMMYUNIT003 = 2019
|
2036
|
+
DUMMYUNIT004 = 2020
|
2037
|
+
DUMMYUNIT005 = 2021
|
2038
|
+
DUMMYUNIT006 = 2022
|
2039
|
+
DUMMYUNIT007 = 2023
|
2040
|
+
DUMMYUNIT008 = 2024
|
2041
|
+
DUMMYUNIT009 = 2025
|
2042
|
+
DUMMYUNIT010 = 2026
|
2043
|
+
DUMMYUNIT011 = 2027
|
2044
|
+
DUMMYUNIT012 = 2028
|
2045
|
+
DUMMYUNIT013 = 2029
|
2046
|
+
DUMMYUNIT014 = 2030
|
2073
2047
|
end
|
2074
2048
|
end
|
data/lib/sc2ai/cli/cli.rb
CHANGED
@@ -19,22 +19,23 @@ module Sc2
|
|
19
19
|
register(Sc2::Cli::Ladderzip, "ladderzip", "ladderzip BOTNAME", "Prepares a zip via docker for supplied aiarena bot name")
|
20
20
|
register(Sc2::Cli::VersusBot, "vsbot", "vsbot FILENAME", "Copies target zip to docker and starts a match")
|
21
21
|
|
22
|
-
|
23
|
-
desc "setup410", "Downloads and install SC2 v4.10"
|
24
|
-
# downloads and install SC2 v4.10
|
22
|
+
desc "setup410", "alias of download_ladder_version"
|
25
23
|
def setup410
|
24
|
+
download_ladder_version
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "download_ladder_version", "Downloads and install SC2 at the patch used for ladder"
|
28
|
+
# downloads and install SC2 "ladder" as pinned in versions.json
|
29
|
+
def download_ladder_version
|
26
30
|
require "sc2ai"
|
27
31
|
Async do
|
28
32
|
Sc2.logger.level = :fatal
|
29
33
|
say " "
|
30
|
-
say "This script sets up SC2 at
|
34
|
+
say "This script sets up SC2 at the same version use competitively."
|
31
35
|
say "SC2 will launch a blank window, be unresponsive, but download about 100mb in the background."
|
32
36
|
say ""
|
33
37
|
say "It will appear to hang as it updates. This is normal."
|
34
38
|
say "Let it finish and close itself."
|
35
|
-
say "Press any key to continue..."
|
36
|
-
ask ""
|
37
|
-
|
38
39
|
say ""
|
39
40
|
say ""
|
40
41
|
say "This will only take a minute..."
|
@@ -53,7 +54,14 @@ module Sc2
|
|
53
54
|
)
|
54
55
|
|
55
56
|
# Auto-detect executable path and ensure it matched exactly
|
56
|
-
base_build = "
|
57
|
+
base_build = ""
|
58
|
+
Sc2::Client.versions_json.each do |node|
|
59
|
+
if node["label"] == "ladder"
|
60
|
+
base_build = node["base-version"].to_s
|
61
|
+
break
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
57
65
|
path = Sc2::Paths.executable(base_build: base_build)
|
58
66
|
if path.include?(base_build) && Pathname(path).exist?
|
59
67
|
say " "
|
@@ -69,13 +77,13 @@ module Sc2
|
|
69
77
|
|
70
78
|
observer.api.quit
|
71
79
|
observer.disconnect
|
72
|
-
say "Generating sc2ai.yml to always use
|
73
|
-
Sc2.config.config_file.write({"version" => "
|
80
|
+
say "Generating sc2ai.yml to always use version 'ladder'..."
|
81
|
+
Sc2.config.config_file.write({"version" => "ladder"}.to_yaml.to_s)
|
74
82
|
say ""
|
75
83
|
say "Done. You're good to go."
|
76
84
|
say "To run an example match, execute:"
|
77
85
|
say ""
|
78
|
-
say "ruby run_example_match.rb", :
|
86
|
+
say "ruby run_example_match.rb", :cyan
|
79
87
|
say ""
|
80
88
|
ensure
|
81
89
|
Sc2::ClientManager.stop(0)
|
data/lib/sc2ai/cli/new.rb
CHANGED
@@ -5,6 +5,7 @@ module Sc2
|
|
5
5
|
class Cli < Thor
|
6
6
|
class New < Thor::Group
|
7
7
|
include Thor::Actions
|
8
|
+
|
8
9
|
desc "Creates a new bot"
|
9
10
|
|
10
11
|
# Define arguments and options
|
@@ -76,11 +77,13 @@ module Sc2
|
|
76
77
|
say ""
|
77
78
|
say "Bot generated, next steps:"
|
78
79
|
say ""
|
79
|
-
say "cd #{@directory} && bundle install", :
|
80
|
+
say "cd #{@directory} && bundle install", :cyan
|
81
|
+
say ""
|
82
|
+
say "Afterwards, it is recommended to setup SC2 to match the ladder version with:"
|
80
83
|
say ""
|
81
|
-
say "
|
84
|
+
say "bundle exec sc2ai download_ladder_version", :cyan
|
82
85
|
say ""
|
83
|
-
say "
|
86
|
+
say "Refer to the docs to get the 'AI Edition' maps or further help: https://sc2ai.pages.dev/"
|
84
87
|
say ""
|
85
88
|
end
|
86
89
|
end
|
@@ -57,7 +57,7 @@ module Sc2
|
|
57
57
|
show_cloaked: true,
|
58
58
|
show_burrowed_shadows: true,
|
59
59
|
show_placeholders: true,
|
60
|
-
raw_affects_selection: Sc2.ladder?,
|
60
|
+
raw_affects_selection: enable_feature_layer || Sc2.ladder?,
|
61
61
|
raw_crop_to_playable_area: true, **interface_options
|
62
62
|
)
|
63
63
|
)
|
@@ -207,8 +207,13 @@ module Sc2
|
|
207
207
|
@_cached_request_observation ||= Api::Request.new(
|
208
208
|
observation: Api::RequestObservation.new
|
209
209
|
).to_proto
|
210
|
+
|
211
|
+
time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
|
210
212
|
@websocket.send_binary(@_cached_request_observation)
|
211
|
-
response =
|
213
|
+
response = @websocket.read.to_str
|
214
|
+
@external_time += Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - time
|
215
|
+
|
216
|
+
response = Api::Response.decode(response)
|
212
217
|
|
213
218
|
if @status != response.status
|
214
219
|
@status = response.status
|
data/lib/sc2ai/connection.rb
CHANGED
@@ -11,6 +11,11 @@ module Sc2
|
|
11
11
|
# Api requests
|
12
12
|
include Sc2::Connection::Requests
|
13
13
|
|
14
|
+
# @private
|
15
|
+
# Total milliseconds spent waiting on SC2 responses
|
16
|
+
# @return [Float]
|
17
|
+
attr_accessor :external_time
|
18
|
+
|
14
19
|
attr_accessor :host, :port, :websocket
|
15
20
|
|
16
21
|
# Last known game status, i.e. :launched, :ended, :unknown
|
@@ -37,6 +42,7 @@ module Sc2
|
|
37
42
|
@listeners = {}
|
38
43
|
@websocket = nil
|
39
44
|
@status = :unknown
|
45
|
+
@external_time = 0.0
|
40
46
|
# Only allow one request at a time.
|
41
47
|
# TODO: Since it turns out the client websocket can only handle 1 request at a time, we don't stricly need Async
|
42
48
|
@scheduler = Async::Semaphore.new(1)
|
@@ -94,19 +100,20 @@ module Sc2
|
|
94
100
|
# @return [Api::Response] response
|
95
101
|
def send_request(request)
|
96
102
|
@scheduler.async do |_task|
|
97
|
-
# r = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) #debug
|
98
|
-
# name = request.is_a?(String) ? request : request.request #debug
|
99
103
|
request = request.to_proto unless request.is_a?(String)
|
104
|
+
|
105
|
+
time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
|
100
106
|
@websocket.send_binary(request)
|
101
|
-
response =
|
107
|
+
response = @websocket.read.to_str
|
108
|
+
@external_time += Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - time
|
109
|
+
|
110
|
+
response = Api::Response.decode(response)
|
102
111
|
|
103
112
|
if @status != response.status
|
104
113
|
@status = response.status
|
105
114
|
@listeners[StatusListener.name]&.each { _1.on_status_change(@status) }
|
106
115
|
end
|
107
116
|
|
108
|
-
# Sc2.logger.debug { response }
|
109
|
-
# puts "#{(::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - r) * 1000} - #{name}" #debug
|
110
117
|
response
|
111
118
|
end.wait
|
112
119
|
rescue EOFError => e
|
@@ -121,6 +128,7 @@ module Sc2
|
|
121
128
|
# @return [void]
|
122
129
|
def send_request_and_ignore(request)
|
123
130
|
@scheduler.async do |_task|
|
131
|
+
time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
|
124
132
|
@websocket.send_binary(request)
|
125
133
|
while @websocket.read_frame
|
126
134
|
if @websocket.frames.last&.finished?
|
@@ -128,6 +136,7 @@ module Sc2
|
|
128
136
|
break
|
129
137
|
end
|
130
138
|
end
|
139
|
+
@external_time += Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - time
|
131
140
|
end.wait
|
132
141
|
|
133
142
|
nil
|
@@ -82,7 +82,7 @@ module Sc2
|
|
82
82
|
attr_accessor :windowy # -windowy
|
83
83
|
|
84
84
|
# @!attribute version
|
85
|
-
# Version number such as "4.10". Leave blank to use latest
|
85
|
+
# Version number such as "ladder" or "4.10". Leave blank to use latest
|
86
86
|
# @return [String,nil]
|
87
87
|
attr_accessor :version
|
88
88
|
|
@@ -5,6 +5,27 @@ require_relative "client/configurable_options"
|
|
5
5
|
module Sc2
|
6
6
|
# Manages client connection to the Api
|
7
7
|
class Client
|
8
|
+
class << self
|
9
|
+
# @private
|
10
|
+
# Reads bundled versions.json
|
11
|
+
# See tact archive or blizztrack for update config file
|
12
|
+
# https://github.com/mdX7/tact_configs/blob/77ecc4176689ab6c50be342e1ad73127ffe358d7/tpr/sc2/config/08/b3/08b331b39d9fbe95c338ec370e63f2e2#L4
|
13
|
+
# https://blizztrack.com/config/s2/bc/8453c2f1c98b955334c7284215429c36
|
14
|
+
# @example
|
15
|
+
# {
|
16
|
+
# "base-version": 92028, # <- from "build-name" [1..-1] = "B92028"
|
17
|
+
# "data-hash": "2B7746A6706F919775EF1BADFC95EA1C", # <- from "root"
|
18
|
+
# "fixed-hash": "163B1CDF46F09B621F6312CD6901228E", # <- from "build-fixed-hash"
|
19
|
+
# "label": "5.0.13", # <- check game client
|
20
|
+
# "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5", # <- from "build-replay-hash"
|
21
|
+
# "version": 92028 <- always same as base-version these days
|
22
|
+
# },
|
23
|
+
# @return [Array] JSON contents of versions.json
|
24
|
+
def versions_json
|
25
|
+
JSON.load_file(Paths.gem_data_versions_path)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
8
29
|
include Sc2::Client::ConfigurableOptions
|
9
30
|
|
10
31
|
# @!attribute port
|
@@ -92,7 +113,7 @@ module Sc2
|
|
92
113
|
def use_version(version)
|
93
114
|
found_base_build = nil
|
94
115
|
found_data_version = nil
|
95
|
-
versions_json.each do |node|
|
116
|
+
Sc2::Client.versions_json.each do |node|
|
96
117
|
if version == node["label"]
|
97
118
|
found_base_build = node["base-version"]
|
98
119
|
found_data_version = node["data-hash"]
|
@@ -121,7 +142,11 @@ module Sc2
|
|
121
142
|
# Takes all configuration and Sc2 executable string with arguments
|
122
143
|
# @return [String] command to launch Sc2
|
123
144
|
def command_string
|
124
|
-
command = "
|
145
|
+
command = ""
|
146
|
+
if Paths.platform == Paths::PF_WINE
|
147
|
+
command = "#{ENV["WINE"] || "wine"} "
|
148
|
+
end
|
149
|
+
command += "\"#{Sc2::Paths.executable(base_build: @base_build)}\" "
|
125
150
|
command += " -port #{@port}"
|
126
151
|
if Paths.platform == Paths::PF_WSL2
|
127
152
|
# For WSL2, always let windows listen on all 0.0.0.0
|
@@ -147,24 +172,5 @@ module Sc2
|
|
147
172
|
|
148
173
|
command
|
149
174
|
end
|
150
|
-
|
151
|
-
# @private
|
152
|
-
# Reads bundled versions.json
|
153
|
-
# See tact archive or blizztrack for update config file
|
154
|
-
# https://github.com/mdX7/tact_configs/blob/77ecc4176689ab6c50be342e1ad73127ffe358d7/tpr/sc2/config/08/b3/08b331b39d9fbe95c338ec370e63f2e2#L4
|
155
|
-
# https://blizztrack.com/config/s2/bc/8453c2f1c98b955334c7284215429c36return
|
156
|
-
# @example
|
157
|
-
# {
|
158
|
-
# "base-version": 92028, # <- from "build-name" [1..-1] = "B92028"
|
159
|
-
# "data-hash": "2B7746A6706F919775EF1BADFC95EA1C", # <- from "root"
|
160
|
-
# "fixed-hash": "163B1CDF46F09B621F6312CD6901228E", # <- from "build-fixed-hash"
|
161
|
-
# "label": "5.0.13", # <- check game client
|
162
|
-
# "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5", # <- from "build-replay-hash"
|
163
|
-
# "version": 92028 <- always same as base-version these days
|
164
|
-
# },
|
165
|
-
# @return [Array] JSON contents of versions.json
|
166
|
-
def versions_json
|
167
|
-
JSON.load_file(Paths.gem_data_versions_path)
|
168
|
-
end
|
169
175
|
end
|
170
176
|
end
|
@@ -29,6 +29,9 @@ module Sc2
|
|
29
29
|
@path = Pathname(Paths.maps_dir).glob("**/#{name}").first.to_s
|
30
30
|
if Paths.wsl?
|
31
31
|
@path = Paths.wsl_to_win(path: @path)
|
32
|
+
elsif Paths.platform == Paths::PF_WINE
|
33
|
+
# Get relative path based on Maps folder
|
34
|
+
@path = Pathname(@path.gsub(Pathname(Paths.maps_dir).to_s, "")).to_s
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|