mirror of
https://github.com/eigenein/wotbreplay-parser.git
synced 2026-10-21 18:37:00 +02:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59353a9aca | ||
|
|
c9a2adff4c |
No files matched your search
@@ -1,5 +1,5 @@
|
||||
use prost::bytes::Buf;
|
||||
use prost::Message;
|
||||
use prost::{Enumeration, Message};
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::result::Result;
|
||||
@@ -22,7 +22,7 @@ pub struct BattleResults {
|
||||
#[prost(int64, tag = "2")]
|
||||
pub timestamp: i64,
|
||||
|
||||
#[prost(enumeration = "TeamNumber", tag = "3")]
|
||||
#[prost(enumeration = "WinnerTeamNumber", tag = "3")]
|
||||
pub winner_team_number: i32,
|
||||
|
||||
/// Replay's author results.
|
||||
@@ -78,15 +78,21 @@ pub struct PlayerInfo {
|
||||
pub avatar: Avatar,
|
||||
}
|
||||
|
||||
#[derive(
|
||||
Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration, Serialize,
|
||||
)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Enumeration, Serialize)]
|
||||
#[repr(i32)]
|
||||
pub enum TeamNumber {
|
||||
One = 1,
|
||||
Two = 2,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Enumeration, Serialize)]
|
||||
#[repr(i32)]
|
||||
pub enum WinnerTeamNumber {
|
||||
Neither = 0,
|
||||
One = 1,
|
||||
Two = 2,
|
||||
}
|
||||
|
||||
/// Player's battle results.
|
||||
#[derive(Message, Serialize)]
|
||||
pub struct PlayerResults {
|
||||
|
||||
+1
-1
@@ -3,8 +3,8 @@
|
||||
pub mod entity_method;
|
||||
pub mod packet;
|
||||
pub mod payload;
|
||||
pub mod subtype_2f;
|
||||
pub mod type_0;
|
||||
pub mod update_arena;
|
||||
|
||||
use std::io::Read;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use serde::Serialize;
|
||||
use serde_with::serde_as;
|
||||
|
||||
use crate::models::data::read_quirky_length;
|
||||
use crate::models::data::subtype_2f::Subtype2F;
|
||||
use crate::models::data::update_arena::UpdateArena;
|
||||
use crate::result::Result;
|
||||
|
||||
#[serde_as]
|
||||
@@ -13,7 +13,7 @@ use crate::result::Result;
|
||||
pub enum EntityMethod {
|
||||
Subtype2F {
|
||||
field_number: u64,
|
||||
sub_type_2f: Subtype2F,
|
||||
sub_type_2f: UpdateArena,
|
||||
|
||||
/// Original payload for investigation.
|
||||
#[serde_as(as = "serde_with::hex::Hex")]
|
||||
@@ -45,7 +45,7 @@ impl EntityMethod {
|
||||
let message_length = read_quirky_length(&mut reader)?;
|
||||
Self::Subtype2F {
|
||||
field_number,
|
||||
sub_type_2f: Subtype2F::decode(&reader[..message_length])?,
|
||||
sub_type_2f: UpdateArena::decode(&reader[..message_length])?,
|
||||
payload,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
use prost::Message;
|
||||
use serde::Serialize;
|
||||
|
||||
/// Subtype `0x2F`.
|
||||
#[derive(Message, Serialize)]
|
||||
pub struct Subtype2F {
|
||||
pub struct UpdateArena {
|
||||
#[prost(message, tag = "1")]
|
||||
pub players: Option<Players>,
|
||||
}
|
||||
@@ -117,3 +117,11 @@ fn victory_points_ok() -> Result<()> {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn draw_ok() -> Result<()> {
|
||||
let battle_results = Replay::open(File::open("tests/replays/20230503_0027__helaas_pindakaas_A140_ASTRON_REX_105_2319058483532631656.wotbreplay")?)?
|
||||
.read_battle_results()?;
|
||||
assert_eq!(battle_results.winner_team_number, 0);
|
||||
Ok(())
|
||||
}
|
||||
Generated
BIN
Binary file not shown.
Reference in new issue
Block a user