aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/champion.rs39
-rw-r--r--src/shared/projectile.rs2
-rw-r--r--src/shared/stats.rs16
3 files changed, 55 insertions, 2 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. },
+ }
+ }
+}
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. },
+ }
+ }
+}