use ggez::{Context, GameResult};
use ggez::graphics::{self, DrawParam};
use crate::core::resources::Resources;
use ggez::graphics::Rect;
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum PeaType {
Normal,
}
pub struct Pea {
pub x: f32,
pub y: f32,
pub row: usize,
pub speed: f32,
pub damage: i32,
pub pea_type: PeaType,
pub active: bool,
}
impl Pea {
pub fn new(x: f32, y: f32, row: usize, pea_type: PeaType) -> Self {
let (speed, damage) = match pea_type {
PeaType::Normal => (0.3, 20), };
Pea {
x,
y,
row,
speed,
damage,
pea_type,
active: true,
}
}
pub fn update(&mut self, dt: u64) {
self.x += self.speed * dt as f32;
if self.x > 1000.0 {
self.active = false;
}
}
pub fn draw(&self, ctx: &mut Context, resources: &Resources) -> GameResult {
let image = match self.pea_type {
PeaType::Normal => &resources.pea_image,
};
graphics::draw(
ctx,
image,
DrawParam::default()
.dest([self.x, self.y])
.scale([0.7, 0.7]),
)
}
pub fn get_rect(&self) -> Rect {
Rect::new(self.x, self.y, 20.0, 20.0)
}
}