Complete Stage 1: Core Game Loop

- Add GameState enum (LOBBY, ROLE_ASSIGN, IN_GAME, ENDING)
- Add Phase interface with enter/tick/exit/isComplete
- Add GameSession with tick-based phase machine
- Add GameEventBus for internal events
- Add GameManager for session lifecycle
- Add all phases: LobbyPhase, RoleAssignPhase, GameplayPhase, EndgamePhase
- Add role assignment: RoleAssigner, RoleQueue, SpawnPosition
- Add BasePlayer, Survivor, Killer, PlayerState
- Add DBDCommand with /dbd join/leave/create/forcestart/stop
- Update mdbd.java with GameManager and command registration
- Add command definition to paper-plugin.yml
- Mark Stage 1 complete in PLAN.md
This commit is contained in:
loki5512344 2026-05-31 20:43:40 +02:00
parent 53f3f6e9da
commit 82ed455cd2
20 changed files with 884 additions and 8 deletions

View file

@ -0,0 +1,40 @@
package dev.loki.phase;
import dev.loki.core.GameSession;
import dev.loki.role.RoleAssigner;
import org.bukkit.Bukkit;
public class RoleAssignPhase implements Phase {
private final RoleAssigner assigner;
private int ticksLeft;
private boolean complete;
public RoleAssignPhase(RoleAssigner assigner) {
this.assigner = assigner;
this.complete = false;
}
@Override
public void enter(GameSession session) {
ticksLeft = session.getConfig().getRoleAssignDelay() * 20;
assigner.assignRoles(session);
}
@Override
public void tick(GameSession session) {
ticksLeft--;
if (ticksLeft <= 0) {
complete = true;
}
}
@Override
public void exit(GameSession session) {
Bukkit.broadcastMessage("[DBD] Роли назначены!");
}
@Override
public boolean isComplete() {
return complete;
}
}