package in.twizmwaz.cardinal.module.modules.scoreboard; import in.twizmwaz.cardinal.module.GameObjective; import in.twizmwaz.cardinal.module.modules.cores.CoreObjective; import in.twizmwaz.cardinal.module.modules.destroyable.DestroyableObjective; import in.twizmwaz.cardinal.module.modules.hill.HillObjective; import in.twizmwaz.cardinal.module.modules.team.TeamModule; import in.twizmwaz.cardinal.module.modules.wools.WoolObjective; import in.twizmwaz.cardinal.util.MiscUtils; import in.twizmwaz.cardinal.util.NumUtils; import in.twizmwaz.cardinal.util.StringUtils; import org.bukkit.ChatColor; public class GameObjectiveScoreboardHandler { private GameObjective objective; private TeamModule team; private static int num = 1; private int number; public GameObjectiveScoreboardHandler(GameObjective objective) { this.objective = objective; this.team = objective.getTeam(); this.number = num; num ++; } public int getNumber() { return number; } public String getPrefix(TeamModule team) { String prefix; if (objective instanceof WoolObjective) { WoolObjective wool = (WoolObjective) objective; if (wool.isComplete()) { prefix = MiscUtils.convertDyeColorToChatColor(wool.getColor()) + " \u2B1B "; } else if (wool.isTouched() && (this.team == team || team.isObserver())) { prefix = MiscUtils.convertDyeColorToChatColor(wool.getColor()) + " \u2592 " + (wool.showProximity() ? ChatColor.RESET + NumUtils.convertToSubscript(wool.getProximity() == Double.POSITIVE_INFINITY || wool.getProximity() == Double.NEGATIVE_INFINITY ? wool.getProximity() : Math.round(wool.getProximity() * 10.0) / 10.0) + " " : ""); } else if (this.team == team || team.isObserver()) { prefix = MiscUtils.convertDyeColorToChatColor(wool.getColor()) + " \u2B1C " + (wool.showProximity() ? ChatColor.RESET + NumUtils.convertToSubscript(wool.getProximity() == Double.POSITIVE_INFINITY || wool.getProximity() == Double.NEGATIVE_INFINITY ? wool.getProximity() : Math.round(wool.getProximity() * 10.0) / 10.0) + " " : ""); } else { prefix = MiscUtils.convertDyeColorToChatColor(wool.getColor()) + " \u2B1C "; } } else if (objective instanceof CoreObjective) { CoreObjective core = (CoreObjective) objective; if (core.isComplete()) { prefix = ChatColor.GREEN + " \u2714 "; } else if (core.isTouched() && this.team != team) { prefix = ChatColor.YELLOW + " \u2733 "; } else if (this.team != team) { prefix = ChatColor.RED + " \u2715 " + ChatColor.RESET + (core.showProximity() ? NumUtils.convertToSubscript(core.getProximity() == Double.POSITIVE_INFINITY || core.getProximity() == Double.NEGATIVE_INFINITY ? core.getProximity() : Math.round(core.getProximity() * 10.0) / 10.0) + " " : ""); } else { prefix = ChatColor.RED + " \u2715 "; } } else if (objective instanceof DestroyableObjective) { DestroyableObjective destroyable = (DestroyableObjective) objective; if (destroyable.showPercent()) { if (destroyable.isComplete()) { prefix = ChatColor.GREEN + " " + destroyable.getPercent() + "% "; } else if (destroyable.isTouched() && this.team != team) { prefix = ChatColor.YELLOW + " " + destroyable.getPercent() + "% "; } else if (this.team != team) { prefix = ChatColor.RED + " " + destroyable.getPercent() + "% " + ChatColor.RESET + (destroyable.showProximity() ? NumUtils.convertToSubscript(destroyable.getProximity() == Double.POSITIVE_INFINITY || destroyable.getProximity() == Double.NEGATIVE_INFINITY ? destroyable.getProximity() : Math.round(destroyable.getProximity() * 10.0) / 10.0) + " " : ""); } else { prefix = ChatColor.RED + " " + destroyable.getPercent() + "% "; } } else if (team.isObserver()) { if (destroyable.isComplete()) { prefix = ChatColor.GREEN + " " + destroyable.getPercent() + "% " + ChatColor.GRAY + destroyable.getBlocksBroken() + "/" + destroyable.getBlocksRequired() + " "; } else if (destroyable.isTouched() && this.team != team) { prefix = ChatColor.YELLOW + " " + destroyable.getPercent() + "% " + ChatColor.GRAY + destroyable.getBlocksBroken() + "/" + destroyable.getBlocksRequired() + " "; } else if (this.team != team) { prefix = ChatColor.RED + " " + destroyable.getPercent() + "% " + ChatColor.GRAY + destroyable.getBlocksBroken() + "/" + destroyable.getBlocksRequired() + " " + ChatColor.RESET + (destroyable.showProximity() ? NumUtils.convertToSubscript(destroyable.getProximity() == Double.POSITIVE_INFINITY || destroyable.getProximity() == Double.NEGATIVE_INFINITY ? destroyable.getProximity() : Math.round(destroyable.getProximity() * 10.0) / 10.0) + " " : ""); } else { prefix = ChatColor.RED + " " + destroyable.getPercent() + "% " + ChatColor.GRAY + destroyable.getBlocksBroken() + "/" + destroyable.getBlocksRequired() + " "; } } else { if (destroyable.isComplete()) { prefix = ChatColor.GREEN + " \u2714 "; } else if (destroyable.isTouched() && this.team != team) { prefix = ChatColor.YELLOW + " \u2733 "; } else if (this.team != team) { prefix = ChatColor.RED + " \u2715 " + ChatColor.RESET + (destroyable.showProximity() ? NumUtils.convertToSubscript(destroyable.getProximity() == Double.POSITIVE_INFINITY || destroyable.getProximity() == Double.NEGATIVE_INFINITY ? destroyable.getProximity() : Math.round(destroyable.getProximity() * 10.0) / 10.0) + " " : ""); } else { prefix = ChatColor.RED + " \u2715 "; } } } else if (objective instanceof HillObjective) { HillObjective hill = (HillObjective) objective; if (hill.isComplete()) { prefix = ChatColor.RESET + " \u29BF" + (hill.getTeam() != null ? hill.getTeam().getColor() : "") + " "; } else if (hill.isTouched()) { if (hill.showProgress()) { prefix = ChatColor.RESET + " " + (hill.getCapturingTeam() != null ? hill.getCapturingTeam().getColor() : ChatColor.RESET) + "" + hill.getPercent() + "%" + (hill.getTeam() != null ? hill.getTeam().getColor() : "") + " "; } else { prefix = ChatColor.RESET + " \u29BF" + (hill.getTeam() != null ? hill.getTeam().getColor() : "") + " "; } } else { prefix = ChatColor.RESET + " \u29BE "; } } else { prefix = " "; } while (prefix.length() > 16) { prefix = StringUtils.removeLastWord(prefix); } return prefix; } }