Compare commits

...
6 changed files with 52 additions and 29 deletions

No files matched your search

+29
View File
@@ -8,6 +8,35 @@ World of Tanks Blitz replay parser in Rust.
![License: MIT](https://img.shields.io/crates/l/wotbreplay-parser)
[![docs.rs](https://img.shields.io/docsrs/wotbreplay-parser)](https://docs.rs/wotbreplay-parser)
## Quickstart
```rust
use std::fs::File;
use anyhow::Result;
use wotbreplay_parser::Replay;
use wotbreplay_parser::models::TeamNumber;
fn main() -> Result<()> {
let battle_results = Replay::open(File::open("tests/replays/battle_results.wotbreplay")?)?
.read_battle_results()?;
assert_eq!(battle_results.timestamp, 1670018359);
assert_eq!(battle_results.players.len(), 14);
assert_eq!(battle_results.players[0].account_id, 520886428);
assert_eq!(battle_results.players[0].info.nickname, "77mmmr");
assert_eq!(battle_results.players[0].info.team_number(), TeamNumber::Two);
assert_eq!(battle_results.players[0].info.platoon_id, None);
assert_eq!(battle_results.players[1].info.nickname, "SNAK_THE_RIPPER");
assert_eq!(battle_results.players[1].info.team_number(), TeamNumber::One);
assert_eq!(battle_results.players[1].info.platoon_id, Some(547466834));
Ok(())
}
```
## Replay structure
`*.wotbreplay` is a ZIP-archive containing:
+2 -4
View File
@@ -128,13 +128,11 @@ pub struct PlayerResultsInfo {
#[prost(uint32, tag = "18")]
pub n_enemies_destroyed: u32,
/// TODO: distinguish earned vs seized.
#[prost(uint32, tag = "32")]
pub victory_points_1: u32,
pub victory_points_earned: u32,
/// TODO: distinguish earned vs seized.
#[prost(uint32, tag = "33")]
pub victory_points_2: u32,
pub victory_points_seized: u32,
/// Player's account ID.
#[prost(uint32, tag = "101")]
+21 -25
View File
@@ -1,32 +1,11 @@
use std::fs::File;
use anyhow::Result;
use wotbreplay_parser::models::TeamNumber;
use wotbreplay_parser::Replay;
#[test]
fn battle_results_ok() -> Result<()> {
let battle_results = Replay::open(File::open("tests/replays/battle_results_ok.wotbreplay")?)?
.read_battle_results()?;
assert_eq!(battle_results.timestamp, 1670018359);
assert_eq!(battle_results.players.len(), 14);
assert_eq!(battle_results.players[0].account_id, 520886428);
assert_eq!(battle_results.players[0].info.nickname, "77mmmr");
assert_eq!(battle_results.players[0].info.team_number(), TeamNumber::Two);
assert_eq!(battle_results.players[0].info.platoon_id, None);
assert_eq!(battle_results.players[1].info.nickname, "SNAK_THE_RIPPER");
assert_eq!(battle_results.players[1].info.team_number(), TeamNumber::One);
assert_eq!(battle_results.players[1].info.platoon_id, Some(547466834));
Ok(())
}
#[test]
fn player_results_ok() -> Result<()> {
let battle_results = Replay::open(File::open("tests/replays/player_results_ok.wotbreplay")?)?
let battle_results = Replay::open(File::open("tests/replays/player_results.wotbreplay")?)?
.read_battle_results()?;
let snak_the_ripper_info = &battle_results.player_results[3].info;
@@ -55,8 +34,8 @@ fn player_results_ok() -> Result<()> {
assert_eq!(zeekrab_info.n_hits_received, 3);
assert_eq!(zeekrab_info.n_penetrations_received, 3);
assert_eq!(zeekrab_info.n_non_penetrating_hits_received, 0);
assert_eq!(zeekrab_info.victory_points_1, 40);
assert_eq!(zeekrab_info.victory_points_2, 40);
assert_eq!(zeekrab_info.victory_points_earned, 40);
assert_eq!(zeekrab_info.victory_points_seized, 40);
assert_eq!(zeekrab_info.tank_id, 26657);
assert_eq!(zeekrab_info.credits, 37679);
assert_eq!(zeekrab_info.n_enemies_damaged, 2);
@@ -89,7 +68,7 @@ fn player_results_ok() -> Result<()> {
#[test]
fn clan_tags_ok() -> Result<()> {
let battle_results = Replay::open(File::open("tests/replays/player_results_ok.wotbreplay")?)?
let battle_results = Replay::open(File::open("tests/replays/player_results.wotbreplay")?)?
.read_battle_results()?;
assert_eq!(battle_results.players[1].info.clan_tag.as_deref(), Some("AN0NY"));
@@ -98,3 +77,20 @@ fn clan_tags_ok() -> Result<()> {
Ok(())
}
#[test]
fn victory_points_ok() -> Result<()> {
let battle_results = Replay::open(File::open("tests/replays/victory_points.wotbreplay")?)?
.read_battle_results()?;
assert_eq!(battle_results.player_results[1].info.victory_points_seized, 40);
assert_eq!(battle_results.player_results[1].info.victory_points_earned, 40);
assert_eq!(battle_results.player_results[3].info.victory_points_seized, 0);
assert_eq!(battle_results.player_results[3].info.victory_points_earned, 112);
assert_eq!(battle_results.player_results[5].info.victory_points_earned, 280);
assert_eq!(battle_results.player_results[5].info.victory_points_seized, 0);
Ok(())
}
Binary file not shown.