Renderer/src/main/java/electrosphere/entity/state/movement/ServerSprintTree.java
austin ebec7a373e
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Separation of client and server logic
2023-05-20 19:18:09 -04:00

77 lines
2.0 KiB
Java

package electrosphere.entity.state.movement;
import electrosphere.engine.Main;
import electrosphere.entity.Entity;
import electrosphere.entity.state.BehaviorTree;
import electrosphere.entity.state.movement.ServerGroundMovementTree.MovementTreeState;
/**
*
* @author amaterasu
*/
public class ServerSprintTree implements BehaviorTree {
public static enum SprintTreeState {
SPRINTING,
NOT_SPRINTING,
}
SprintTreeState state;
ServerGroundMovementTree groundMovementTree;
Entity parent;
int staminaCurrent = 0;
int staminaMax = 1;
float maxVelocity;
public ServerSprintTree(Entity e, float maxVelocity, int staminaMax){
state = SprintTreeState.NOT_SPRINTING;
parent = e;
this.maxVelocity = maxVelocity;
this.staminaMax = staminaMax;
}
public SprintTreeState getState(){
return state;
}
public void start(){
if(staminaCurrent > 0){
// System.out.println("Starting sprinting");
state = SprintTreeState.SPRINTING;
}
}
public void stop(){
state = SprintTreeState.NOT_SPRINTING;
}
@Override
public void simulate(float deltaTime){
switch(state){
case SPRINTING:
if(groundMovementTree != null && groundMovementTree.getState() != MovementTreeState.IDLE){
staminaCurrent--;
if(staminaCurrent < 1){
state = SprintTreeState.NOT_SPRINTING;
}
}
break;
case NOT_SPRINTING:
staminaCurrent++;
if(staminaCurrent > staminaMax){
staminaCurrent = staminaMax;
}
break;
}
}
public void setServerGroundMovementTree(ServerGroundMovementTree groundMovementTree){
this.groundMovementTree = groundMovementTree;
}
}