Update UI to reflect allowing upgrades to be shown, per kit.
This commit is contained in:
parent
4728a50ca9
commit
a23c2c4e1c
|
@ -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
|
||||||
|
|
|
@ -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(" ");
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue