Delete src/main/java/de/lasertag/game/GameManager.java via Git Manager GUI
This commit is contained in:
@@ -1,93 +0,0 @@
|
||||
package de.lasertag.game;
|
||||
|
||||
import de.lasertag.LasertagPlugin;
|
||||
import de.lasertag.arena.Arena;
|
||||
import de.lasertag.player.LaserPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class GameManager {
|
||||
|
||||
private final LasertagPlugin plugin;
|
||||
/** arenaName (lowercase) → Game */
|
||||
private final Map<String, Game> games = new LinkedHashMap<>();
|
||||
|
||||
public GameManager(LasertagPlugin 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§lLASERTAG§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§lLASERTAG§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<Player> online = new ArrayList<>(g.getOnline());
|
||||
online.forEach(g::removePlayer);
|
||||
}
|
||||
}
|
||||
|
||||
public Collection<Game> getAllGames() { return Collections.unmodifiableCollection(games.values()); }
|
||||
}
|
||||
Reference in New Issue
Block a user