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 +++++++++++++++++++++++++++++++++++++++ src/shared/projectile.rs | 2 -- src/shared/stats.rs | 16 ++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/shared/champion.rs create mode 100644 src/shared/stats.rs (limited to 'src/shared') 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. }, + } + } +} diff --git a/src/shared/projectile.rs b/src/shared/projectile.rs index c42173a..2e9c6c3 100644 --- a/src/shared/projectile.rs +++ b/src/shared/projectile.rs @@ -1,7 +1,5 @@ use crate::shared::*; -pub const ATTACK_RANGE: f32 = 60.; - #[derive(Bundle)] pub struct ProjectileBundle { pub projectile: Projectile, diff --git a/src/shared/stats.rs b/src/shared/stats.rs new file mode 100644 index 0000000..278a19f --- /dev/null +++ b/src/shared/stats.rs @@ -0,0 +1,16 @@ +use crate::shared::champion::*; +use crate::shared::*; + +#[derive(Component, Message, Clone, Serialize, Deserialize, PartialEq)] +pub struct Stats { + pub attack_range: f32, +} + +impl Stats { + pub fn from_champion(champion: Champion) -> Self { + match champion { + Champion::Meele => Stats { attack_range: 35. }, + Champion::Ranged => Stats { attack_range: 60. }, + } + } +} -- cgit v1.2.3