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