feat(gameplay): implement hook sabotage, generator kick, jump listener, and boss bar UI
- Add HookSabotage system for survivors to disable hooks temporarily - Add GeneratorKick killer ability to regress generator progress - Add PlayerJumpListener to track survivor jump actions - Add BossBarManager for displaying game state and objectives - Update generator regression logic to support killer kick mechanic - Update KillerController to integrate generator kick ability - Update PlayerInteractListener to handle new interaction types - Refactor game phases to use BossBarManager for UI updates - Update .gitignore to exclude compiled bin/ directory - Simplify PLAN.md documentation for easier maintenance
This commit is contained in:
parent
3d6204cc83
commit
89dc9eb00d
78 changed files with 2293 additions and 1210 deletions
|
|
@ -1,5 +1,6 @@
|
|||
package dev.loki.survivor;
|
||||
|
||||
import dev.loki.config.GameConfig;
|
||||
import dev.loki.player.PlayerState;
|
||||
import dev.loki.player.Survivor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
|
@ -11,23 +12,17 @@ public class SurvivorController {
|
|||
private final SurvivorMovement movement;
|
||||
private final SurvivorHealing healing;
|
||||
|
||||
public SurvivorController(Survivor survivor) {
|
||||
public SurvivorController(Survivor survivor, GameConfig config) {
|
||||
this.survivor = survivor;
|
||||
this.movement = new SurvivorMovement(this);
|
||||
this.healing = new SurvivorHealing(this);
|
||||
this.healing = new SurvivorHealing(this, config);
|
||||
}
|
||||
|
||||
public void onSprintStart() {
|
||||
movement.onSprintStart();
|
||||
}
|
||||
public void onSprintStart() { movement.onSprintStart(); }
|
||||
public void onSprintEnd() { movement.onSprintEnd(); }
|
||||
|
||||
public void onSprintEnd() {
|
||||
movement.onSprintEnd();
|
||||
}
|
||||
|
||||
public void onHealAttempt(Player target) {
|
||||
healing.startHealing(target);
|
||||
}
|
||||
public void onHealAttempt(Player target) { healing.startHealing(target); }
|
||||
public void onHealCancel() { healing.cancelHealing(); }
|
||||
|
||||
public void tick() {
|
||||
movement.tick();
|
||||
|
|
@ -38,40 +33,18 @@ public class SurvivorController {
|
|||
private void updateSpeed() {
|
||||
Player player = survivor.getPlayer();
|
||||
if (player == null) return;
|
||||
|
||||
float speed = movement.getCurrentSpeed();
|
||||
player.setWalkSpeed(speed);
|
||||
}
|
||||
|
||||
public void onStateChange(PlayerState newState) {
|
||||
movement.onStateChange(newState);
|
||||
}
|
||||
public void onStateChange(PlayerState newState) { movement.onStateChange(newState); }
|
||||
|
||||
public UUID getUuid() {
|
||||
return survivor.getUuid();
|
||||
}
|
||||
|
||||
public Survivor getSurvivor() {
|
||||
return survivor;
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return survivor.getPlayer();
|
||||
}
|
||||
|
||||
public PlayerState getState() {
|
||||
return survivor.getState();
|
||||
}
|
||||
|
||||
public boolean isDowned() {
|
||||
return survivor.getState() == PlayerState.DOWNED;
|
||||
}
|
||||
|
||||
public boolean isInjured() {
|
||||
return survivor.getState() == PlayerState.INJURED;
|
||||
}
|
||||
|
||||
public boolean isHealthy() {
|
||||
return survivor.getState() == PlayerState.HEALTHY;
|
||||
}
|
||||
public UUID getUuid() { return survivor.getUuid(); }
|
||||
public Survivor getSurvivor() { return survivor; }
|
||||
public Player getPlayer() { return survivor.getPlayer(); }
|
||||
public PlayerState getState() { return survivor.getState(); }
|
||||
public boolean isDowned() { return survivor.getState() == PlayerState.DOWNED; }
|
||||
public boolean isInjured() { return survivor.getState() == PlayerState.INJURED; }
|
||||
public boolean isHealthy() { return survivor.getState() == PlayerState.HEALTHY; }
|
||||
public SurvivorHealing getHealing() { return healing; }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue