drop ref file
parent
e6fa3a9293
commit
5b60e34801
|
|
@ -1,74 +0,0 @@
|
||||||
use godot::prelude::*;
|
|
||||||
|
|
||||||
use godot::classes::{ISprite2D, Sprite2D};
|
|
||||||
#[derive(GodotClass, Debug)]
|
|
||||||
#[class(base=Sprite2D)]
|
|
||||||
pub struct Mon {
|
|
||||||
base: Base<Sprite2D>,
|
|
||||||
name: GString,
|
|
||||||
hp: i32,
|
|
||||||
damage: i32,
|
|
||||||
level_d: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[godot_api]
|
|
||||||
impl ISprite2D for Mon {
|
|
||||||
fn init(base: Base<Sprite2D>) -> Self {
|
|
||||||
Self{
|
|
||||||
base: base,
|
|
||||||
name: "my_name".into(),
|
|
||||||
hp: 100,
|
|
||||||
damage: 0,
|
|
||||||
level_d: 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn ready(&mut self) {
|
|
||||||
self.hp_change()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
use crate::mon_move;
|
|
||||||
#[godot_api]
|
|
||||||
impl Mon {
|
|
||||||
#[func]
|
|
||||||
pub fn mon_name(&self) -> GString {
|
|
||||||
self.name.clone()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[func]
|
|
||||||
pub fn hp(&self) -> f32 {
|
|
||||||
(self.hp - self.damage) as f32 / self.hp as f32
|
|
||||||
}
|
|
||||||
|
|
||||||
#[func]
|
|
||||||
pub fn tackled(&mut self) {
|
|
||||||
self.recv(mon_move::TACKLE);
|
|
||||||
self.hp_change()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn hp_change(&mut self) {
|
|
||||||
self.base_mut().emit_signal("hp_changed", &[]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[signal]
|
|
||||||
fn hp_changed();
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Mon {
|
|
||||||
fn recv(&mut self, m: mon_move::MonMove) {
|
|
||||||
m.use_on(self);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn hit_for(&mut self, power: i32) {
|
|
||||||
self.damage += power;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn damage_scalar(&self) -> f32 {
|
|
||||||
let mut result = 1.0;
|
|
||||||
for _ in 0..self.level_d {
|
|
||||||
result /= 2.0;
|
|
||||||
}
|
|
||||||
result
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue