subtr-actor 0.5.0

Rocket League replay transformer
Documentation
use crate::*;

use super::*;

impl StatFieldProvider for SpeedFlipStats {
    fn visit_stat_fields(&self, visitor: &mut dyn FnMut(ExportedStat)) {
        visitor(ExportedStat::unsigned(
            "speed_flip",
            "count",
            StatUnit::Count,
            self.count,
        ));
        visitor(ExportedStat::unsigned(
            "speed_flip",
            "high_confidence_count",
            StatUnit::Count,
            self.high_confidence_count,
        ));
        visitor(ExportedStat::unsigned(
            "speed_flip",
            "is_last_speed_flip",
            StatUnit::Count,
            u32::from(self.is_last_speed_flip),
        ));
        if let Some(value) = self.last_speed_flip_time {
            visitor(ExportedStat::float(
                "speed_flip",
                "last_speed_flip_time",
                StatUnit::Seconds,
                value,
            ));
        }
        if let Some(value) = self.last_speed_flip_frame {
            visitor(ExportedStat::unsigned(
                "speed_flip",
                "last_speed_flip_frame",
                StatUnit::Count,
                u32::try_from(value).unwrap_or(u32::MAX),
            ));
        }
        if let Some(value) = self.time_since_last_speed_flip {
            visitor(ExportedStat::float(
                "speed_flip",
                "time_since_last_speed_flip",
                StatUnit::Seconds,
                value,
            ));
        }
        if let Some(value) = self.frames_since_last_speed_flip {
            visitor(ExportedStat::unsigned(
                "speed_flip",
                "frames_since_last_speed_flip",
                StatUnit::Count,
                u32::try_from(value).unwrap_or(u32::MAX),
            ));
        }
        if let Some(value) = self.last_quality {
            visitor(ExportedStat::float(
                "speed_flip",
                "last_quality",
                StatUnit::Percent,
                value * 100.0,
            ));
        }
        visitor(ExportedStat::float(
            "speed_flip",
            "average_quality",
            StatUnit::Percent,
            self.average_quality() * 100.0,
        ));
        visitor(ExportedStat::float(
            "speed_flip",
            "best_quality",
            StatUnit::Percent,
            self.best_quality * 100.0,
        ));
    }
}