diff --git a/src/main/java/de/lasertec/game/GameManager.java b/src/main/java/de/lasertec/game/GameManager.java deleted file mode 100644 index 5891224..0000000 --- a/src/main/java/de/lasertec/game/GameManager.java +++ /dev/null @@ -1,93 +0,0 @@ -package de.lasertec.game; - -import de.lasertec.LasertecPlugin; -import de.lasertec.arena.Arena; -import de.lasertec.player.LaserPlayer; -import org.bukkit.entity.Player; - -import java.util.*; - -public class GameManager { - - private final LasertecPlugin plugin; - /** arenaName (lowercase) → Game */ - private final Map games = new LinkedHashMap<>(); - - public GameManager(LasertecPlugin plugin) { - this.plugin = plugin; - // Spiele für alle vorhandenen Arenen erstellen - for (Arena arena : plugin.getArenaManager().getAll()) { - games.put(arena.getName().toLowerCase(), new Game(plugin, arena)); - } - } - - // ─── Spiel-Verwaltung ──────────────────────────────────────────────────── - - /** Wird aufgerufen wenn eine neue Arena erstellt wird. */ - public Game createGame(Arena arena) { - Game g = new Game(plugin, arena); - games.put(arena.getName().toLowerCase(), g); - return g; - } - - public Game getGame(String arenaName) { - return games.get(arenaName.toLowerCase()); - } - - /** Liefert das Spiel in dem der Spieler gerade ist, oder null. */ - public Game getGameOf(Player player) { - return games.values().stream() - .filter(g -> g.getPlayers().containsKey(player.getUniqueId())) - .findFirst().orElse(null); - } - - public LaserPlayer getLaserPlayer(Player player) { - Game g = getGameOf(player); - return g == null ? null : g.getLP(player.getUniqueId()); - } - - // ─── Join / Leave ──────────────────────────────────────────────────────── - - public boolean joinGame(Player player, String arenaName) { - String pre = plugin.getConfig().getString("messages.prefix","§8[§b§lLASERTEC§8] §r"); - if (getGameOf(player) != null) { - player.sendMessage(pre + "§cDu bist bereits in einem Spiel! /lt leave"); - return false; - } - Game g = games.get(arenaName.toLowerCase()); - if (g == null) { player.sendMessage(pre + "§cArena '§e" + arenaName + "§c' nicht gefunden!"); return false; } - if (!g.getArena().isReady()) { player.sendMessage(pre + "§cDiese Arena ist noch nicht fertig eingerichtet!"); return false; } - if (!g.isJoinable()) { player.sendMessage(pre + "§cDas Spiel in dieser Arena läuft bereits!"); return false; } - return g.addPlayer(player); - } - - /** Tritt dem am besten gefüllten, joinbaren Spiel bei. */ - public boolean joinBest(Player player) { - String pre = plugin.getConfig().getString("messages.prefix","§8[§b§lLASERTEC§8] §r"); - if (getGameOf(player) != null) { - player.sendMessage(pre + "§cDu bist bereits in einem Spiel!"); - return false; - } - return games.values().stream() - .filter(g -> g.isJoinable() && g.getArena().isReady()) - .max(Comparator.comparingInt(Game::getPlayerCount)) - .map(g -> g.addPlayer(player)) - .orElseGet(() -> { player.sendMessage(pre + "§cKein verfügbares Spiel! Benutze /lt list"); return false; }); - } - - public void leaveGame(Player player) { - Game g = getGameOf(player); - if (g != null) g.removePlayer(player); - } - - // ─── Admin-Operationen ─────────────────────────────────────────────────── - - public void stopAllGames() { - for (Game g : games.values()) { - List online = new ArrayList<>(g.getOnline()); - online.forEach(g::removePlayer); - } - } - - public Collection getAllGames() { return Collections.unmodifiableCollection(games.values()); } -}