cobject 0.1.1

A game engine that uses minifb as a foundation and currently only supports 2D.
Documentation
use crate::{cbutton::CButton, CArea};

pub struct CBasicButton {
    clicked_action: Box<dyn Fn()>,
    held_action: Box<dyn Fn()>,
    released_action: Box<dyn Fn()>,
    pub hitbox: CArea,
}

impl CBasicButton {
    pub fn new<F1: Fn() + 'static, F2: Fn() + 'static, F3: Fn() + 'static>(
        clicked_action: F1,
        held_action: F2,
        released_action: F3,
        hitbox: CArea,
    ) -> Self {
        Self {
            clicked_action: Box::new(clicked_action),
            held_action: Box::new(held_action),
            released_action: Box::new(released_action),
            hitbox,
        }
    }
}

impl CButton for CBasicButton {
    fn clicked(&self) {
        (self.clicked_action)();
    }

    fn released(&self) {
        (self.released_action)();
    }

    fn held(&self) {
        (self.held_action)();
    }

    fn hitbox(&self) -> &CArea {
        &self.hitbox
    }
}