use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "tauri", derive(specta::Type))]
pub struct BitField(pub u32);
impl BitField {
pub fn new(value: u32) -> Self {
Self(value)
}
pub fn is_set(&self, bit: u32) -> bool {
(self.0 & (1 << bit)) != 0
}
pub fn has_flag(&self, flag: u32) -> bool {
(self.0 & flag) != 0
}
pub fn value(&self) -> u32 {
self.0
}
}
pub fn tick_after_u32(a: u32, b: u32) -> bool {
if a == b {
return false;
}
a.wrapping_sub(b) < 0x8000_0000
}
pub fn engine_mandatory_repair_needed(bits: BitField) -> bool {
bits.has_flag(super::irsdk_flags::engine_warnings::MAND_REP_NEEDED)
}
pub fn engine_optional_repair_needed(bits: BitField) -> bool {
bits.has_flag(super::irsdk_flags::engine_warnings::OPT_REP_NEEDED)
}
pub fn session_dq_scoring_invalid(flags: BitField) -> bool {
flags.has_flag(super::irsdk_flags::session_flags::DQ_SCORING_INVALID)
}