Add hunger
This commit is contained in:
@@ -3,13 +3,9 @@ use std::cmp::{max, min};
|
||||
use rltk::{Point, Rltk, VirtualKeyCode};
|
||||
use specs::prelude::*;
|
||||
|
||||
use crate::{components::{CombatStats, Player, Position, Viewshed, WantsToMelee}, HungerClock, HungerState, Item, map::Map, Monster, RunState, State, TileType, WantsToPickupItem};
|
||||
use crate::gamelog::GameLog;
|
||||
use crate::spawner::player;
|
||||
use crate::{
|
||||
components::{CombatStats, Player, Position, Viewshed, WantsToMelee},
|
||||
map::Map,
|
||||
Item, Monster, RunState, State, TileType, WantsToPickupItem,
|
||||
};
|
||||
|
||||
pub fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World) {
|
||||
let mut positions = ecs.write_storage::<Position>();
|
||||
@@ -21,7 +17,7 @@ pub fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World) {
|
||||
let map = ecs.fetch::<Map>();
|
||||
|
||||
for (entity, _player, pos, viewshed) in
|
||||
(&entities, &mut players, &mut positions, &mut viewsheds).join()
|
||||
(&entities, &mut players, &mut positions, &mut viewsheds).join()
|
||||
{
|
||||
if pos.x + delta_x < 1
|
||||
|| pos.x + delta_x > map.width - 1
|
||||
@@ -139,10 +135,20 @@ fn skip_turn(ecs: &mut World) -> RunState {
|
||||
}
|
||||
}
|
||||
|
||||
let hunger_clock = ecs.read_storage::<HungerClock>();
|
||||
let mut heal_bonus = 0;
|
||||
if let Some(hc) = hunger_clock.get(*player_entity) {
|
||||
match hc.state {
|
||||
HungerState::Hungry | HungerState::Starving => {can_heal = false;}
|
||||
HungerState::WellFed => {heal_bonus = 1;}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
if can_heal {
|
||||
let mut health_component = ecs.write_storage::<CombatStats>();
|
||||
let player_hp = health_component.get_mut(*player_entity).unwrap();
|
||||
player_hp.hp = i32::min(player_hp.hp + 1, player_hp.max_hp);
|
||||
player_hp.hp = i32::min(player_hp.hp + 1 + heal_bonus, player_hp.max_hp);
|
||||
}
|
||||
|
||||
RunState::PlayerTurn
|
||||
|
Reference in New Issue
Block a user