package at.er.ytbattle.plugin.team;
import at.er.ytbattle.plugin.BattlePlugin;
import at.er.ytbattle.plugin.player.BattlePlayer;
import org.bukkit.DyeColor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class TeamManager {
private Map<TeamColor, Team> teams;
public TeamManager() {
this.teams = new HashMap<>();
for (TeamColor teamColor : TeamColor.values()) {
Team team = new Team(teamColor);
this.teams.put(teamColor, team);
}
}
public Team getTeam(TeamColor teamColor) {
return this.teams.get(teamColor);
}
public Team getTeamByPlayer(BattlePlayer p) {
for (Entry<TeamColor, Team> t : this.teams.entrySet()) {
if (t.getValue().containsPlayer(p)) {
return t.getValue();
}
}
return null;
}
public Team getTeamByDyeColor(DyeColor dyeColor) {
for (Entry<TeamColor, Team> t : this.teams.entrySet()) {
if (t.getValue().getTeamColor().getDyeColor().equals(dyeColor)) {
return t.getValue();
}
}
return null;
}
public ArrayList<Team> getTeams() {
ArrayList<Team> teamList = new ArrayList<>();
for (Entry<TeamColor, Team> t : this.teams.entrySet()) {
teamList.add(t.getValue());
}
return teamList;
}
public void removePlayerFromTeam(BattlePlayer player) {
Team t = this.getTeamByPlayer(player);
if (t != null) {
t.removePlayer(player);
}
}
public boolean isInTeam(BattlePlayer p) {
Team t = this.getTeamByPlayer(p);
return t != null && !t.hasLost();
}
public boolean isLastTeam(Team team) {
return team == this.getLastTeam();
}
public int getTeamCount() {
int teamcount = 0;
for (Team t : BattlePlugin.game().getTeamManager().getTeams()) {
if (t.getTeamSize() > 0) {
teamcount++;
}
}
return teamcount;
}
public Team getLastTeam() {
int livingcount = 0;
Team living = null;
for (Team t : this.getTeams()) {
if (!t.hasLost() && t.getTeamSize() > 0) {
livingcount++;
if (livingcount >= 2) {
return null;
} else {
living = t;
}
}
}
if (livingcount == 1) {
return living;
} else {
return null;
}
}
}