From a58335d90627ab78294a0399b18bcc12bfc9654c Mon Sep 17 00:00:00 2001 From: Chiss Date: Mon, 22 Sep 2014 17:46:36 +1000 Subject: [PATCH] Added GameStatManager.java --- .../mineplex/core/cosmetic/ui/page/Menu.java | 25 +++--- .../game/arcade/managers/GameStatManager.java | 77 +++++++++++++++++++ 2 files changed, 92 insertions(+), 10 deletions(-) create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameStatManager.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 7d4af6353..79e0c4722 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -67,27 +67,31 @@ public class Menu extends ShopPageBase ArrayList lore = new ArrayList(); - - lore.add(ChatColor.RESET + "" + treasureKeyCount + C.cGold + " Treasure Keys"); + lore.add(ChatColor.RESET + "You can find all kinds of rare"); + lore.add(ChatColor.RESET + "and exciting loot inside!"); + lore.add(" "); + lore.add(ChatColor.RESET + C.cYellow + "Treasure Chests: " + ChatColor.RESET + treasureChestCount); + lore.add(ChatColor.RESET + C.cYellow + "Treasure Keys: " + ChatColor.RESET + treasureKeyCount); lore.add(" "); if (treasureChestCount > 0 && treasureKeyCount > 0) { lore.add(ChatColor.RESET + C.cGreen + "Left-Click to open Treasure Chest"); - lore.add(ChatColor.RESET + "Uses 1 Treasure Key"); - lore.add(ChatColor.RESET + "Uses 1 Treasure Chest"); + lore.add(ChatColor.RESET + " Uses 1 Treasure Chest"); + lore.add(ChatColor.RESET + " Uses 1 Treasure Key"); } else if (treasureChestCount > 0) { lore.add(ChatColor.RESET + C.cRed + "Left-Click to open Treasure Chest"); - lore.add(ChatColor.RESET + "This requires 1 Treasure Key"); + lore.add(ChatColor.RESET + " This requires 1 Treasure Key"); + lore.add(ChatColor.RESET + " You do not have any Treasure Keys"); } else { lore.add(ChatColor.RESET + C.cRed + "Left-Click to open Treasure Chest"); - lore.add(ChatColor.RESET + "This requires 1 Treasure Chest"); - lore.add(ChatColor.RESET + "Find Treasure Chests by playing games"); + lore.add(ChatColor.RESET + " This requires 1 Treasure Chest"); + lore.add(ChatColor.RESET + " Find Treasure Chests by playing games"); } @@ -95,15 +99,16 @@ public class Menu extends ShopPageBase if (canPurchaseKey) { lore.add(ChatColor.RESET + C.cGreen + "Right-Click to purchase Treasure Key"); - lore.add(ChatColor.RESET + "Costs 1000 Coins"); + lore.add(ChatColor.RESET + " Costs 1000 Coins"); } else { lore.add(ChatColor.RESET + C.cRed + "Right-Click to purchase Treasure Key"); - lore.add(ChatColor.RESET + "Costs 1000 Coins"); + lore.add(ChatColor.RESET + " Costs 1000 Coins"); + lore.add(ChatColor.RESET + " You cannot afford a Treasure Key"); } - AddButton(4, new ShopItem(Material.CHEST, ChatColor.RESET + "" + treasureChestCount + C.cGold + " Treasure Chests", lore.toArray(new String[0]), 1, false), new TreasureButton(this, treasureChestCount > 0, treasureKeyCount > 0, canPurchaseKey)); + AddButton(4, new ShopItem(Material.CHEST, ChatColor.RESET + C.cGreen + C.Bold + "Treasure Chest", lore.toArray(new String[0]), 1, false), new TreasureButton(this, treasureChestCount > 0, treasureKeyCount > 0, canPurchaseKey)); final GemBooster gemBoosterItem = new GemBooster(Shop.getBoosterEnabled(), Plugin.getInventoryManager().Get(Player).getItemCount("Gem Booster")); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameStatManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameStatManager.java new file mode 100644 index 000000000..a57c39651 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameStatManager.java @@ -0,0 +1,77 @@ +package nautilus.game.arcade.managers; + +import mineplex.core.common.util.C; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.game.Game.GameState; +import nautilus.game.arcade.stats.StatTracker; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; + +public class GameStatManager implements Listener +{ + ArcadeManager Manager; + + public GameStatManager(ArcadeManager manager) + { + Manager = manager; + + Manager.GetPluginManager().registerEvents(this, Manager.GetPlugin()); + } + + @EventHandler + public void StatEnableDisable(GameStateChangeEvent event) + { + if (!Manager.IsRewardStats()) + return; + + if (event.GetState() != GameState.Live) + return; + + int requirement = (int)((double)event.GetGame().Manager.GetPlayerFull() * 0.75d); + + event.GetGame().CanAddStats = (double)event.GetGame().GetPlayers(true).size() >= requirement; + + if (!event.GetGame().CanAddStats) + event.GetGame().Announce(C.Bold + "Stats/Achievements Disabled. Requires " + requirement + " Players."); + } + + @EventHandler + public void StatRegister(GameStateChangeEvent event) + { + if (!Manager.IsRewardStats()) + return; + + if (event.GetState() != GameState.Dead) + return; + + for (Player player : event.GetGame().GetStats().keySet()) + { + for (String stat : event.GetGame().GetStats().get(player).keySet()) + { + Manager.GetStatsManager().incrementStat(player, stat, event.GetGame().GetStats().get(player).get(stat)); + } + } + } + + @EventHandler + public void StatGameRecord(GameStateChangeEvent event) + { + if (event.GetState() == GameState.End) + { + for (StatTracker tracker : event.GetGame().getStatTrackers()) + HandlerList.unregisterAll(tracker); + + if (event.GetGame().CanAddStats) + { + Manager.saveBasicStats(event.GetGame()); + + if (Manager.IsTournamentServer()) + Manager.saveLeaderboardStats(event.GetGame()); + } + } + } +}