/// Who decides an entity's actions. The sim only schedules intents for `Npc`s; a /// `Player`'s intents come from outside (input) through `Sim::set_action`. #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub enum EntityKind { Player, Npc, } pub struct Entity { pub id: u32, pub kind: EntityKind, pub type_id: u16, // sprite index into the entity tileset pub pos: (i16, i16), pub hp: u16, pub hp_max: u16, } impl Entity { pub fn new(id: u32, kind: EntityKind, type_id: u16, pos: (i16, i16), hp: u16) -> Self { Self { id, kind, type_id, pos, hp, hp_max: hp, } } }