changed structs

This commit is contained in:
wm-c 2021-04-24 18:19:00 -04:00
parent 7a481421f6
commit 69efde83a8
2 changed files with 109 additions and 71 deletions

View File

@ -2,32 +2,87 @@ use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct StunGun { pub struct StunGun {
pub level: u32,
pub cost: u32,
pub range: f32, pub range: f32,
pub duration: f64, pub duration: f64,
pub name: String,
} }
impl StunGun { impl StunGun {
pub fn lvl1() -> Self { pub fn level_up(new_level: u32) -> Self {
Self { Self {
range: 30.0, level: new_level,
duration: 0.5, range: (new_level * 30) as f32,
} duration: new_level as f64 * 0.25,
} cost: 5 * new_level,
pub fn lvl2() -> Self { name: String::from("Stun Gun"),
Self {
range: 60.0,
duration: 0.75,
} }
} }
} }
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct AirBag; pub struct AirBag {
pub level: u32,
pub cost: u32,
pub additonal_oxegen: u32,
pub name: String,
}
impl AirBag {
pub fn level_up(new_level: u32) -> Self {
Self {
level: new_level,
cost: new_level * 5,
additonal_oxegen: 15 * new_level,
name: String::from("Air Bag"),
}
}
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Flashlight; pub struct Flashlight {
pub level: u32,
pub cost: u32,
pub brightness: u32,
pub battery_life: u32,
pub name: String,
}
impl Flashlight {
pub fn level_up(new_level: u32) -> Self {
Self {
level: new_level,
cost: new_level * 5,
brightness: (0.5 * new_level as f64) as u32,
battery_life: 5 * new_level,
name: String::from("Flash Light"),
}
}
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Flippers {
pub level: u32,
pub cost: u32,
pub speed_increase: f32,
pub name: String,
}
impl Flippers {
pub fn level_up(new_level: u32) -> Self {
Self {
level: new_level,
cost: new_level * 5,
speed_increase: (if new_level > 1 {
1.2 + (new_level as f32) * 0.3
} else {
1.2 * new_level as f32
}),
name: String::from("Flippers"),
}
}
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(tag = "t", content = "c")] #[serde(tag = "t", content = "c")]
@ -35,70 +90,43 @@ pub enum ShopItems {
StunGun(u8, u8, String), StunGun(u8, u8, String),
AirBag(u8, u8, String), AirBag(u8, u8, String),
Flashlight(u8, u8, String), Flashlight(u8, u8, String),
Flippers(u8, u8, String) Flippers(u8, u8, String),
} }
impl ShopItems{ impl ShopItems {
pub fn get_inital_items() -> [ShopItems; 4] {
[
ShopItems::StunGun(1, 10, String::from("Stun Gun")),
ShopItems::AirBag(1, 10, String::from("Air Bag")),
ShopItems::Flashlight(1, 12, String::from("Flash Light")),
ShopItems::Flippers(1, 10, String::from("Flippers")),
]
}
pub fn get_inital_items() -> [ShopItems; 4]{ pub fn get_level(item: &ShopItems) -> u8 {
match item {
[ShopItems::StunGun(1, 10, String::from("Stun Gun")), ShopItems::AirBag(1, 10, String::from("Air Bag")), ShopItems::StunGun(x, _, _) => *x,
ShopItems::Flashlight(1, 12, String::from("Flash Light")), ShopItems::Flippers(1, 10, String::from("Flippers"))] ShopItems::AirBag(x, _, _) => *x,
ShopItems::Flashlight(x, _, _) => *x,
ShopItems::Flippers(x, _, _) => *x,
}
pub fn get_level(item: &ShopItems) -> u8{
match item {
ShopItems::StunGun(x, _, _) => *x,
ShopItems::AirBag(x, _, _) => *x,
ShopItems::Flashlight(x, _, _) => *x,
ShopItems::Flippers(x, _, _) => *x
}
}
pub fn get_cost(item: &ShopItems) -> u8{
match item {
ShopItems::StunGun(x, _, _) => *x,
ShopItems::AirBag(x, _, _) => *x,
ShopItems::Flashlight(x, _, _) => *x,
ShopItems::Flippers(x, _, _) => *x
}
}
pub fn get_name(item: &ShopItems) -> String{
match item {
ShopItems::StunGun(_, _, x) => x.to_string(),
ShopItems::AirBag(_, _, x) => x.to_string(),
ShopItems::Flashlight(_, _, x) => x.to_string(),
ShopItems::Flippers(_, _, x) => x.to_string()
}
}
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Flippers {
pub speed_increase: f32,
}
impl Flippers {
pub fn lvl1() -> Self {
Self {
speed_increase: 1.2
} }
} }
pub fn lvl2() -> Self {
Self { pub fn get_cost(item: &ShopItems) -> u8 {
speed_increase: 1.5 match item {
ShopItems::StunGun(x, _, _) => *x,
ShopItems::AirBag(x, _, _) => *x,
ShopItems::Flashlight(x, _, _) => *x,
ShopItems::Flippers(x, _, _) => *x,
}
}
pub fn get_name(item: &ShopItems) -> String {
match item {
ShopItems::StunGun(_, _, x) => x.to_string(),
ShopItems::AirBag(_, _, x) => x.to_string(),
ShopItems::Flashlight(_, _, x) => x.to_string(),
ShopItems::Flippers(_, _, x) => x.to_string(),
} }
} }
} }

View File

@ -101,11 +101,21 @@ pub fn render_shop(
mouse_position.y <= item.y_pose as f32 + item.width as f32{ mouse_position.y <= item.y_pose as f32 + item.width as f32{
draw_handle.draw_rectangle(item.x_pose, item.y_pose, item.width, item.height, Color::BLACK); draw_handle.draw_rectangle(item.x_pose, item.y_pose, item.width, item.height, Color::BLACK);
if draw_handle.is_mouse_button_pressed(MouseButton::MOUSE_LEFT_BUTTON) && game_core.player.coins >= item.cost as u32{ // MAKE SURE TO CHECK VALUE!!!!!!!!!!!!!!!!!!!!!!!!!!
if draw_handle.is_mouse_button_pressed(MouseButton::MOUSE_LEFT_BUTTON) {// && game_core.player.coins >= item.cost as u32
game_core.world.spend_coins(item.cost.into()); game_core.world.spend_coins(item.cost.into());
game_core.player.coins -= item.cost as u32; game_core.player.coins -= item.cost as u32;
let x = match &(item.name)[..] {
"Stun Gun" => ("stunny"),
"Air Bag" => ("Airy"),
"Flash Light" => ("Flashy"),
"Flippers" => ("Flippy"),
_ => ("Among us irl")
};
println!("{}", x);
} }