Update UI to reflect allowing upgrades to be shown, per kit.

This commit is contained in:
TadahTech 2016-07-24 16:05:19 -05:00
parent 4728a50ca9
commit a23c2c4e1c
5 changed files with 80 additions and 19 deletions

View File

@ -1,18 +1,17 @@
package mineplex.core.progression; package mineplex.core.progression;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.progression.data.KitAbilityDetail; import mineplex.core.progression.data.KitAbilityDetail;
import mineplex.core.progression.math.Calculations; import mineplex.core.progression.math.Calculations;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/** /**
* The API class all kits with the new system must use * The API class all kits with the new system must use
@ -55,7 +54,17 @@ public interface ProgressiveKit
* *
* @return The map of upgrades and their details * @return The map of upgrades and their details
*/ */
Map<Integer, List<KitAbilityDetail>> getAbilityDetails(); Map<Integer, List<KitAbilityDetail>> getAbilityDetails();
/**
* Determines whether or not the kit UI is displayed with "Coming Soon" or actual upgrade details.
*
* @return <code>true</code> if the menu should populate from {@code getAbilityDetails}
*/
default boolean showUpgrades()
{
return false;
}
/** /**
* Retrieve the current level of this kit * Retrieve the current level of this kit

View File

@ -1,6 +1,7 @@
package mineplex.core.progression.gui.buttons; package mineplex.core.progression.gui.buttons;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.progression.data.KitAbilityDetail; import mineplex.core.progression.data.KitAbilityDetail;
import mineplex.core.progression.gui.buttons.misc.IconButton; import mineplex.core.progression.gui.buttons.misc.IconButton;
@ -23,7 +24,7 @@ public class KitAbilityButton extends IconButton
ItemBuilder builder = new ItemBuilder(detail.getIcon()); ItemBuilder builder = new ItemBuilder(detail.getIcon());
builder.setTitle(detail.getDisplayName()); builder.setTitle(C.cYellow + detail.getDisplayName());
List<String> lore = Lists.newArrayList(" "); List<String> lore = Lists.newArrayList(" ");

View File

@ -50,13 +50,18 @@ public class KitUpgradeMenuButton extends KitButton
//This ONLY flashes if their next upgrade level isn't their same one. //This ONLY flashes if their next upgrade level isn't their same one.
_flash = Calculations.isUpgradeLevelEligible(level) && (nextUpgradeLevel > upgradeLevel); _flash = Calculations.isUpgradeLevelEligible(level) && (nextUpgradeLevel > upgradeLevel);
ChatColor color = Calculations.getColor(level, nextUpgradeLevelPlayer);
if(kit.showUpgrades())
{
ItemBuilder builder = lore(new ItemBuilder(Material.ENCHANTMENT_TABLE), upgradeLevel, color, diff);
_item = builder.build();
}
if (_flash) if (_flash)
{ {
flash(); flash();
} }
ChatColor color = Calculations.getColor(level, nextUpgradeLevelPlayer);
} }
@Override @Override
@ -73,7 +78,7 @@ public class KitUpgradeMenuButton extends KitButton
private void flash() private void flash()
{ {
this._task = new BukkitRunnable() _task = new BukkitRunnable()
{ {
private ItemStack itemClone = ITEM_STACK.clone(); private ItemStack itemClone = ITEM_STACK.clone();
@ -109,11 +114,11 @@ public class KitUpgradeMenuButton extends KitButton
@Override @Override
public void onClick(Player player) public void onClick(Player player)
{ {
this._flash = false; _flash = false;
if (_task != null) if (_task != null)
{ {
this._task.cancel(); _task.cancel();
} }
KitMenu menu = new KitInformationTrackerMenu(getKit()); KitMenu menu = new KitInformationTrackerMenu(getKit());

View File

@ -1,11 +1,19 @@
package mineplex.core.progression.gui.guis; package mineplex.core.progression.gui.guis;
import mineplex.core.progression.ProgressiveKit; import mineplex.core.progression.ProgressiveKit;
import mineplex.core.progression.data.KitAbilityDetail;
import mineplex.core.progression.gui.Button; import mineplex.core.progression.gui.Button;
import mineplex.core.progression.gui.buttons.*; import mineplex.core.progression.gui.buttons.KitAbilityButton;
import mineplex.core.progression.gui.buttons.KitIconButton;
import mineplex.core.progression.gui.buttons.KitPermanentDefaultButton;
import mineplex.core.progression.gui.buttons.KitSelectButton;
import mineplex.core.progression.gui.buttons.KitUpgradeMenuButton;
import mineplex.core.progression.gui.buttons.KitXPButton;
import mineplex.core.progression.gui.buttons.misc.IconButton; import mineplex.core.progression.gui.buttons.misc.IconButton;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.List;
/** /**
* This is the main menu a player sees when we selects an NPC Kit * This is the main menu a player sees when we selects an NPC Kit
* Displays the most important information about this kit * Displays the most important information about this kit
@ -39,7 +47,7 @@ public class KitDisplayMenu extends KitMenu
setUpIcon(buttons, player); setUpIcon(buttons, player);
setUpDetails(buttons); setUpDetails(buttons, player);
setUpNextMenuButtons(buttons, player); setUpNextMenuButtons(buttons, player);
@ -74,8 +82,19 @@ public class KitDisplayMenu extends KitMenu
* *
* @param buttons The array of buttons we're modifying * @param buttons The array of buttons we're modifying
*/ */
private void setUpDetails(Button[] buttons) private void setUpDetails(Button[] buttons, Player player)
{ {
if(getKit().showUpgrades())
{
List<KitAbilityDetail> details = getKit().getAbilityDetails().get(getKit().getUpgradeLevel(player.getUniqueId()));
int index = 0;
for(int i : UPGRADE_SLOTS)
{
buttons[i] = new KitAbilityButton(details.get(index++));
}
return;
}
for (int i : UPGRADE_SLOTS) for (int i : UPGRADE_SLOTS)
{ {
buttons[i] = new IconButton(COMING_SOON); buttons[i] = new IconButton(COMING_SOON);

View File

@ -4,7 +4,9 @@ import com.google.common.collect.Lists;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.progression.ProgressiveKit; import mineplex.core.progression.ProgressiveKit;
import mineplex.core.progression.data.KitAbilityDetail;
import mineplex.core.progression.gui.Button; import mineplex.core.progression.gui.Button;
import mineplex.core.progression.gui.buttons.KitUpgradeButton;
import mineplex.core.progression.gui.buttons.misc.BackButton; import mineplex.core.progression.gui.buttons.misc.BackButton;
import mineplex.core.progression.gui.buttons.misc.IconButton; import mineplex.core.progression.gui.buttons.misc.IconButton;
import mineplex.core.progression.math.Calculations; import mineplex.core.progression.math.Calculations;
@ -15,6 +17,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
/** /**
@ -144,6 +147,30 @@ public class KitInformationTrackerMenu extends KitMenu
*/ */
private void setUpUpgrade(Button[] buttons, Player player) private void setUpUpgrade(Button[] buttons, Player player)
{ {
if(getKit().showUpgrades())
{
int upgradeLevel = getKit().getUpgradeLevel(player.getUniqueId());
Map<Integer, List<KitAbilityDetail>> details = getKit().getAbilityDetails();
List<KitAbilityDetail> list = details.get(upgradeLevel);
if(list == null)
{
throw new IllegalArgumentException("No upgrades for player upgrade level " + upgradeLevel);
}
int index = 0;
for(int i : UPGRADE_SLOTS)
{
KitAbilityDetail detail = list.get(index++);
ItemBuilder itemStack = new ItemBuilder(detail.getIcon()).setTitle(C.cYellow + detail.getDisplayName()).setLore(getKit().getDescription());
if(getKit().canPurchaseUpgrade(player.getUniqueId(), upgradeLevel) && !getKit().ownsUpgrade(player.getUniqueId(), upgradeLevel))
{
itemStack.setGlow(true);
}
KitUpgradeButton button = new KitUpgradeButton(getKit(), itemStack.build(), upgradeLevel, detail.getDisplayName());
buttons[i] = button;
}
return;
}
for (int i : UPGRADE_SLOTS) for (int i : UPGRADE_SLOTS)
{ {
buttons[i] = new IconButton(COMING_SOON); buttons[i] = new IconButton(COMING_SOON);