vault_coh 4.0.0 → 6.0.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 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