From c71366c2e0a9f0b454957feeb87b51f6b27d54bd Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Fri, 15 Mar 2024 16:07:58 +0100 Subject: feat: add champions Select champions using the `--champion` flag. Valid values are `ranged` and `meele` (default). --- src/shared/champion.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/shared/champion.rs (limited to 'src/shared/champion.rs') diff --git a/src/shared/champion.rs b/src/shared/champion.rs new file mode 100644 index 0000000..ec27c62 --- /dev/null +++ b/src/shared/champion.rs @@ -0,0 +1,39 @@ +use crate::shared::*; +use std::str::FromStr; + +#[derive(Component, Message, Clone, Copy, Serialize, Deserialize, PartialEq, Debug)] +pub enum Champion { + Meele, + Ranged, +} + +impl Default for Champion { + fn default() -> Champion { + Champion::Meele + } +} + +impl FromStr for Champion { + type Err = String; + + fn from_str(s: &str) -> Result { + match s { + "ranged" => Ok(Champion::Ranged), + "meele" => Ok(Champion::Meele), + _ => Err(format!("unknown champion: {}", s)), + } + } +} + +pub struct Stats { + pub attack_range: f32, +} + +impl Stats { + pub fn from_champion(champion: Champion) -> Self { + match champion { + Champion::Meele => Stats { attack_range: 25. }, + Champion::Ranged => Stats { attack_range: 60. }, + } + } +} -- cgit v1.2.3