vault_coh 4.0.0 → 6.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
  SHA256:
3
- metadata.gz: efcd317fb3639ebb84a7fcb11f7d3b513422211d1c2b87f3e564ce4ddbf78f74
4
- data.tar.gz: c52abcfeceab7cafcb94f15e93dad181afb600bc8bbbb29e0ebf8ea0ebe61c33
3
+ metadata.gz: b761236eb71771fd8c489d2867ae4ec1b77361e0834ae8636ea86e492994ea1c
4
+ data.tar.gz: b600e4662c61af2a3ccbe1104de63ad506909de5daaff9d0171ecbe397862ce2
5
5
  SHA512:
6
- metadata.gz: 866f6b1d80b16c5a006d0f3878202225c26b08138e088c24b31990e71a698a137e5f04bc58992dd038826939dacc75f356409566c0b358a637315ebe3309e789
7
- data.tar.gz: a5d2d75254cbeb6bdc05b23fb0adec01d9df3c379d8b862be8b4e8568f56d56eb349255b1cf4b49bd68ff76202366b7ccd22eb445abf65576cabacb2126a1a55
6
+ metadata.gz: 033d7db015b8ff4cfc49c93b71d47d625790766844c2b3693faf17dcf1ece45bde53772622f9a4e223845166327cdbbc87891cdfd79ff6b9b6eba5a5962e9da6
7
+ data.tar.gz: 5c61de1481d40eaf667a9b70cc67ab1e93fe50a7b8f6853e79e58aacda8d48a21d4daa1540de150899d4fd359b1805eabc6273882f8fdefeae1cc00b68ca2d07
data/Cargo.lock CHANGED
@@ -322,9 +322,9 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
322
322
 
323
323
  [[package]]
324
324
  name = "shlex"
325
- version = "1.2.0"
325
+ version = "1.3.0"
326
326
  source = "registry+https://github.com/rust-lang/crates.io-index"
327
- checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380"
327
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
328
328
 
329
329
  [[package]]
330
330
  name = "syn"
@@ -360,11 +360,20 @@ version = "1.0.12"
360
360
  source = "registry+https://github.com/rust-lang/crates.io-index"
361
361
  checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
362
362
 
363
+ [[package]]
364
+ name = "uuid"
365
+ version = "1.7.0"
366
+ source = "registry+https://github.com/rust-lang/crates.io-index"
367
+ checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
368
+ dependencies = [
369
+ "serde",
370
+ ]
371
+
363
372
  [[package]]
364
373
  name = "vault"
365
- version = "7.0.0"
374
+ version = "9.0.0"
366
375
  source = "registry+https://github.com/rust-lang/crates.io-index"
367
- checksum = "c883ce2ee65509850bbf77b935dac0d6876392de077138650de1f5d109381bd8"
376
+ checksum = "771f7db565a750b784bea91fc8cf5190fca40a1f77c791e05d5a5e4168bfff59"
368
377
  dependencies = [
369
378
  "byteorder",
370
379
  "magnus",
@@ -372,6 +381,7 @@ dependencies = [
372
381
  "nom-tracable",
373
382
  "nom_locate",
374
383
  "serde",
384
+ "uuid",
375
385
  ]
376
386
 
377
387
  [[package]]
data/Gemfile CHANGED
@@ -5,11 +5,11 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in vault_coh.gemspec
6
6
  gemspec
7
7
 
8
- gem 'rake', '~> 13.0'
8
+ gem 'rake', '~> 13.2'
9
9
 
10
10
  gem 'rake-compiler'
11
11
  gem 'rb_sys'
12
12
 
13
- gem 'rspec', '~> 3.0'
13
+ gem 'rspec', '~> 3.13'
14
14
 
15
- gem 'rubocop', '~> 1.59'
15
+ gem 'rubocop', '~> 1.64'
data/Gemfile.lock CHANGED
@@ -1,54 +1,56 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vault_coh (4.0.0)
4
+ vault_coh (6.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  ast (2.4.2)
10
- diff-lcs (1.5.0)
11
- json (2.7.1)
10
+ diff-lcs (1.5.1)
11
+ json (2.7.2)
12
12
  language_server-protocol (3.17.0.3)
13
13
  parallel (1.24.0)
14
- parser (3.3.0.3)
14
+ parser (3.3.2.0)
15
15
  ast (~> 2.4.1)
16
16
  racc
17
- racc (1.7.3)
17
+ racc (1.8.0)
18
18
  rainbow (3.1.1)
19
- rake (13.1.0)
20
- rake-compiler (1.2.5)
19
+ rake (13.2.1)
20
+ rake-compiler (1.2.7)
21
21
  rake
22
- rb_sys (0.9.86)
23
- regexp_parser (2.9.0)
24
- rexml (3.2.6)
25
- rspec (3.12.0)
26
- rspec-core (~> 3.12.0)
27
- rspec-expectations (~> 3.12.0)
28
- rspec-mocks (~> 3.12.0)
29
- rspec-core (3.12.2)
30
- rspec-support (~> 3.12.0)
31
- rspec-expectations (3.12.3)
22
+ rb_sys (0.9.97)
23
+ regexp_parser (2.9.2)
24
+ rexml (3.2.8)
25
+ strscan (>= 3.0.9)
26
+ rspec (3.13.0)
27
+ rspec-core (~> 3.13.0)
28
+ rspec-expectations (~> 3.13.0)
29
+ rspec-mocks (~> 3.13.0)
30
+ rspec-core (3.13.0)
31
+ rspec-support (~> 3.13.0)
32
+ rspec-expectations (3.13.0)
32
33
  diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.12.0)
34
- rspec-mocks (3.12.6)
34
+ rspec-support (~> 3.13.0)
35
+ rspec-mocks (3.13.1)
35
36
  diff-lcs (>= 1.2.0, < 2.0)
36
- rspec-support (~> 3.12.0)
37
- rspec-support (3.12.1)
38
- rubocop (1.59.0)
37
+ rspec-support (~> 3.13.0)
38
+ rspec-support (3.13.1)
39
+ rubocop (1.64.1)
39
40
  json (~> 2.3)
40
41
  language_server-protocol (>= 3.17.0)
41
42
  parallel (~> 1.10)
42
- parser (>= 3.2.2.4)
43
+ parser (>= 3.3.0.2)
43
44
  rainbow (>= 2.2.2, < 4.0)
44
45
  regexp_parser (>= 1.8, < 3.0)
45
46
  rexml (>= 3.2.5, < 4.0)
46
- rubocop-ast (>= 1.30.0, < 2.0)
47
+ rubocop-ast (>= 1.31.1, < 2.0)
47
48
  ruby-progressbar (~> 1.7)
48
49
  unicode-display_width (>= 2.4.0, < 3.0)
49
- rubocop-ast (1.30.0)
50
- parser (>= 3.2.1.0)
50
+ rubocop-ast (1.31.3)
51
+ parser (>= 3.3.1.0)
51
52
  ruby-progressbar (1.13.0)
53
+ strscan (3.1.0)
52
54
  unicode-display_width (2.5.0)
53
55
 
54
56
  PLATFORMS
@@ -56,11 +58,11 @@ PLATFORMS
56
58
  x86_64-linux
57
59
 
58
60
  DEPENDENCIES
59
- rake (~> 13.0)
61
+ rake (~> 13.2)
60
62
  rake-compiler
61
63
  rb_sys
62
- rspec (~> 3.0)
63
- rubocop (~> 1.59)
64
+ rspec (~> 3.13)
65
+ rubocop (~> 1.64)
64
66
  vault_coh!
65
67
 
66
68
  BUNDLED WITH
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # Vault
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/vault_coh.svg)](https://badge.fury.io/rb/vault_coh) [![Documentation](https://img.shields.io/badge/View-Documentation-blue.svg)](https://rubydoc.info/github/ryantaylor/vault-rb/v4.0.0)
3
+ [![Gem Version](https://badge.fury.io/rb/vault_coh.svg)](https://badge.fury.io/rb/vault_coh) [![Documentation](https://img.shields.io/badge/View-Documentation-blue.svg)](https://rubydoc.info/github/ryantaylor/vault-rb/v6.0.0)
4
4
 
5
5
  A native Ruby client wrapper for the [vault](https://github.com/ryantaylor/vault) Company of Heroes replay parser, integrated via a Rust native extension.
6
6
 
7
7
  ## Installation
8
8
 
9
- First, make sure you have a relatively recent version of the Rust toolchain installed (minimum supported Rust version for `vault` is 1.65.0). You can install Rust easily using [rustup](https://rustup.rs/).
9
+ First, make sure you have a relatively recent version of the Rust toolchain installed (minimum supported Rust version for `vault` is 1.66.0). You can install Rust easily using [rustup](https://rustup.rs/).
10
10
 
11
11
  Then you can add to Gemfile:
12
12
  ```
@@ -24,7 +24,7 @@ bytes = File.read('/path/to/replay.rec').unpack('C*')
24
24
  replay = VaultCoh::Replay.from_bytes(bytes)
25
25
  puts replay.version
26
26
  ```
27
- All information available from parsing can be found in the [documentation](https://rubydoc.info/github/ryantaylor/vault-rb/v4.0.0).
27
+ All information available from parsing can be found in the [documentation](https://rubydoc.info/github/ryantaylor/vault-rb/v6.0.0).
28
28
 
29
29
  ## Contributing
30
30
 
@@ -12,4 +12,4 @@ crate-type = ["cdylib"]
12
12
  [dependencies]
13
13
  magnus = { version = "0.6" }
14
14
  serde_magnus = { version = "0.8" }
15
- vault = { version = "7", features = ["magnus", "serde"] }
15
+ vault = { version = "9", features = ["magnus", "serde"] }
@@ -1,8 +1,4 @@
1
- use magnus::Value;
2
- use vault::commands::{
3
- BuildGlobalUpgrade, BuildSquad, SelectBattlegroup, SelectBattlegroupAbility, Unknown,
4
- UseBattlegroupAbility,
5
- };
1
+ use magnus::{value::ReprValue, RHash, RString, Value};
6
2
  use vault::{Command, Map, Message, Player, Replay};
7
3
 
8
4
  pub trait HashExt {
@@ -35,42 +31,73 @@ impl HashExt for Message {
35
31
 
36
32
  impl HashExt for Command {
37
33
  fn to_h(&self) -> Value {
38
- serde_magnus::serialize(self).unwrap()
39
- }
40
- }
41
-
42
- impl HashExt for BuildGlobalUpgrade {
43
- fn to_h(&self) -> Value {
44
- serde_magnus::serialize(self).unwrap()
45
- }
46
- }
47
-
48
- impl HashExt for BuildSquad {
49
- fn to_h(&self) -> Value {
50
- serde_magnus::serialize(self).unwrap()
51
- }
52
- }
53
-
54
- impl HashExt for SelectBattlegroup {
55
- fn to_h(&self) -> Value {
56
- serde_magnus::serialize(self).unwrap()
57
- }
58
- }
59
-
60
- impl HashExt for SelectBattlegroupAbility {
61
- fn to_h(&self) -> Value {
62
- serde_magnus::serialize(self).unwrap()
63
- }
64
- }
65
-
66
- impl HashExt for UseBattlegroupAbility {
67
- fn to_h(&self) -> Value {
68
- serde_magnus::serialize(self).unwrap()
69
- }
70
- }
71
-
72
- impl HashExt for Unknown {
73
- fn to_h(&self) -> Value {
74
- serde_magnus::serialize(self).unwrap()
34
+ match self {
35
+ Command::BuildGlobalUpgrade(data) => {
36
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
37
+ hash.aset("type", RString::new("BuildGlobalUpgrade"))
38
+ .unwrap();
39
+ hash.aset("action_type", RString::new("CMD_Upgrade"))
40
+ .unwrap();
41
+ hash.as_value()
42
+ }
43
+ Command::BuildSquad(data) => {
44
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
45
+ hash.aset("type", RString::new("BuildSquad")).unwrap();
46
+ hash.aset("action_type", RString::new("CMD_BuildSquad"))
47
+ .unwrap();
48
+ hash.as_value()
49
+ }
50
+ Command::CancelConstruction(data) => {
51
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
52
+ hash.aset("type", RString::new("CancelConstruction"))
53
+ .unwrap();
54
+ hash.aset("action_type", RString::new("CMD_CancelConstruction"))
55
+ .unwrap();
56
+ hash.as_value()
57
+ }
58
+ Command::CancelProduction(data) => {
59
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
60
+ hash.aset("type", RString::new("CancelProduction")).unwrap();
61
+ hash.aset("action_type", RString::new("CMD_CancelProduction"))
62
+ .unwrap();
63
+ hash.as_value()
64
+ }
65
+ Command::SelectBattlegroup(data) => {
66
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
67
+ hash.aset("type", RString::new("SelectBattlegroup"))
68
+ .unwrap();
69
+ hash.aset("action_type", RString::new("PCMD_InstantUpgrade"))
70
+ .unwrap();
71
+ hash.as_value()
72
+ }
73
+ Command::SelectBattlegroupAbility(data) => {
74
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
75
+ hash.aset("type", RString::new("SelectBattlegroupAbility"))
76
+ .unwrap();
77
+ hash.aset("action_type", RString::new("PCMD_TentativeUpgrade"))
78
+ .unwrap();
79
+ hash.as_value()
80
+ }
81
+ Command::Unknown(data) => {
82
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
83
+ hash.aset("type", RString::new("Unknown")).unwrap();
84
+ hash.as_value()
85
+ }
86
+ Command::UseAbility(data) => {
87
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
88
+ hash.aset("type", RString::new("UseAbility")).unwrap();
89
+ hash.aset("action_type", RString::new("CMD_Ability"))
90
+ .unwrap();
91
+ hash.as_value()
92
+ }
93
+ Command::UseBattlegroupAbility(data) => {
94
+ let hash: RHash = serde_magnus::serialize(data).unwrap();
95
+ hash.aset("type", RString::new("UseBattlegroupAbility"))
96
+ .unwrap();
97
+ hash.aset("action_type", RString::new("PCMD_Ability"))
98
+ .unwrap();
99
+ hash.as_value()
100
+ }
101
+ }
75
102
  }
76
103
  }
@@ -2,11 +2,7 @@ mod hash;
2
2
 
3
3
  use crate::hash::HashExt;
4
4
  use magnus::{class, define_module, exception, function, method, prelude::*, Error};
5
- use vault::commands::{
6
- BuildGlobalUpgrade, BuildSquad, SelectBattlegroup, SelectBattlegroupAbility, Unknown,
7
- UseBattlegroupAbility,
8
- };
9
- use vault::{Command, Faction, Map, Message, Player, Replay, Team};
5
+ use vault::{Command, Map, Message, Player, Replay};
10
6
 
11
7
  #[magnus::init]
12
8
  fn init() -> Result<(), Error> {
@@ -16,7 +12,9 @@ fn init() -> Result<(), Error> {
16
12
  replay.define_singleton_method("from_bytes", function!(from_bytes, 1))?;
17
13
  replay.define_method("version", method!(Replay::version, 0))?;
18
14
  replay.define_method("timestamp", method!(Replay::timestamp, 0))?;
15
+ replay.define_method("game_type", method!(game_type_string, 0))?;
19
16
  replay.define_method("matchhistory_id", method!(Replay::matchhistory_id, 0))?;
17
+ replay.define_method("mod_uuid", method!(mod_uuid_string, 0))?;
20
18
  replay.define_method("map", method!(Replay::map, 0))?;
21
19
  replay.define_method("map_filename", method!(Replay::map_filename, 0))?;
22
20
  replay.define_method(
@@ -43,8 +41,8 @@ fn init() -> Result<(), Error> {
43
41
  let player = module.define_class("Player", class::object())?;
44
42
  player.define_method("name", method!(Player::name, 0))?;
45
43
  player.define_method("human?", method!(Player::human, 0))?;
46
- player.define_method("faction", method!(Player::faction, 0))?;
47
- player.define_method("team", method!(Player::team, 0))?;
44
+ player.define_method("faction", method!(faction_string, 0))?;
45
+ player.define_method("team", method!(team_value, 0))?;
48
46
  player.define_method("battlegroup", method!(Player::battlegroup, 0))?;
49
47
  player.define_method("steam_id", method!(Player::steam_id, 0))?;
50
48
  player.define_method("profile_id", method!(Player::profile_id, 0))?;
@@ -62,81 +60,9 @@ fn init() -> Result<(), Error> {
62
60
  message.define_method("message", method!(Message::message, 0))?;
63
61
  message.define_method("to_h", method!(Message::to_h, 0))?;
64
62
 
65
- let faction = module.define_class("Faction", class::object())?;
66
- faction.define_method("value", method!(Faction::to_string, 0))?;
67
-
68
- let team = module.define_class("Team", class::object())?;
69
- team.define_method("value", method!(Team::value, 0))?;
70
-
71
63
  let command = module.define_class("Command", class::object())?;
72
64
  command.define_method("to_h", method!(Command::to_h, 0))?;
73
65
 
74
- let commands_module = module.define_module("Commands")?;
75
-
76
- let build_global_upgrade_command =
77
- commands_module.define_class("BuildGlobalUpgradeCommand", command)?;
78
- build_global_upgrade_command
79
- .define_method("value", method!(Command::extract_build_global_upgrade, 0))?;
80
-
81
- let build_global_upgrade =
82
- commands_module.define_class("BuildGlobalUpgrade", class::object())?;
83
- build_global_upgrade.define_method("tick", method!(BuildGlobalUpgrade::tick, 0))?;
84
- build_global_upgrade.define_method("pbgid", method!(BuildGlobalUpgrade::pbgid, 0))?;
85
- build_global_upgrade.define_method("to_h", method!(BuildGlobalUpgrade::to_h, 0))?;
86
-
87
- let build_squad_command = commands_module.define_class("BuildSquadCommand", command)?;
88
- build_squad_command.define_method("value", method!(Command::extract_build_squad, 0))?;
89
-
90
- let build_squad = commands_module.define_class("BuildSquad", class::object())?;
91
- build_squad.define_method("tick", method!(BuildSquad::tick, 0))?;
92
- build_squad.define_method("pbgid", method!(BuildSquad::pbgid, 0))?;
93
- build_squad.define_method("to_h", method!(BuildSquad::to_h, 0))?;
94
-
95
- let select_battlegroup_command =
96
- commands_module.define_class("SelectBattlegroupCommand", command)?;
97
- select_battlegroup_command
98
- .define_method("value", method!(Command::extract_select_battlegroup, 0))?;
99
-
100
- let select_battlegroup = commands_module.define_class("SelectBattlegroup", class::object())?;
101
- select_battlegroup.define_method("tick", method!(SelectBattlegroup::tick, 0))?;
102
- select_battlegroup.define_method("pbgid", method!(SelectBattlegroup::pbgid, 0))?;
103
- select_battlegroup.define_method("to_h", method!(SelectBattlegroup::to_h, 0))?;
104
-
105
- let select_battlegroup_ability_command =
106
- commands_module.define_class("SelectBattlegroupAbilityCommand", command)?;
107
- select_battlegroup_ability_command.define_method(
108
- "value",
109
- method!(Command::extract_select_battlegroup_ability, 0),
110
- )?;
111
-
112
- let select_battlegroup_ability =
113
- commands_module.define_class("SelectBattlegroupAbility", class::object())?;
114
- select_battlegroup_ability.define_method("tick", method!(SelectBattlegroupAbility::tick, 0))?;
115
- select_battlegroup_ability
116
- .define_method("pbgid", method!(SelectBattlegroupAbility::pbgid, 0))?;
117
- select_battlegroup_ability.define_method("to_h", method!(SelectBattlegroupAbility::to_h, 0))?;
118
-
119
- let use_battlegroup_ability_command =
120
- commands_module.define_class("UseBattlegroupAbilityCommand", command)?;
121
- use_battlegroup_ability_command.define_method(
122
- "value",
123
- method!(Command::extract_use_battlegroup_ability, 0),
124
- )?;
125
-
126
- let use_battlegroup_ability =
127
- commands_module.define_class("UseBattlegroupAbility", class::object())?;
128
- use_battlegroup_ability.define_method("tick", method!(UseBattlegroupAbility::tick, 0))?;
129
- use_battlegroup_ability.define_method("pbgid", method!(UseBattlegroupAbility::pbgid, 0))?;
130
- use_battlegroup_ability.define_method("to_h", method!(UseBattlegroupAbility::to_h, 0))?;
131
-
132
- let unknown_command = commands_module.define_class("UnknownCommand", command)?;
133
- unknown_command.define_method("value", method!(Command::extract_unknown, 0))?;
134
-
135
- let unknown = commands_module.define_class("Unknown", class::object())?;
136
- unknown.define_method("tick", method!(Unknown::tick, 0))?;
137
- unknown.define_method("action_type", method!(Unknown::action_type, 0))?;
138
- unknown.define_method("to_h", method!(Unknown::to_h, 0))?;
139
-
140
66
  Ok(())
141
67
  }
142
68
 
@@ -144,3 +70,19 @@ fn from_bytes(input: Vec<u8>) -> Result<Replay, Error> {
144
70
  Replay::from_bytes(&input)
145
71
  .map_err(|err| Error::new(exception::runtime_error(), err.to_string()))
146
72
  }
73
+
74
+ fn mod_uuid_string(rb_self: &Replay) -> String {
75
+ rb_self.mod_uuid().to_string()
76
+ }
77
+
78
+ fn game_type_string(rb_self: &Replay) -> String {
79
+ rb_self.game_type().to_string()
80
+ }
81
+
82
+ fn faction_string(rb_self: &Player) -> String {
83
+ rb_self.faction().to_string()
84
+ }
85
+
86
+ fn team_value(rb_self: &Player) -> usize {
87
+ rb_self.team().value()
88
+ }
@@ -3,17 +3,6 @@
3
3
  module VaultCoh
4
4
  # Base class that all command wrappers extend.
5
5
  class Command
6
- # Data object that contains information specific to the
7
- # type of command it represents.
8
- #
9
- # @return [Commands::BuildGlobalUpgrade |
10
- # Commands::BuildSquad |
11
- # Commands::SelectBattlegroup |
12
- # Commands::SelectBattlegroupAbility |
13
- # Commands::UseBattlegroupAbility |
14
- # Commands::Unknown]
15
- def value; end
16
-
17
6
  # Returns a hash representation of the object.
18
7
  #
19
8
  # @return [Hash]
@@ -3,16 +3,9 @@
3
3
  module VaultCoh
4
4
  # Identifiers for the Company of Heroes 3 factions.
5
5
  class Faction
6
- AMERICANS = 'Americans'
7
- BRITISH = 'British'
8
- WEHRMACHT = 'Wehrmacht'
9
- AFRIKAKORPS = 'AfrikaKorps'
10
-
11
- # String identifier of the given faction.
12
- #
13
- # @see https://docs.rs/vault/3.0.0/vault/enum.Faction.html
14
- #
15
- # @return [AMERICANS|BRITISH|WEHRMACHT|AFRIKAKORPS]
16
- def value; end
6
+ AMERICANS = 'americans'
7
+ BRITISH = 'british_africa'
8
+ WEHRMACHT = 'germans'
9
+ AFRIKAKORPS = 'afrika_korps'
17
10
  end
18
11
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VaultCoh
4
+ # Identifiers for the Company of Heroes 3 game types.
5
+ class GameType
6
+ SKIRMISH = 'skirmish'
7
+ MULTIPLAYER = 'multiplayer'
8
+ AUTOMATCH = 'automatch'
9
+ CUSTOM = 'custom'
10
+ end
11
+ end
@@ -20,13 +20,13 @@ module VaultCoh
20
20
 
21
21
  # The faction selected by the player in this match.
22
22
  #
23
- # @return [Faction]
23
+ # @return [Faction::AMERICANS|Faction::WEHRMACHT|Faction::BRITISH|Faction::AFRIKAKORPS]
24
24
  def faction; end
25
25
 
26
26
  # The team the player was assigned to. Currently only head-to-head
27
27
  # matchups are supported (max two teams).
28
28
  #
29
- # @return [Team]
29
+ # @return [Team::FIRST|Team::SECOND]
30
30
  def team; end
31
31
 
32
32
  # The pbgid of the battlegroup the player selected, or +nil+ if no
@@ -75,9 +75,7 @@ module VaultCoh
75
75
  # or use of battlegroups and their abilities. Sorted chronologically
76
76
  # from first to last.
77
77
  #
78
- # @return [Array<Commands::SelectBattlegroupCommand |
79
- # Commands::SelectBattlegroupAbilityCommand |
80
- # Commands::UseBattlegroupAbilityCommand>]
78
+ # @return [Array<Command>]
81
79
  def battlegroup_commands; end
82
80
 
83
81
  # Returns a hash representation of the object.
@@ -40,14 +40,34 @@ module VaultCoh
40
40
  # @return [String]
41
41
  def timestamp; end
42
42
 
43
+ # The type of game this replay represents. Note that this information
44
+ # is parsed on a best-effort basis and therefore may not always be
45
+ # correct. Also note that it's currently not known if there's a way to
46
+ # differentiate between automatch and custom games for replays recorded
47
+ # before the replay system release in patch 1.4.0. Games played before
48
+ # that patch will be marked as either +skirmish+ (for local AI games) or
49
+ # +multiplayer+ (for networked custom or automatch games). Games recorded
50
+ # on or after patch 1.4.0 will properly differentiate between +custom+
51
+ # and +automatch+ games.
52
+ #
53
+ # @return [GameType::SKIRMISH|GameType::MULTIPLAYER|GameType::AUTOMATCH|GameType::CUSTOM]
54
+ def game_type; end
55
+
43
56
  # The ID used by Relic to track this match on their internal servers.
44
57
  # This ID can be matched with an ID of the same name returned by
45
58
  # Relic’s CoH3 stats API, enabling linkage between replay files and
46
- # statistical information for a match.
59
+ # statistical information for a match. When the game type is +skirmish+,
60
+ # there is no ID assigned by Relic, so this will be +nil+.
47
61
  #
48
- # @return [Integer] unsigned, 64 bits
62
+ # @return [Integer|NilClass] unsigned, 64 bits
49
63
  def matchhistory_id; end
50
64
 
65
+ # The UUID of the base game mod this replay ran on. If no mod was used,
66
+ # this will be a nil UUID (all zeroes).
67
+ #
68
+ # @return [String]
69
+ def mod_uuid; end
70
+
51
71
  # Map information for this match.
52
72
  #
53
73
  # @return [Map]
@@ -5,12 +5,5 @@ module VaultCoh
5
5
  class Team
6
6
  FIRST = 0
7
7
  SECOND = 1
8
-
9
- # Integer representation of the assigned team.
10
- #
11
- # @see https://docs.rs/vault/3.0.0/vault/enum.Team.html
12
- #
13
- # @return [FIRST|SECOND]
14
- def value; end
15
8
  end
16
9
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VaultCoh
4
- VERSION = '4.0.0'
4
+ VERSION = '6.0.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vault_coh
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryantaylor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-21 00:00:00.000000000 Z
11
+ date: 2024-06-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Company of Heroes replay parsing in Ruby using the vault parsing library
14
14
  via a Rust native extension.
@@ -36,20 +36,8 @@ files:
36
36
  - ext/vault_coh/src/lib.rs
37
37
  - lib/vault_coh.rb
38
38
  - lib/vault_coh/command.rb
39
- - lib/vault_coh/commands.rb
40
- - lib/vault_coh/commands/build_global_upgrade.rb
41
- - lib/vault_coh/commands/build_global_upgrade_command.rb
42
- - lib/vault_coh/commands/build_squad.rb
43
- - lib/vault_coh/commands/build_squad_command.rb
44
- - lib/vault_coh/commands/select_battlegroup.rb
45
- - lib/vault_coh/commands/select_battlegroup_ability.rb
46
- - lib/vault_coh/commands/select_battlegroup_ability_command.rb
47
- - lib/vault_coh/commands/select_battlegroup_command.rb
48
- - lib/vault_coh/commands/unknown.rb
49
- - lib/vault_coh/commands/unknown_command.rb
50
- - lib/vault_coh/commands/use_battlegroup_ability.rb
51
- - lib/vault_coh/commands/use_battlegroup_ability_command.rb
52
39
  - lib/vault_coh/faction.rb
40
+ - lib/vault_coh/game_type.rb
53
41
  - lib/vault_coh/map.rb
54
42
  - lib/vault_coh/message.rb
55
43
  - lib/vault_coh/player.rb
@@ -81,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
69
  - !ruby/object:Gem::Version
82
70
  version: 3.3.11
83
71
  requirements: []
84
- rubygems_version: 3.4.12
72
+ rubygems_version: 3.5.11
85
73
  signing_key:
86
74
  specification_version: 4
87
75
  summary: CoH3 replay parsing in Ruby with Rust
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Data object representing information parsed from an
6
- # upgrade construction command.
7
- class BuildGlobalUpgrade
8
- # This value is the tick at which the command was
9
- # found while parsing the replay, which represents
10
- # the time in the replay at which it was executed.
11
- # Because CoH3's engine runs at 8 ticks per second,
12
- # you can divide this value by 8 to get the number
13
- # of seconds since the replay began, which will tell
14
- # you when this command was executed.
15
- #
16
- # @return [Integer] unsigned, 32 bits
17
- def tick; end
18
-
19
- # Internal ID that uniquely identifies the upgrade being
20
- # built. This value can be matched to CoH3 attribute
21
- # files in order to determine the upgrade being built.
22
- # Note that, while rare, it is possible that this value
23
- # may change between patches for the same upgrade.
24
- #
25
- # @return [Integer] unsigned, 32 bits
26
- def pbgid; end
27
-
28
- # Returns a hash representation of the object.
29
- #
30
- # @return [Hash]
31
- def to_h; end
32
- end
33
- end
34
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Wrapper for an upgrade construction command.
6
- class BuildGlobalUpgradeCommand < Command
7
- end
8
- end
9
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Data object representing information parsed from a
6
- # unit construction command.
7
- class BuildSquad
8
- # This value is the tick at which the command was
9
- # found while parsing the replay, which represents
10
- # the time in the replay at which it was executed.
11
- # Because CoH3's engine runs at 8 ticks per second,
12
- # you can divide this value by 8 to get the number
13
- # of seconds since the replay began, which will tell
14
- # you when this command was executed.
15
- #
16
- # @return [Integer] unsigned, 32 bits
17
- def tick; end
18
-
19
- # Internal ID that uniquely identifies the unit being
20
- # built. This value can be matched to CoH3 attribute
21
- # files in order to determine the unit being built.
22
- # Note that, while rare, it is possible that this value
23
- # may change between patches for the same unit.
24
- #
25
- # @return [Integer] unsigned, 32 bits
26
- def pbgid; end
27
-
28
- # Returns a hash representation of the object.
29
- #
30
- # @return [Hash]
31
- def to_h; end
32
- end
33
- end
34
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Wrapper for a unit construction command.
6
- class BuildSquadCommand < Command
7
- end
8
- end
9
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Data object representing information parsed from a
6
- # battlegroup selection command.
7
- class SelectBattlegroup
8
- # This value is the tick at which the command was
9
- # found while parsing the replay, which represents
10
- # the time in the replay at which it was executed.
11
- # Because CoH3's engine runs at 8 ticks per second,
12
- # you can divide this value by 8 to get the number
13
- # of seconds since the replay began, which will tell
14
- # you when this command was executed.
15
- #
16
- # @return [Integer] unsigned, 32 bits
17
- def tick; end
18
-
19
- # Internal ID that uniquely identifies the battlegroup
20
- # selected. This value can be matched to CoH3 attribute
21
- # files in order to determine the battlegroup being
22
- # selected. Note that, while rare, it is possible that
23
- # this value may change between patches for the same
24
- # battlegroup.
25
- #
26
- # @return [Integer] unsigned, 32 bits
27
- def pbgid; end
28
-
29
- # Returns a hash representation of the object.
30
- #
31
- # @return [Hash]
32
- def to_h; end
33
- end
34
- end
35
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Data object representing information parsed from a
6
- # battlegroup ability selection command.
7
- class SelectBattlegroupAbility
8
- # This value is the tick at which the command was
9
- # found while parsing the replay, which represents
10
- # the time in the replay at which it was executed.
11
- # Because CoH3's engine runs at 8 ticks per second,
12
- # you can divide this value by 8 to get the number
13
- # of seconds since the replay began, which will tell
14
- # you when this command was executed.
15
- #
16
- # @return [Integer] unsigned, 32 bits
17
- def tick; end
18
-
19
- # Internal ID that uniquely identifies the battlegroup
20
- # ability selected. This value can be matched to CoH3
21
- # attribute files in order to determine the battlegroup
22
- # ability being selected. Note that, while rare, it is
23
- # possible that this value may change between patches
24
- # for the same battlegroup.
25
- #
26
- # @return [Integer] unsigned, 32 bits
27
- def pbgid; end
28
-
29
- # Returns a hash representation of the object.
30
- #
31
- # @return [Hash]
32
- def to_h; end
33
- end
34
- end
35
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Wrapper for a battlegroup ability selection command.
6
- class SelectBattlegroupAbilityCommand < Command
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Wrapper for a battlegroup selection command.
6
- class SelectBattlegroupCommand < Command
7
- end
8
- end
9
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Data object representing an unknown (i.e. not yet
6
- # handled) command.
7
- class Unknown
8
- # This value is the tick at which the command was
9
- # found while parsing the replay, which represents
10
- # the time in the replay at which it was executed.
11
- # Because CoH3's engine runs at 8 ticks per second,
12
- # you can divide this value by 8 to get the number
13
- # of seconds since the replay began, which will tell
14
- # you when this command was executed.
15
- #
16
- # @return [Integer] unsigned, 32 bits
17
- def tick; end
18
-
19
- # This value identifies the type of the command
20
- # (build, move, stop, etc.). Commands with similar
21
- # functionality can be grouped by this value.
22
- #
23
- # @return [Integer] unsigned, 8 bits
24
- def action_type; end
25
-
26
- # Returns a hash representation of the object.
27
- #
28
- # @return [Hash]
29
- def to_h; end
30
- end
31
- end
32
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Wrapper for an unknown (i.e. not yet handled) command.
6
- class UnknownCommand < Command
7
- end
8
- end
9
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Data object representing information parsed from a
6
- # battlegroup ability usage command.
7
- class UseBattlegroupAbility
8
- # This value is the tick at which the command was
9
- # found while parsing the replay, which represents
10
- # the time in the replay at which it was executed.
11
- # Because CoH3's engine runs at 8 ticks per second,
12
- # you can divide this value by 8 to get the number
13
- # of seconds since the replay began, which will tell
14
- # you when this command was executed.
15
- #
16
- # @return [Integer] unsigned, 32 bits
17
- def tick; end
18
-
19
- # Internal ID that uniquely identifies the battlegroup
20
- # ability used. This value can be matched to CoH3
21
- # attribute files in order to determine the battlegroup
22
- # ability being used. Note that, while rare, it is
23
- # possible that this value may change between patches
24
- # for the same battlegroup.
25
- #
26
- # @return [Integer] unsigned, 32 bits
27
- def pbgid; end
28
-
29
- # Returns a hash representation of the object.
30
- #
31
- # @return [Hash]
32
- def to_h; end
33
- end
34
- end
35
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- module Commands
5
- # Wrapper for a battlegroup ability usage command.
6
- class UseBattlegroupAbilityCommand < Command
7
- end
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VaultCoh
4
- # Various classes responsible for handling command data.
5
- module Commands
6
- end
7
- end