This repository has been archived on 2021-04-27. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-26 16:23:33 -04:00

66 lines
1.4 KiB
Rust

use raylib::prelude::*;
use serde::{Deserialize, Serialize};
use super::base::EnemyBase;
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
pub struct Pufferfish{
pub position: Vector2,
pub is_knocking_back: bool,
pub time_knocking_back: f64,
pub inflate_timer: f64,
pub size: f32,
pub is_stunned: bool,
}
impl EnemyBase for Pufferfish{
fn render(
&mut self,
context_2d: &mut RaylibMode2D<RaylibDrawHandle>,
player: &mut crate::player::Player,
resources: &mut crate::resources::GlobalResources,
dt: f64,
) {
context_2d.draw_circle(self.position.x as i32, self.position.y as i32, self.size, Color::RED);
}
fn handle_logic(&mut self, player: &mut crate::player::Player, dt: f64) {
if self.position.distance_to(player.position).abs() <= self.size + 6.0{
self.is_knocking_back = true;
}
if self.is_knocking_back{
self.time_knocking_back += dt;
}
if self.time_knocking_back >= 0.5{
self.is_knocking_back = false;
self.time_knocking_back = 0.0;
}
if self.position.distance_to(player.position).abs() <= 100.0{
self.inflate_timer += dt;
}else{
self.inflate_timer = 0.0;
}
self.size = (6.0 * (1.0 + self.inflate_timer / 1.0)).clamp(6.0, 12.0) as f32;
}
fn handle_getting_attacked(&mut self, stun_duration: f64, current_time: f64) {
}
}