diff options
author | Alexander Foremny <aforemny@posteo.de> | 2024-03-15 16:07:58 +0100 |
---|---|---|
committer | Alexander Foremny <aforemny@posteo.de> | 2024-03-15 16:08:00 +0100 |
commit | c71366c2e0a9f0b454957feeb87b51f6b27d54bd (patch) | |
tree | 843e35d09a27275babf4008b58ef72302c18c4ff /src/shared/champion.rs | |
parent | fdee6aa8cf2c51d5004d914458ff661da366e883 (diff) |
feat: add champions
Select champions using the `--champion` flag. Valid values are `ranged`
and `meele` (default).
Diffstat (limited to 'src/shared/champion.rs')
-rw-r--r-- | src/shared/champion.rs | 39 |
1 files changed, 39 insertions, 0 deletions
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<Champion, String> { + 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. }, + } + } +} |