use super::helpers::{de_num_or_str, de_opt_num_or_str};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
pub struct Grenade {
#[serde(default)]
pub owner: String,
#[serde(default)]
pub position: String,
#[serde(default)]
pub velocity: String,
#[serde(default, deserialize_with = "de_num_or_str")]
pub lifetime: f32,
#[serde(default, rename = "type")]
pub kind: GrenadeKind,
#[serde(default)]
pub flames: HashMap<String, String>,
#[serde(default, deserialize_with = "de_opt_num_or_str")]
pub effecttime: Option<f32>,
}
#[derive(Clone, Copy, Debug, Default, Deserialize, Serialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "lowercase")]
pub enum GrenadeKind {
Frag,
Smoke,
Flashbang,
Decoy,
Inferno,
#[serde(other)]
#[default]
Unknown,
}