From 49d369b83b9529ad0d7723e5c34d612f1ad32e8f Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Mon, 9 Jul 2018 01:48:44 +0200 Subject: add rudimentary support for new state changes The arcdps update has introduced new state change events, namely BuffInitial, Position and Velocity. It is now possible to track the movements of all players. Unfortunately, this meant that evtclib could not ready any logs created by the new arc version, as the new CbtStateChange was not read correctly. evtclib just returned "Invalid data". This fix adds the new enum variants to the CbtStateChange enum, making it again possible to read files. However, there are no high-level events for those yet, so the conversion will fail. --- src/event.rs | 2 ++ src/raw/types.rs | 7 +++++++ 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/event.rs b/src/event.rs index 02f4686..0e83660 100644 --- a/src/event.rs +++ b/src/event.rs @@ -199,6 +199,8 @@ impl Event { reward_id: raw_event.dst_agent, reward_type: raw_event.value, }, + // XXX: implement proper handling of those events! + CbtStateChange::BuffInitial | CbtStateChange::Position | CbtStateChange::Velocity => return None, CbtStateChange::None => if let Some(kind) = check_activation(raw_event) { kind diff --git a/src/raw/types.rs b/src/raw/types.rs index e3a80af..f131eb1 100644 --- a/src/raw/types.rs +++ b/src/raw/types.rs @@ -123,6 +123,13 @@ pub enum CbtStateChange { /// * `dst_agent` is reward id. /// * `value` is reward type. Reward, + /// Combat event that will appear once per buff per agent on logging start (zero duration, + /// buff==18) + BuffInitial, + /// src_agent changed, cast float* p = (float*)&dst_agent, access as x/y/z (float[3]) + Position, + /// src_agent changed, cast float* v = (float*)&dst_agent, access as x/y/z (float[3]) + Velocity, } /// Combat buff remove type -- cgit v1.2.3