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 +4 -4
- data/Cargo.lock +14 -4
- data/Gemfile +3 -3
- data/Gemfile.lock +31 -29
- data/README.md +3 -3
- data/ext/vault_coh/Cargo.toml +1 -1
- data/ext/vault_coh/src/hash.rs +69 -42
- data/ext/vault_coh/src/lib.rs +21 -79
- data/lib/vault_coh/command.rb +0 -11
- data/lib/vault_coh/faction.rb +4 -11
- data/lib/vault_coh/game_type.rb +11 -0
- data/lib/vault_coh/player.rb +3 -5
- data/lib/vault_coh/replay.rb +22 -2
- data/lib/vault_coh/team.rb +0 -7
- data/lib/vault_coh/version.rb +1 -1
- metadata +4 -16
- data/lib/vault_coh/commands/build_global_upgrade.rb +0 -34
- data/lib/vault_coh/commands/build_global_upgrade_command.rb +0 -9
- data/lib/vault_coh/commands/build_squad.rb +0 -34
- data/lib/vault_coh/commands/build_squad_command.rb +0 -9
- data/lib/vault_coh/commands/select_battlegroup.rb +0 -35
- data/lib/vault_coh/commands/select_battlegroup_ability.rb +0 -35
- data/lib/vault_coh/commands/select_battlegroup_ability_command.rb +0 -9
- data/lib/vault_coh/commands/select_battlegroup_command.rb +0 -9
- data/lib/vault_coh/commands/unknown.rb +0 -32
- data/lib/vault_coh/commands/unknown_command.rb +0 -9
- data/lib/vault_coh/commands/use_battlegroup_ability.rb +0 -35
- data/lib/vault_coh/commands/use_battlegroup_ability_command.rb +0 -9
- data/lib/vault_coh/commands.rb +0 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b761236eb71771fd8c489d2867ae4ec1b77361e0834ae8636ea86e492994ea1c
|
|
4
|
+
data.tar.gz: b600e4662c61af2a3ccbe1104de63ad506909de5daaff9d0171ecbe397862ce2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
325
|
+
version = "1.3.0"
|
|
326
326
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
327
|
-
checksum = "
|
|
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 = "
|
|
374
|
+
version = "9.0.0"
|
|
366
375
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
367
|
-
checksum = "
|
|
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.
|
|
8
|
+
gem 'rake', '~> 13.2'
|
|
9
9
|
|
|
10
10
|
gem 'rake-compiler'
|
|
11
11
|
gem 'rb_sys'
|
|
12
12
|
|
|
13
|
-
gem 'rspec', '~> 3.
|
|
13
|
+
gem 'rspec', '~> 3.13'
|
|
14
14
|
|
|
15
|
-
gem 'rubocop', '~> 1.
|
|
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
|
+
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.
|
|
11
|
-
json (2.7.
|
|
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
|
|
14
|
+
parser (3.3.2.0)
|
|
15
15
|
ast (~> 2.4.1)
|
|
16
16
|
racc
|
|
17
|
-
racc (1.
|
|
17
|
+
racc (1.8.0)
|
|
18
18
|
rainbow (3.1.1)
|
|
19
|
-
rake (13.1
|
|
20
|
-
rake-compiler (1.2.
|
|
19
|
+
rake (13.2.1)
|
|
20
|
+
rake-compiler (1.2.7)
|
|
21
21
|
rake
|
|
22
|
-
rb_sys (0.9.
|
|
23
|
-
regexp_parser (2.9.
|
|
24
|
-
rexml (3.2.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
rspec-
|
|
28
|
-
rspec-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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.
|
|
34
|
-
rspec-mocks (3.
|
|
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.
|
|
37
|
-
rspec-support (3.
|
|
38
|
-
rubocop (1.
|
|
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.
|
|
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.
|
|
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.
|
|
50
|
-
parser (>= 3.
|
|
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.
|
|
61
|
+
rake (~> 13.2)
|
|
60
62
|
rake-compiler
|
|
61
63
|
rb_sys
|
|
62
|
-
rspec (~> 3.
|
|
63
|
-
rubocop (~> 1.
|
|
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
|
-
[](https://badge.fury.io/rb/vault_coh) [](https://rubydoc.info/github/ryantaylor/vault-rb/
|
|
3
|
+
[](https://badge.fury.io/rb/vault_coh) [](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.
|
|
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/
|
|
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
|
|
data/ext/vault_coh/Cargo.toml
CHANGED
data/ext/vault_coh/src/hash.rs
CHANGED
|
@@ -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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
}
|
data/ext/vault_coh/src/lib.rs
CHANGED
|
@@ -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::
|
|
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!(
|
|
47
|
-
player.define_method("team", method!(
|
|
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
|
+
}
|
data/lib/vault_coh/command.rb
CHANGED
|
@@ -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]
|
data/lib/vault_coh/faction.rb
CHANGED
|
@@ -3,16 +3,9 @@
|
|
|
3
3
|
module VaultCoh
|
|
4
4
|
# Identifiers for the Company of Heroes 3 factions.
|
|
5
5
|
class Faction
|
|
6
|
-
AMERICANS = '
|
|
7
|
-
BRITISH = '
|
|
8
|
-
WEHRMACHT = '
|
|
9
|
-
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
|
data/lib/vault_coh/player.rb
CHANGED
|
@@ -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<
|
|
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.
|
data/lib/vault_coh/replay.rb
CHANGED
|
@@ -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]
|
data/lib/vault_coh/team.rb
CHANGED
data/lib/vault_coh/version.rb
CHANGED
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
|
+
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-
|
|
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.
|
|
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,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,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,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,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
|