use crate::measurements::{Mass, Speed, Temperature};
use crate::nd::{Runway, RunwayConditionCode, RunwaySurface};
use crate::{VerticalDistance, Wind};
#[derive(Copy, Clone, PartialEq, Debug)]
pub struct Influences {
mass: Mass,
headwind: Speed,
temperature: Temperature,
slope: f32,
level: VerticalDistance,
surface: RunwaySurface,
rwycc: RunwayConditionCode,
}
impl Influences {
pub fn new(
mass: Mass,
rwy: &Runway,
wind: &Wind,
temperature: Temperature,
rwycc: RunwayConditionCode,
) -> Self {
Self {
mass,
headwind: wind.headwind(&rwy.bearing),
temperature,
slope: rwy.slope,
level: rwy.elev,
surface: rwy.surface,
rwycc,
}
}
pub fn mass(&self) -> &Mass {
&self.mass
}
pub fn headwind(&self) -> &Speed {
&self.headwind
}
pub fn temperature(&self) -> &Temperature {
&self.temperature
}
pub fn level(&self) -> &VerticalDistance {
&self.level
}
pub fn slope(&self) -> &f32 {
&self.slope
}
pub fn surface(&self) -> &RunwaySurface {
&self.surface
}
pub fn rwycc(&self) -> &RunwayConditionCode {
&self.rwycc
}
}