use crate::core::resources::Resources;
use crate::entities::pea::Pea;
use crate::entities::sun::Sun;
use crate::plants::plant_trait::PlantTrait;
use ggez::graphics;
use crate::zombies::Zombie;
pub struct WallNut;
impl WallNut {
pub fn new() -> Self {
WallNut
}
}
const INITIAL_HEALTH: i32 = 5000;
const COOLDOWN: u64 = 30000; const COST: i32 = 50;
const FRAME_COUNT: usize = 16; const DAMAGE_STATE_COUNT: usize = 3;
impl PlantTrait for WallNut {
fn get_initial_health(&self) -> i32 {
INITIAL_HEALTH
}
fn get_cooldown(&self) -> u64 {
COOLDOWN
}
fn get_frame_count(&self) -> usize {
FRAME_COUNT
}
fn update_action(&mut self, _grid_x: usize, _grid_y: usize, _suns: &mut Vec<Sun>, _peas: &mut Vec<Pea>, _zombies: &Vec<Zombie>) {
}
fn get_cost(&self) -> i32 {
COST
}
fn get_card_image<'a>(&self, resources: &'a Resources) -> &'a graphics::Image {
&resources.wallnut_card
}
fn get_current_frame_image<'a>(&self, resources: &'a Resources, animation_frame: usize) -> &'a graphics::Image {
let frame_count = resources.wallnut_images.len();
if frame_count > 0 {
let safe_index = animation_frame % frame_count;
&resources.wallnut_images[safe_index]
} else {
&resources.wallnut_card }
}
fn get_damage_state(&self) -> usize {
DAMAGE_STATE_COUNT
}
}