use crate::types::basic::Double;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Weather {
#[serde(rename = "@cloudState")]
pub cloud_state: String, #[serde(rename = "Sun")]
pub sun: Sun,
#[serde(rename = "Fog")]
pub fog: Fog,
#[serde(rename = "Precipitation")]
pub precipitation: Precipitation,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Sun {
#[serde(rename = "@intensity")]
pub intensity: Double,
#[serde(rename = "@azimuth")]
pub azimuth: Double,
#[serde(rename = "@elevation")]
pub elevation: Double,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Fog {
#[serde(rename = "@visualRange")]
pub visual_range: Double,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Precipitation {
#[serde(rename = "@precipitationType")]
pub precipitation_type: String, #[serde(rename = "@intensity")]
pub intensity: Double,
}
impl Default for Weather {
fn default() -> Self {
Self {
cloud_state: "free".to_string(),
sun: Sun::default(),
fog: Fog::default(),
precipitation: Precipitation::default(),
}
}
}
impl Default for Sun {
fn default() -> Self {
Self {
intensity: Double::literal(1.0),
azimuth: Double::literal(0.0),
elevation: Double::literal(1.571), }
}
}
impl Default for Fog {
fn default() -> Self {
Self {
visual_range: Double::literal(100000.0), }
}
}
impl Default for Precipitation {
fn default() -> Self {
Self {
precipitation_type: "dry".to_string(),
intensity: Double::literal(0.0),
}
}
}