initial commit

using rltk
This commit is contained in:
Llywelwyn 2023-07-06 16:47:07 +01:00
parent 40a2ac07be
commit d3a09df7a8
29 changed files with 3323 additions and 0 deletions

66
src/components.rs Normal file
View file

@ -0,0 +1,66 @@
use rltk::RGB;
use specs::prelude::*;
use specs_derive::*;
#[derive(Component)]
pub struct Position {
pub x: i32,
pub y: i32,
}
#[derive(Component)]
pub struct Renderable {
pub glyph: rltk::FontCharType,
pub fg: RGB,
pub bg: RGB,
}
#[derive(Component, Debug)]
pub struct Player {}
#[derive(Component, Debug)]
pub struct Monster {}
#[derive(Component)]
pub struct Viewshed {
pub visible_tiles: Vec<rltk::Point>,
pub range: i32,
pub dirty: bool,
}
#[derive(Component, Debug)]
pub struct Name {
pub name: String,
}
#[derive(Component, Debug)]
pub struct BlocksTile {}
#[derive(Component, Debug)]
pub struct CombatStats {
pub max_hp: i32,
pub hp: i32,
pub defence: i32,
pub power: i32,
}
#[derive(Component, Debug, Clone)]
pub struct WantsToMelee {
pub target: Entity,
}
#[derive(Component, Debug)]
pub struct SufferDamage {
pub amount: Vec<i32>,
}
impl SufferDamage {
pub fn new_damage(store: &mut WriteStorage<SufferDamage>, victim: Entity, amount: i32) {
if let Some(suffering) = store.get_mut(victim) {
suffering.amount.push(amount);
} else {
let dmg = SufferDamage { amount: vec![amount] };
store.insert(victim, dmg).expect("Unable to insert damage.");
}
}
}