aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index 29f482f..567991d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -75,6 +75,7 @@ pub struct LogResult {
time: NaiveDateTime,
boss_name: String,
players: Vec<Player>,
+ outcome: FightOutcome,
}
#[derive(Debug, Clone)]
@@ -85,6 +86,12 @@ pub struct Player {
subgroup: u8,
}
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum FightOutcome {
+ Success,
+ Wipe,
+}
+
fn main() {
let opt = Opt::from_args();
let result = grep(&opt);
@@ -195,6 +202,7 @@ fn extract_info(entry: &DirEntry, log: &Log) -> LogResult {
time: NaiveDateTime::from_timestamp(get_start_timestamp(log) as i64, 0),
boss_name,
players,
+ outcome: get_fight_outcome(log),
}
}
@@ -210,6 +218,17 @@ fn get_start_timestamp(log: &Log) -> u32 {
0
}
+fn get_fight_outcome(log: &Log) -> FightOutcome {
+ for event in log.events() {
+ if let EventKind::ChangeDead { agent_addr } = event.kind {
+ if log.is_boss(agent_addr) {
+ return FightOutcome::Success;
+ }
+ }
+ }
+ FightOutcome::Wipe
+}
+
fn get_profession_name(profession: u32, elite: u32) -> &'static str {
match (profession, elite) {
(1, 0) => "Guardian",