diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 19 |
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", |