package com.walrusone.skywars.controllers;
import java.util.Collection;
import java.util.Map;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.google.common.collect.Maps;
import com.walrusone.skywars.SkyWarsReloaded;
import com.walrusone.skywars.game.GamePlayer;
public class PlayerController {
private final Map<UUID, GamePlayer> onlinePlayers = Maps.newHashMap();
public PlayerController() {
for (Player player : Bukkit.getOnlinePlayers()) {
addPlayer(player.getUniqueId());
}
}
public void addPlayer(UUID uuid) {
if (!this.onlinePlayers.containsKey(uuid)) {
final GamePlayer gamePlayer = new GamePlayer(uuid);
onlinePlayers.put(uuid, gamePlayer);
if (SkyWarsReloaded.getCfg().LobbyScoreboardEnabeld()) {
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
public void run() {
if (gamePlayer.getP() != null) {
String world = gamePlayer.getP().getWorld().getName();
Location spawn = SkyWarsReloaded.getCfg().getSpawn();
if (spawn != null) {
String lobbyWorld = spawn.getWorld().getName();
if (world.equalsIgnoreCase(lobbyWorld)) {
SkyWarsReloaded.getScore().getScoreboard(gamePlayer.getP());
}
}
}
}
}, 5);
}
}
}
public void removePlayer(UUID uuid) {
GamePlayer save = getPlayer(uuid);
String glassColor;
String effect;
String projEffect;
if (save.getGlass() != null) {
glassColor = save.getGlass();
} else {
glassColor = "normal";
}
if (save.getEffect() != null) {
effect = save.getEffect();
} else {
effect = "normal";
}
if (save.getProjEffect() != null) {
projEffect = save.getProjEffect();
} else {
projEffect = "normal";
}
SkyWarsReloaded.getDS().savePlayerAsync(uuid, save.getName(), save.getWins(), save.getKills(), save.getDeaths(), save.getGamesPlayed(), save.getScore(), save.getBalance(), save.getBlocks(), save.getPerms(), save.getNewPerms(), glassColor, effect, projEffect);
onlinePlayers.remove(uuid);
}
public GamePlayer getPlayer(UUID uuid) {
return onlinePlayers.get(uuid);
}
public GamePlayer getPlayerByName(String name) {
for (GamePlayer gPlayer: onlinePlayers.values()) {
if (gPlayer.getName().equals(name)) {
return gPlayer;
}
}
return null;
}
public Collection<GamePlayer> getAll() {
return onlinePlayers.values();
}
public void shutdown() {
for (GamePlayer gamePlayer : onlinePlayers.values()) {
SkyWarsReloaded.getDS().savePlayerSync(gamePlayer);
}
onlinePlayers.clear();
}
public void savePlayersAsync() {
for (GamePlayer save : onlinePlayers.values()) {
SkyWarsReloaded.getDS().savePlayerAsync(save.getUUID(), save.getName(), save.getWins(), save.getKills(), save.getDeaths(), save.getGamesPlayed(), save.getScore(), save.getBalance(), save.getBlocks(), save.getPerms(), save.getNewPerms(), save.getGlass(), save.getEffect(), save.getProjEffect());
}
}
}