diff options
author | Daniel <kingdread@gmx.de> | 2018-09-07 01:15:55 +0200 |
---|---|---|
committer | Daniel <kingdread@gmx.de> | 2018-09-07 01:15:55 +0200 |
commit | f0d95b03542ce87cd3c897a63a7bfbcc3be6dc2c (patch) | |
tree | a10f9425bf323bb773f8bb507f0c4842bb0671d6 | |
parent | 13281d5f8aaaed5a9037784f5fa38068f9b7bf65 (diff) | |
download | raidgrep-f0d95b03542ce87cd3c897a63a7bfbcc3be6dc2c.tar.gz raidgrep-f0d95b03542ce87cd3c897a63a7bfbcc3be6dc2c.tar.bz2 raidgrep-f0d95b03542ce87cd3c897a63a7bfbcc3be6dc2c.zip |
add fight outcome to output
-rw-r--r-- | src/main.rs | 19 | ||||
-rw-r--r-- | src/output.rs | 11 |
2 files changed, 27 insertions, 3 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", diff --git a/src/output.rs b/src/output.rs index 848eab5..9458e48 100644 --- a/src/output.rs +++ b/src/output.rs @@ -1,4 +1,4 @@ -use super::LogResult; +use super::{LogResult, FightOutcome}; use super::errors::RuntimeError; use std::io::Write; @@ -7,13 +7,18 @@ use std::io::Write; pub fn colored<W: Write>(mut f: W, item: &LogResult) -> Result<(), RuntimeError> { use colored::Colorize; writeln!(f, "{}: {:?}", "File".green(), item.log_file)?; + let outcome = match item.outcome { + FightOutcome::Success => "SUCCESS".green(), + FightOutcome::Wipe => "WIPE".red(), + }; writeln!( f, - "{}: {} - {}: {}", + "{}: {} - {}: {} {}", "Date".green(), item.time, "Boss".green(), - item.boss_name + item.boss_name, + outcome, )?; for player in &item.players { writeln!( |