package eu.thog.uhcrun.game.team;
import mkremins.fanciful.FancyMessage;
import eu.thog.uhcrun.game.TeamGame;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* This file is a part of the UHCRun Project CodeBase
* Created by Thog
* (C) Copyright Thomas Guillemard 2016
* All rights reserved.
*/
public class Team
{
private final CopyOnWriteArrayList<UUID> players;
private final TeamGame game;
private final ItemStack icon;
private final DyeColor color;
private final ChatColor chatColor;
private int maxSize = -1;
private String teamName;
private List<UUID> invited = new ArrayList<>();
private boolean locked;
public Team(TeamGame game, String name, DyeColor color, ChatColor chatColor)
{
this.game = game;
this.teamName = name;
this.players = new CopyOnWriteArrayList<>();
this.color = color;
this.chatColor = chatColor;
this.icon = new ItemStack(Material.WOOL, 1, color.getData());
if (maxSize == -1)
{
maxSize = game.getPersonsPerTeam();
}
}
public void join(UUID player)
{
Player newJoiner = Bukkit.getPlayer(player);
if (newJoiner != null)
{
for (UUID member : players)
{
Player user = Bukkit.getPlayer(member);
if (user != null)
{
user.sendMessage(game.getTag() + " " + ChatColor.AQUA + newJoiner.getName() + ChatColor.YELLOW + " a rejoint l'équipe.");
}
}
}
this.players.add(player);
}
public boolean isLocked()
{
return locked;
}
public void setLocked(boolean locked)
{
this.locked = locked;
}
public void remove(UUID player)
{
players.remove(player);
this.lockCheck();
}
public ItemStack getIcon()
{
return icon;
}
public void invite(String inviter, UUID invited)
{
this.invited.add(invited);
new FancyMessage("Vous avez été invité dans l'équipe " + this.teamName + " par " + inviter + " ")
.color(ChatColor.GOLD)
.style(ChatColor.BOLD)
.then("[Rejoindre]")
.color(ChatColor.GREEN)
.style(ChatColor.BOLD)
.command("/uhc join " + this.chatColor.getChar())
.send(Bukkit.getPlayer(invited));
}
public boolean hasPlayer(UUID player)
{
return players.contains(player);
}
public CopyOnWriteArrayList<UUID> getPlayersUUID()
{
return players;
}
public String getTeamName()
{
return teamName;
}
public void setTeamName(String teamName)
{
this.teamName = teamName;
}
public ChatColor getChatColor()
{
return chatColor;
}
public boolean isEmpty()
{
return players.isEmpty();
}
public int removePlayer(UUID uniqueId)
{
players.remove(uniqueId);
this.lockCheck();
return players.size();
}
private void lockCheck()
{
int size = players.size();
if (size == 0 && isLocked())
{
this.setLocked(false);
}
}
public boolean canJoin()
{
return !this.isLocked() && players.size() < maxSize;
}
public boolean isFull()
{
return players.size() == game.getPersonsPerTeam();
}
}