Regain health by skipping turn
This commit is contained in:
parent
1be2cf3907
commit
2310dd9218
@ -3,6 +3,8 @@ use crate::prelude::*;
|
|||||||
#[system]
|
#[system]
|
||||||
#[read_component(Point)]
|
#[read_component(Point)]
|
||||||
#[read_component(Player)]
|
#[read_component(Player)]
|
||||||
|
#[read_component(Enemy)]
|
||||||
|
#[write_component(Health)]
|
||||||
pub fn player_input(
|
pub fn player_input(
|
||||||
ecs: &mut SubWorld,
|
ecs: &mut SubWorld,
|
||||||
commands: &mut CommandBuffer,
|
commands: &mut CommandBuffer,
|
||||||
@ -26,6 +28,7 @@ pub fn player_input(
|
|||||||
|
|
||||||
let mut enemies = <(Entity, &Point)>::query().filter(component::<Enemy>());
|
let mut enemies = <(Entity, &Point)>::query().filter(component::<Enemy>());
|
||||||
|
|
||||||
|
let mut did_something = false;
|
||||||
if delta.x != 0 || delta.y != 0 {
|
if delta.x != 0 || delta.y != 0 {
|
||||||
let mut hit_something = false;
|
let mut hit_something = false;
|
||||||
enemies
|
enemies
|
||||||
@ -33,6 +36,7 @@ pub fn player_input(
|
|||||||
.filter(|(_, pos)| **pos == destination)
|
.filter(|(_, pos)| **pos == destination)
|
||||||
.for_each(|(entity, _)| {
|
.for_each(|(entity, _)| {
|
||||||
hit_something = true;
|
hit_something = true;
|
||||||
|
did_something = true;
|
||||||
|
|
||||||
commands.push((
|
commands.push((
|
||||||
(),
|
(),
|
||||||
@ -44,6 +48,7 @@ pub fn player_input(
|
|||||||
});
|
});
|
||||||
|
|
||||||
if !hit_something {
|
if !hit_something {
|
||||||
|
did_something = true;
|
||||||
commands.push((
|
commands.push((
|
||||||
(),
|
(),
|
||||||
WantsToMove {
|
WantsToMove {
|
||||||
@ -54,6 +59,16 @@ pub fn player_input(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !did_something {
|
||||||
|
if let Ok(mut health) = ecs
|
||||||
|
.entry_mut(player_entity)
|
||||||
|
.unwrap()
|
||||||
|
.get_component_mut::<Health>()
|
||||||
|
{
|
||||||
|
health.current = i32::min(health.max, health.current + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*turn_state = TurnState::PlayerTurn;
|
*turn_state = TurnState::PlayerTurn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user