Implement easy stagger and unconscious setter functions

Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com>
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2, Sig, Sigo 2 years ago
parent 2356d42495
commit ebbbabd7d0
  1. 8
      src/sig/objects/Player.java
  2. 36
      src/sig/objects/actor/PhysicsObject.java
  3. 6
      src/sig/objects/weapons/KnifeSwing.java
  4. 6
      src/sig/objects/weapons/KnifeSwing2.java

@ -404,15 +404,15 @@ public class Player extends PhysicsObject{
PhysicsObject pobj = (PhysicsObject)obj;
if(pobj.state!=State.STAGGER){
if(facing_direction){
pobj.staggerDuration=0.3;
setUncontrollable(0.2);
pobj.setStagger(0.3);
pobj.x_velocity = -300;
pobj.y_velocity = -120;
pobj.state = State.STAGGER;
}else{
pobj.staggerDuration=0.3;
setUncontrollable(0.2);
pobj.setStagger(0.3);
pobj.x_velocity = 300;
pobj.y_velocity = -120;
pobj.state = State.STAGGER;
}
}
}

@ -16,7 +16,9 @@ public abstract class PhysicsObject extends AnimatedObject implements PhysicsObj
public State state = State.IDLE;
public double x_velocity;
public double staggerDuration = 0;
protected double staggerDuration = 0;
protected State resumeState=null;
protected double uncontrollableDuration = 0;
public double y_velocity;
protected double gravity = GRAVITY;
protected double x_acceleration,y_acceleration;
@ -43,7 +45,13 @@ public abstract class PhysicsObject extends AnimatedObject implements PhysicsObj
staggerDuration-=updateMult;
}else
if(state==State.STAGGER && staggerDuration<=0){
state=State.IDLE;
state=resumeState;
}
if(state==State.UNCONTROLLABLE && uncontrollableDuration>0){
uncontrollableDuration-=updateMult;
}else
if(state==State.UNCONTROLLABLE && uncontrollableDuration<=0){
state=resumeState;
}
}
@ -204,6 +212,30 @@ public abstract class PhysicsObject extends AnimatedObject implements PhysicsObj
return sideCollision;
}
/**
* Sets how long this object will remain in the stagger state.
* Automatically resets the state to the previous state the object
* was in when the stagger state completes.
* @param duration Amount of time in seconds.
* */
public void setStagger(double duration) {
staggerDuration=duration;
resumeState=state;
state=State.STAGGER;
}
/**
* Sets how long this object will remain in the unconscious state.
* Automatically resets the state to the previous state the object
* was in when the unconscious state completes.
* @param duration Amount of time in seconds.
* */
public void setUncontrollable(double duration) {
uncontrollableDuration=duration;
resumeState=state;
state=State.UNCONTROLLABLE;
}
protected boolean checkCollision(double x,double y) {
int index = (int)y*RabiClone.BASE_WIDTH*Tile.TILE_WIDTH+(int)x;
if (index>=0&&index<RabiClone.COLLISION.length) {

@ -38,15 +38,13 @@ public class KnifeSwing extends AttachableObject{
PhysicsObject pobj = (PhysicsObject)obj;
if(pobj.state!=State.STAGGER){
if(getSpriteTransform()==Transform.NONE){
pobj.staggerDuration=0.3;
pobj.setStagger(0.3);
pobj.x_velocity = -500;
pobj.y_velocity = -300;
pobj.state = State.STAGGER;
}else{
pobj.staggerDuration=0.3;
pobj.setStagger(0.3);
pobj.x_velocity = 500;
pobj.y_velocity = -300;
pobj.state = State.STAGGER;
}
}
}

@ -38,15 +38,13 @@ public class KnifeSwing2 extends AttachableObject{
PhysicsObject pobj = (PhysicsObject)obj;
if(pobj.state!=State.STAGGER){
if(getSpriteTransform()==Transform.NONE){
pobj.staggerDuration=0.3;
pobj.setStagger(0.3);
pobj.x_velocity = -500;
pobj.y_velocity = -300;
pobj.state = State.STAGGER;
}else{
pobj.staggerDuration=0.3;
pobj.setStagger(0.3);
pobj.x_velocity = 500;
pobj.y_velocity = -300;
pobj.state = State.STAGGER;
}
}
}

Loading…
Cancel
Save