mirror of
https://github.com/zDevelopers/ImageOnMap.git
synced 2024-11-25 11:35:35 +01:00
Implemented the deletion confirmation GUI with the new system.
* NEW: migrated the deletion confirmation GUI to the new system.
This commit is contained in:
parent
80089c7bf5
commit
e1f25a084d
@ -18,28 +18,175 @@
|
||||
|
||||
package fr.moribus.imageonmap.guiproko.list;
|
||||
|
||||
import fr.moribus.imageonmap.guiproko.core.ActionGui;
|
||||
import org.bukkit.Material;
|
||||
import fr.moribus.imageonmap.*;
|
||||
import fr.moribus.imageonmap.guiproko.core.*;
|
||||
import fr.moribus.imageonmap.map.*;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.inventory.*;
|
||||
import org.bukkit.inventory.meta.*;
|
||||
import org.bukkit.material.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class ConfirmDeleteMapGui extends ActionGui
|
||||
{
|
||||
static private final int BUTTONS_WIDTH = 4;
|
||||
|
||||
static private final int FIRST_SLOT_DELETE_BUTTON = 27;
|
||||
static private final int SHIFT_CANCEL_BUTTON = 5;
|
||||
|
||||
|
||||
/**
|
||||
* The map being deleted.
|
||||
*/
|
||||
private ImageMap mapToDelete;
|
||||
|
||||
/**
|
||||
* The previously-viewed page of the list GUI.
|
||||
* Used to be able to bring the user back to the same page.
|
||||
*/
|
||||
private int currentPage;
|
||||
|
||||
/**
|
||||
* The messages randomly displayed in the lore of the “delete” buttons.
|
||||
*/
|
||||
private String[] deleteMessages;
|
||||
|
||||
/**
|
||||
* The messages randomly displayed in the lore of the “cancel” buttons.
|
||||
*/
|
||||
private String[] cancelMessages;
|
||||
|
||||
/**
|
||||
* A source of randomness.
|
||||
*
|
||||
* Yes, this javadoc comment is REALLY useful. Trust me.
|
||||
*/
|
||||
private Random random = new Random();
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param mapToDelete The map being deleted.
|
||||
* @param currentPage The previously-viewed page of the list GUI.
|
||||
*/
|
||||
public ConfirmDeleteMapGui(ImageMap mapToDelete, int currentPage)
|
||||
{
|
||||
this.mapToDelete = mapToDelete;
|
||||
this.currentPage = currentPage;
|
||||
|
||||
deleteMessages = new String[]{
|
||||
"Please", "I'm still alive", "Don't do that", "I'm still loving you", "I want to live",
|
||||
"Please please", "Please please please", "What are you doing?!", "Nooooo!",
|
||||
"Click and I'll be dead", "Why?", "Please don't do that", "Think about my family",
|
||||
"Click, I don't like you anymore.", "I don't hate you.", "Click, I'm ready.",
|
||||
"I'm a green button.", "I'm different.", "Thanks anyway.", "Excuse me.", "Get mad.",
|
||||
"Sorry!", "My fault!", "I don't blame you.", "No hard feelings.",
|
||||
"But I need to protect the humans!", "Noooo!", "I'm scared!", "What are you doing?",
|
||||
"It burns.", "This is not good.", "Can't breathe.", "Thanks anyway.", "These things happen.",
|
||||
"That was nobody's fault.", "I probably deserved it.", "I blame myself."
|
||||
};
|
||||
|
||||
cancelMessages = new String[] {
|
||||
"Yay!", "Still aliiiive!", "Click click click", "Yes do that", "I'm a red button.",
|
||||
"Please click here", "The other button is ugly", "Save me", "This is the good choice",
|
||||
"Click, I want to live!", "I'll be dead another day anyway", "Are you sure?",
|
||||
"So you're still loving me?", "Please save me", "Take me with you.",
|
||||
"Excuse me.", "Don't make lemonade.", "Sleep mode activated.", "Hybernating.",
|
||||
"Your business is appreciated.", "Hey! It's me! Don't shoot!", "Wheee!", "Hurray!",
|
||||
"You have excellent aim!", "Please please please"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onUpdate()
|
||||
{
|
||||
setTitle("Are you sure ?");
|
||||
setSize(2);
|
||||
setTitle(ChatColor.BLACK + "Are you sure ?");
|
||||
setSize(6 * 9);
|
||||
|
||||
action("toto", 1, Material.DIAMOND, "Toto");
|
||||
action("tata", 2, Material.EMERALD, "Tata");
|
||||
/* ** Item representation of the image being deleted ** */
|
||||
|
||||
ItemStack beingDeleted = new ItemStack(Material.EMPTY_MAP);
|
||||
ItemMeta meta = beingDeleted.getItemMeta();
|
||||
|
||||
meta.setDisplayName(ChatColor.RED + "You're about to destroy this map...");
|
||||
meta.setLore(Arrays.asList(
|
||||
ChatColor.RED + "..." + ChatColor.ITALIC + "forever" + ChatColor.RED + ".",
|
||||
"",
|
||||
ChatColor.GRAY + "Name: " + ChatColor.WHITE + mapToDelete.getName(),
|
||||
ChatColor.GRAY + "Map ID: " + ChatColor.WHITE + mapToDelete.getId(),
|
||||
ChatColor.GRAY + "Maps inside: " + ChatColor.WHITE + mapToDelete.getMapsIDs().length
|
||||
));
|
||||
|
||||
beingDeleted.setItemMeta(meta);
|
||||
|
||||
action("", 13, beingDeleted);
|
||||
|
||||
|
||||
/* ** Buttons ** */
|
||||
|
||||
int slot = FIRST_SLOT_DELETE_BUTTON;
|
||||
for(; slot < getSize() - (9 - BUTTONS_WIDTH); slot++)
|
||||
{
|
||||
action("delete", slot, createDeleteSubButton());
|
||||
action("cancel", slot + SHIFT_CANCEL_BUTTON, createCancelSubButton());
|
||||
|
||||
if((slot + 1) % 9 == (9 - BUTTONS_WIDTH - 1))
|
||||
slot += 5;
|
||||
}
|
||||
}
|
||||
|
||||
protected void action_toto()
|
||||
private ItemStack createDeleteSubButton()
|
||||
{
|
||||
getPlayer().sendMessage("toto");
|
||||
// Orange? Nooo. In the real world this is red. True story.
|
||||
return createSubButton(DyeColor.ORANGE, ChatColor.RED + "Delete the map", deleteMessages);
|
||||
}
|
||||
|
||||
protected void action_tata()
|
||||
private ItemStack createCancelSubButton()
|
||||
{
|
||||
getPlayer().sendMessage("tata");
|
||||
// YES. Purple = lime. BECAUSE. Just accept it.
|
||||
return createSubButton(DyeColor.PURPLE, ChatColor.GREEN + "Cancel", cancelMessages);
|
||||
}
|
||||
|
||||
private ItemStack createSubButton(DyeColor color, String title, String[] messages)
|
||||
{
|
||||
Dye pane = new Dye(Material.STAINED_GLASS_PANE);
|
||||
pane.setColor(color);
|
||||
|
||||
ItemStack subButton = pane.toItemStack(1);
|
||||
ItemMeta meta = subButton.getItemMeta();
|
||||
|
||||
meta.setDisplayName(title);
|
||||
meta.setLore(Arrays.asList(
|
||||
"",
|
||||
ChatColor.GRAY + messages[random.nextInt(messages.length)]
|
||||
));
|
||||
|
||||
subButton.setItemMeta(meta);
|
||||
return subButton;
|
||||
}
|
||||
|
||||
protected void action_cancel()
|
||||
{
|
||||
Gui.open(getPlayer(), new MapDetailGui(null /*mapToDelete, currentPage */));
|
||||
}
|
||||
|
||||
protected void action_delete()
|
||||
{
|
||||
MapManager.clear(getPlayer().getInventory(), mapToDelete);
|
||||
|
||||
try
|
||||
{
|
||||
MapManager.deleteMap(mapToDelete);
|
||||
getPlayer().sendMessage(ChatColor.GRAY + "Map successfully deleted.");
|
||||
}
|
||||
catch (MapManagerException ex)
|
||||
{
|
||||
PluginLogger.warning("A non-existent map was requested to be deleted", ex);
|
||||
getPlayer().sendMessage(ChatColor.RED + "This map does not exists.");
|
||||
}
|
||||
|
||||
Gui.open(getPlayer(), new MapListGui(/* currentPage */));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user