package nl.sugcube.crystalquest;
import nl.sugcube.crystalquest.game.Arena;
import nl.sugcube.crystalquest.game.ArenaManager;
import nl.sugcube.crystalquest.sba.SMeth;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.Sign;
import java.util.ArrayList;
import java.util.List;
/**
* @author SugarCaney
*/
public class SignHandler {
public static CrystalQuest plugin;
public static ArenaManager am;
private List<Location> signs = new ArrayList<Location>();
public SignHandler(CrystalQuest instance, ArenaManager manager) {
plugin = instance;
am = manager;
}
/**
* Start a sign updater. Will updated the signs 2 times every second.
*/
public void startSignUpdater() {
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
public void run() {
updateSigns();
}
}, 10L, 10L);
}
/**
* Updates all signs in the sign list
*/
public void updateSigns() {
for (Location loc : this.signs) {
try {
Sign s = (Sign)loc.getBlock().getState();
Arena a = am.getArena(s.getLine(1).replace(ChatColor.ITALIC + "", ""));
ChatColor color = null;
if (a.isEnabled()) {
if (a.isCounting()) {
s.setLine(3, ChatColor.YELLOW + "Starting");
s.setLine(2, a.getPlayers().size() + "/" + a.getMaxPlayers() + " | " +
a.getCountdown() + "s");
s.setLine(1, ChatColor.ITALIC + a.getName());
s.setLine(0, ChatColor.GREEN + "" + ChatColor.BOLD + "CQ-Join");
}
else if (a.isInGame() && !a.isEndGame()) {
s.setLine(3, ChatColor.DARK_RED + "In Game");
s.setLine(2, SMeth.toTime(a.getTimeLeft()) + " left");
s.setLine(1, ChatColor.ITALIC + a.getName());
s.setLine(0, ChatColor.AQUA + "" + ChatColor.BOLD + "CQ-Spectate");
}
else if (a.isEndGame()) {
color = ChatColor.DARK_PURPLE;
s.setLine(3, ChatColor.DARK_PURPLE + "Restarting");
s.setLine(2, "");
s.setLine(1, ChatColor.ITALIC + a.getName());
s.setLine(0, ChatColor.DARK_RED + "" + ChatColor.BOLD + "Unjoinable");
}
else {
s.setLine(3, ChatColor.GREEN + "Lobby");
s.setLine(2, a.getPlayers().size() + "/" + a.getMaxPlayers());
s.setLine(1, ChatColor.ITALIC + a.getName());
s.setLine(0, ChatColor.GREEN + "" + ChatColor.BOLD + "CQ-Join");
}
}
else {
s.setLine(0, "");
s.setLine(1, ChatColor.ITALIC + a.getName());
s.setLine(2, ChatColor.DARK_RED + "" + ChatColor.BOLD + "Disabled");
s.setLine(3, "");
}
s.update();
}
catch (Exception e) {
}
}
plugin.menuSA.updateMenu();
plugin.menuPT.updateMenus();
}
/**
* Gets a list of all the lobby-signs
*
* @return (SignList) All Lobby-signs
*/
public List<Location> getSigns() {
return this.signs;
}
}