More input validation

This commit is contained in:
timokoesters 2019-06-16 17:40:47 +02:00
parent 0c534efddd
commit 2afc45617d
No known key found for this signature in database
GPG Key ID: CD80BE9AAEE78097
2 changed files with 32 additions and 15 deletions

View File

@ -49,7 +49,6 @@ impl<'a> System<'a> for Sys {
.join()
{
animation_info.time += dt.0 as f64;
let moving = vel.0.magnitude() > 3.0;
fn impossible_animation(message: &str) -> Animation {
warn!("{}", message);
@ -58,7 +57,7 @@ impl<'a> System<'a> for Sys {
let animation = match (
on_ground.is_some(),
moving,
vel.0.magnitude() > 3.0, // Moving
attacking.is_some(),
gliding.is_some(),
rolling.is_some(),

View File

@ -65,40 +65,58 @@ impl<'a> System<'a> for Sys {
continue;
}
// Move dir
if rollings.get(entity).is_none() {
move_dirs.insert(
entity,
MoveDir(if controller.move_dir.magnitude() > 1.0 {
controller.move_dir.normalized()
} else {
controller.move_dir
}),
);
}
// Glide
if controller.glide && on_ground.is_none() && attackings.get(entity).is_none() {
if controller.glide
&& glidings.get(entity).is_none()
&& on_ground.is_none()
&& attackings.get(entity).is_none()
&& rollings.get(entity).is_none()
{
glidings.insert(entity, Gliding);
} else {
glidings.remove(entity);
}
// Move dir
move_dirs.insert(
entity,
MoveDir(if controller.move_dir.magnitude() > 1.0 {
controller.move_dir.normalized()
} else {
controller.move_dir
}),
);
// Attack
if controller.attack
&& attackings.get(entity).is_none()
&& glidings.get(entity).is_none()
&& rollings.get(entity).is_none()
{
attackings.insert(entity, Attacking::start());
}
// Jump
if on_ground.is_some() && controller.jump && vel.0.z <= 0.0 {
if controller.jump
&& jumpings.get(entity).is_none()
&& on_ground.is_some()
&& vel.0.z <= 0.0
{
jumpings.insert(entity, Jumping);
} else {
jumpings.remove(entity);
}
// Roll
if controller.roll && rollings.get(entity).is_none() && on_ground.is_some() {
if controller.roll
&& rollings.get(entity).is_none()
&& attackings.get(entity).is_none()
&& glidings.get(entity).is_none()
&& on_ground.is_some()
&& vel.0.magnitude() > 5.0
{
rollings.insert(entity, Rolling::start());
}
}