Parrying added. (Sans animations)
This commit is contained in:
parent
f5e0a40be7
commit
c5a3ccd861
@ -29,13 +29,14 @@ public class CCombat extends Component {
|
||||
public int health = 0;
|
||||
private int maxHealth = 0;
|
||||
private int damage = 0;
|
||||
private float swingForce = 20f;
|
||||
private float swingForce = 15f;
|
||||
private Vector2 swingsize = new Vector2(3, 3);
|
||||
private CombatListener combatListener;
|
||||
|
||||
private Vector2 swinging = new Vector2();
|
||||
private float swingDuration = 0.4f;
|
||||
public float swingCdCounter = 0;
|
||||
public float stunCounter = 0;
|
||||
|
||||
private boolean parrying = false;
|
||||
|
||||
|
@ -43,6 +43,10 @@ public class SwingHitboxListener implements CollisionListener {
|
||||
this.direction = direction;
|
||||
}
|
||||
|
||||
public CCombat getSourceCombat() {
|
||||
return cm.get(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void collision(Direction side, Entity host, Entity other) {
|
||||
if (other.equals(source) || hitEntities.contains(other)) {
|
||||
@ -51,8 +55,7 @@ public class SwingHitboxListener implements CollisionListener {
|
||||
hitEntities.add(other);
|
||||
|
||||
CCombat sourceCombat = cm.get(source);
|
||||
CCombat otherCombat = cm.get(other);
|
||||
if (otherCombat != null && !sourceCombat.isParrying()) {
|
||||
if (cm.get(other) != null && !sourceCombat.isParrying()) {
|
||||
int damage = cm.get(source).getDamage();
|
||||
CombatSystem.dealDamage(source, other, damage);
|
||||
}
|
||||
@ -66,6 +69,7 @@ public class SwingHitboxListener implements CollisionListener {
|
||||
AudioLoader.getSound(Name.SOUND_CLANG04));
|
||||
s.play(AppUtil.sfxVolume);
|
||||
|
||||
SwingHitboxListener otherListener = (SwingHitboxListener) otherPhysics.getCollisionListener();
|
||||
if (!sourceCombat.isParrying()) {
|
||||
// Source isn't parrying, throw back
|
||||
float x = 0;
|
||||
@ -74,6 +78,11 @@ public class SwingHitboxListener implements CollisionListener {
|
||||
} else if (direction == Direction.RIGHT) {
|
||||
x = -1;
|
||||
}
|
||||
CCombat otherCombat = otherListener.getSourceCombat();
|
||||
if (otherCombat != null && otherCombat.isParrying()) {
|
||||
x *= 1.75f;
|
||||
sourceCombat.stunCounter = otherCombat.getSwingForce() / 10f;
|
||||
}
|
||||
pm.get(source).setSimVelocity(x * sourceCombat.getSwingForce(), 0);
|
||||
}
|
||||
}
|
||||
|
@ -58,6 +58,10 @@ public class CombatSystem extends EntitySystem {
|
||||
combat.swingCdCounter -= deltaTime;
|
||||
continue;
|
||||
}
|
||||
if (combat.stunCounter > 0) {
|
||||
combat.stunCounter -= deltaTime;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ready to swing !
|
||||
combat.getSwing().setZero();
|
||||
|
@ -74,6 +74,12 @@ public class PhysicsSystem extends EntitySystem {
|
||||
if (combat.swingCdCounter > 0) {
|
||||
obj.getVelocity().x /= 2;
|
||||
}
|
||||
if (combat.isParrying()) {
|
||||
obj.getVelocity().x /= 2;
|
||||
}
|
||||
if (combat.stunCounter > 0) {
|
||||
obj.getVelocity().x = 0;
|
||||
}
|
||||
}
|
||||
if (obj.jumping && obj.isGrounded()) {
|
||||
obj.setGrounded(false);
|
||||
|
Loading…
Reference in New Issue
Block a user