package in.twizmwaz.cardinal.module.modules.tutorial;
import in.twizmwaz.cardinal.GameHandler;
import in.twizmwaz.cardinal.chat.ChatConstant;
import in.twizmwaz.cardinal.chat.LocalizedChatMessage;
import in.twizmwaz.cardinal.event.PlayerChangeTeamEvent;
import in.twizmwaz.cardinal.module.Module;
import in.twizmwaz.cardinal.util.ChatUtils;
import in.twizmwaz.cardinal.util.TeamUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Tutorial implements Module {
private Stage prefix;
private List<Stage> stages;
private Stage suffix;
private List<Stage> allStages = new ArrayList<>();
private Map<Player, DisplayHandler> displayHandlerMap = new HashMap<>();
public Stage getPrefix() {
return prefix;
}
public List<Stage> getStages() {
return this.stages;
}
public List<Stage> getAllStages() {
return this.allStages;
}
public Stage getSuffix() {
return suffix;
}
public Tutorial(Stage prefix, List<Stage> stages, Stage suffix) {
this.prefix = prefix;
this.stages = stages;
this.suffix = suffix;
this.allStages.add(prefix);
this.allStages.addAll(stages);
this.allStages.add(suffix);
}
@EventHandler
public void onPlayerRightClick(PlayerInteractEvent event) {
boolean condition = TeamUtils.getTeamByPlayer(event.getPlayer()).isObserver() && event.getPlayer().getItemInHand() != null && event.getPlayer().getItemInHand().getType().equals(Material.EMERALD);
if (!this.displayHandlerMap.containsKey(event.getPlayer())) {
this.displayHandlerMap.put(event.getPlayer(), new DisplayHandler(event.getPlayer(), this));
}
if ((event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) && condition) {
this.displayHandlerMap.get(event.getPlayer()).displayNext();
}
if ((event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK) && condition) {
this.displayHandlerMap.get(event.getPlayer()).displayPrev();
}
}
@EventHandler
public void onPlayerChangeTeam(PlayerChangeTeamEvent event) {
if (event.getNewTeam().isObserver()) {
this.displayHandlerMap.remove(event.getPlayer());
}
}
@Override
public void unload() {
HandlerList.unregisterAll(this);
}
public static ItemStack getEmerald(Player player) {
if (GameHandler.getGameHandler().getMatch().getModules().getModules(Tutorial.class).size() > 0) {
ItemStack emerald = new ItemStack(Material.EMERALD);
ItemMeta meta = emerald.getItemMeta();
meta.setDisplayName(ChatColor.GOLD + new LocalizedChatMessage(ChatConstant.UI_TUTORIAL_VIEW).getMessage(ChatUtils.getLocale(player)));
emerald.setItemMeta(meta);
return emerald;
}
return new ItemStack(Material.AIR);
}
}