use agb::fixnum::{Num, Vector2D, num, vec2};
pub struct ButtonHighlight {
pos: Vector2D<Num<i32, 8>>,
target: Vector2D<Num<i32, 8>>,
}
impl ButtonHighlight {
pub fn new(x: i32, y: i32) -> Self {
let pos = vec2(Num::from(x), Num::from(y));
Self { pos, target: pos }
}
pub fn set_target(&mut self, x: i32, y: i32) {
self.target = vec2(Num::from(x), Num::from(y));
}
pub fn update(&mut self) {
self.pos += (self.target - self.pos) * num!(0.35);
if (self.target.x - self.pos.x).abs() < num!(0.5) {
self.pos.x = self.target.x;
}
if (self.target.y - self.pos.y).abs() < num!(0.5) {
self.pos.y = self.target.y;
}
}
pub fn pos(&self) -> Vector2D<i32> {
self.pos.round()
}
}