package org.arkham.cs.gui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.arkham.cs.CosmeticSuite;
import org.arkham.cs.cosmetics.CustomEffect;
import org.arkham.cs.effects.EffectManager;
import org.arkham.cs.handler.PurchaseHandler;
import org.arkham.cs.interfaces.Button;
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.Inventory;
import org.bukkit.inventory.ItemStack;
public class GUIPage {
private int id;
private String title;
private Inventory inv;
private Category cat;
private static HashMap<Integer, GUIPage> pages = new HashMap<>();
private static List<Button> addedButtons = new ArrayList<>();
public GUIPage(String title, Category cat) {
this.title = title;
if (!pages.isEmpty()) {
this.id = Collections.max(pages.keySet()) + 1;
} else {
this.id = 1;
}
pages.put(id, this);
title = ChatColor.translateAlternateColorCodes('&', title);
this.inv = Bukkit.createInventory(null, 54, title);
this.cat = cat;
for (int i = 36; i < inv.getSize() - 9; i++) {
ItemStack item = ItemFactory.create(Material.STAINED_GLASS_PANE, ChatColor.BLACK + " ", 1, (byte) 15, "noLore");
inv.setItem(i, item);
}
inv.setItem(53, BaseItems.next().getItem());
inv.setItem(45, BaseItems.back().getItem());
inv.setItem(46, BaseItems.back().getItem());
inv.setItem(47, BaseItems.back().getItem());
inv.setItem(48, BaseItems.back().getItem());
inv.setItem(53, BaseItems.next().getItem());
inv.setItem(52, BaseItems.next().getItem());
inv.setItem(51, BaseItems.next().getItem());
inv.setItem(50, BaseItems.next().getItem());
inv.setItem(49, ItemFactory.create(Material.NETHER_STAR, ChatColor.AQUA + ChatColor.BOLD.toString() + "Arkham" + ChatColor.YELLOW + ChatColor.BOLD.toString()+ "Network"));
}
public Category getCategory() {
return cat;
}
public GUIPage prev() {
return pages.get(id - 1);
}
public GUIPage next() {
return pages.get(id + 1);
}
public int getId() {
return id;
}
public String getTitle() {
return title;
}
public Inventory getInv() {
return inv;
}
public static HashMap<Integer, GUIPage> getPages() {
return pages;
}
public static GUIPage first() {
return pages.get(1);
}
public static GUIPage getCurrent(Player player) {
if (player.getOpenInventory() == null) {
return null;
}
String title = player.getOpenInventory().getTitle();
for (GUIPage page : pages.values()) {
if (page.getTitle().equalsIgnoreCase(title)) {
return page;
}
}
return null;
}
@SuppressWarnings("deprecation")
public static void addButton(Button button, Category cat, Player player) {
List<GUIPage> pages = CosmeticSuite.getInstance().getGuiManager().getPages(cat);
if (addedButtons.contains(button) && cat != Category.EFFECTS) {
return;
}
for (GUIPage page : pages) {
if (page.getInv().getItem(35) != null && page.getInv().getItem(35).getType() != Material.AIR) {
continue;
}
int firstEmtpy = page.getInv().firstEmpty();
if (button.getSlot() != firstEmtpy) {
button.setSlot(firstEmtpy);
}
ItemStack display = !PurchaseHandler.hasPurchased(player, button) ? button.noPermissionItem().getItem() : button.getDisplay();
if (cat == Category.EFFECTS) {
addedButtons.remove(button);
EffectManager mngr = CosmeticSuite.getInstance().getEffectManager();
CustomEffect ce = (CustomEffect) button;
if (!PurchaseHandler.hasPurchased(player, ce)) {
display = button.noPermissionItem().getItem();
}
if (mngr.getEffect(player) != null) {
if (mngr.getEffect(player).getEffect() == ce.getEffect()) {
display = ItemFactory.create(Material.STAINED_GLASS_PANE, ChatColor.GREEN + "Active Effect", 1, DyeColor.GREEN.getData(), "noLore");
}
}
ce.setItem(display);
firstEmtpy = ce.getSlot();
}
page.getInv().setItem(firstEmtpy, display);
addedButtons.add(button);
break;
}
}
}