From 576b92a5ce9d260831075409467794f68f6a3a15 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 24 Jul 2016 22:06:14 +0100 Subject: [PATCH] Ultimates added to QuiverPayload --- .../game/arcade/game/games/quiver/Quiver.java | 139 -------- .../game/games/quiver/QuiverPayload.java | 296 +++++++++++++----- 2 files changed, 218 insertions(+), 217 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java index 2dd8d7f8e..a6ad7c3a2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java @@ -1,12 +1,9 @@ package nautilus.game.arcade.game.games.quiver; -import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -16,8 +13,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityShootBowEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.scoreboard.DisplaySlot; @@ -27,12 +22,10 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTextBottom; import mineplex.core.common.util.UtilTime; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.combat.CombatComponent; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; @@ -45,9 +38,7 @@ import nautilus.game.arcade.game.games.quiver.kits.KitHeadHunter; import nautilus.game.arcade.game.games.quiver.kits.KitNecromancer; import nautilus.game.arcade.game.games.quiver.kits.KitNewNinja; import nautilus.game.arcade.game.games.quiver.kits.KitPyromancer; -import nautilus.game.arcade.game.games.quiver.ultimates.Ultimate; import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.stats.SharpShooterStatTracker; import nautilus.game.arcade.stats.WinWithoutBowStatTracker; import nautilus.game.arcade.stats.WinWithoutDyingStatTracker; @@ -58,10 +49,8 @@ public class Quiver extends SoloGame private HashMap _combo = new HashMap(); private HashMap _bestCombo = new HashMap(); private HashMap _deathTime = new HashMap(); - private Map _ultimatePercentage = new HashMap(); private Objective _scoreObj; - private boolean _coloredMessage; public static final ItemStack SUPER_ARROW = new ItemBuilder(Material.ARROW).setTitle(C.cYellow + "Super Arrow").build(); @@ -207,17 +196,6 @@ public class Quiver extends SoloGame //Score AddKill(player); - - incrementUltimate(player, 5); - - for (CombatComponent combatComponent : event.GetLog().GetAttackers()) - { - if (combatComponent.IsPlayer()) - { - Player assitedPlayer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); - incrementUltimate(assitedPlayer, 2); - } - } } @EventHandler @@ -401,123 +379,6 @@ public class Quiver extends SoloGame AnnounceEnd(places); } } - - @EventHandler - public void onUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.SEC) - { - return; - } - - if (!IsLive()) - { - return; - } - - _coloredMessage = !_coloredMessage; - - for (Player player : GetPlayers(true)) - { - Kit kit = GetKit(player); - - if (kit == null || !IsAlive(player)) - { - continue; - } - - if (!_ultimatePercentage.containsKey(player.getUniqueId())) - { - _ultimatePercentage.put(player.getUniqueId(), 0D); - } - - double percentage = _ultimatePercentage.get(player.getUniqueId()); - - if (percentage >= 100) - { - UtilTextBottom.display((_coloredMessage ? C.cWhiteB : C.cAquaB) + "ULTIMATE READY (PRESS Q)", player); - continue; - } - - String percentageFormatted = new DecimalFormat("0.0").format(percentage); - - UtilTextBottom.displayProgress("Ultimate", percentage / 100, percentageFormatted + "%", player); - - for (Perk perk : kit.GetPerks()) - { - if (perk instanceof Ultimate) - { - Ultimate ultimate = (Ultimate) perk; - - if (ultimate.getLastUltimate().containsKey(player.getUniqueId())) - { - continue; - } - - incrementUltimate(player, ultimate.getChargeIncreasePerSecond()); - } - } - } - } - - @EventHandler - public void onPlayerDrop(PlayerDropItemEvent event) - { - Player player = event.getPlayer(); - Kit kit = GetKit(player); - - if (kit == null) - { - return; - } - - if (_ultimatePercentage.get(player.getUniqueId()) < 100) - { - return; - } - - for (Perk perk : kit.GetPerks()) - { - if (perk instanceof Ultimate) - { - Ultimate ultimate = (Ultimate) perk; - - ultimate.activate(player); - _ultimatePercentage.put(player.getUniqueId(), 0D); - } - } - } - - public void incrementUltimate(Player player, double percentage) - { - Kit kit = GetKit(player); - - for (Perk perk : kit.GetPerks()) - { - if (perk instanceof Ultimate) - { - Ultimate ultimate = (Ultimate) perk; - - if (ultimate.getLastUltimate().containsKey(player.getUniqueId())) - { - return; - } - } - } - _ultimatePercentage.put(player.getUniqueId(), _ultimatePercentage.get(player.getUniqueId()) + percentage); - } - - @EventHandler //TODO DEBUG COMMANDS - public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) - { - Player player = event.getPlayer(); - - if (event.getMessage().startsWith("/maxpower")) - { - event.setCancelled(true); - incrementUltimate(player, 100); - } - } @Override public List getWinners() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverPayload.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverPayload.java index 146c2fad9..1ed6ba6ae 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverPayload.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverPayload.java @@ -1,23 +1,31 @@ package nautilus.game.arcade.game.games.quiver; +import java.text.DecimalFormat; import java.util.HashMap; import java.util.Map; +import java.util.UUID; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Minecart; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.vehicle.VehicleDamageEvent; import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.event.vehicle.VehicleEntityCollisionEvent; import org.bukkit.material.MaterialData; import org.bukkit.util.Vector; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilTextBottom; import mineplex.core.hologram.Hologram; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.combat.CombatComponent; +import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; @@ -29,39 +37,38 @@ import nautilus.game.arcade.game.games.quiver.kits.KitHeadHunter; import nautilus.game.arcade.game.games.quiver.kits.KitNecromancer; import nautilus.game.arcade.game.games.quiver.kits.KitNewNinja; import nautilus.game.arcade.game.games.quiver.kits.KitPyromancer; +import nautilus.game.arcade.game.games.quiver.ultimates.Ultimate; import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.kit.Perk; public class QuiverPayload extends TeamGame { - + private static final double PAYLOAD_CAPTURE_RANGE = 3; - + private Minecart _minecart; private Hologram _hologram; private GameTeam _teamDirection; private Vector _lastDirection; - + + private Map _ultimatePercentage = new HashMap(); + + private boolean _coloredMessage; + public QuiverPayload(ArcadeManager manager) { - super(manager, GameType.QuiverPayload, new Kit[] { - - new KitBeserker(manager), - new KitNewNinja(manager), - new KitBarrage(manager), - new KitHeadHunter(manager), - new KitPyromancer(manager), - new KitNecromancer(manager), - - }, new String[] { - "Testing Description", - }); - + super(manager, GameType.QuiverPayload, new Kit[] { + + new KitBeserker(manager), new KitNewNinja(manager), new KitBarrage(manager), new KitHeadHunter(manager), new KitPyromancer(manager), new KitNecromancer(manager), + + }, new String[] { "Testing Description", }); + this.DeathOut = false; this.DamageTeamSelf = true; this.TeamArmorHotbar = true; this.HungerSet = 20; } - + @Override @EventHandler public void ScoreboardUpdate(UpdateEvent event) @@ -70,14 +77,14 @@ public class QuiverPayload extends TeamGame { return; } - + if (GetTeamList().isEmpty()) { return; } - + Scoreboard.Reset(); - + if (_teamDirection != null) { Scoreboard.Write(_teamDirection.getDisplayName()); @@ -86,9 +93,10 @@ public class QuiverPayload extends TeamGame { Scoreboard.Write("None"); } - + Scoreboard.Draw(); } + @EventHandler public void onGameStateChange(GameStateChangeEvent event) { @@ -97,83 +105,135 @@ public class QuiverPayload extends TeamGame Location location = WorldData.GetDataLocs("BLACK").get(0); _minecart = location.getWorld().spawn(location, Minecart.class); _hologram = new Hologram(Manager.getHologramManager(), location, "None"); - + _minecart.setDisplayBlock(new MaterialData(Material.TNT)); _hologram.setFollowEntity(_minecart); } } - + @EventHandler public void onUpdate(UpdateEvent event) { - if (event.getType() != UpdateType.FAST || _minecart == null) + if (event.getType() == UpdateType.SEC) { - return; - } - - Map mostPlayers = new HashMap<>(); - for (GameTeam gameTeam : GetTeamList()) - { - mostPlayers.put(gameTeam, 0); - } - - for (Player player : UtilPlayer.getNearby(_minecart.getLocation(), PAYLOAD_CAPTURE_RANGE)) - { - GameTeam gameTeam = GetTeam(player); - - mostPlayers.put(gameTeam, mostPlayers.get(gameTeam) + 1); - } - - int mostPlayersCount = 0; - - for (GameTeam gameTeam : mostPlayers.keySet()) - { - int playerCount = mostPlayers.get(gameTeam); - - if (playerCount > mostPlayersCount) + if (!IsLive()) { - _teamDirection = gameTeam; + return; } - else if (playerCount == mostPlayersCount) + + _coloredMessage = !_coloredMessage; + + for (Player player : GetPlayers(true)) { - _teamDirection = null; + Kit kit = GetKit(player); + + if (kit == null || !IsAlive(player)) + { + continue; + } + + if (!_ultimatePercentage.containsKey(player.getUniqueId())) + { + _ultimatePercentage.put(player.getUniqueId(), 0D); + } + + double percentage = _ultimatePercentage.get(player.getUniqueId()); + + if (percentage >= 100) + { + UtilTextBottom.display((_coloredMessage ? C.cWhiteB : C.cAquaB) + "ULTIMATE READY (PRESS Q)", player); + continue; + } + + String percentageFormatted = new DecimalFormat("0.0").format(percentage); + + UtilTextBottom.displayProgress("Ultimate", percentage / 100, percentageFormatted + "%", player); + + for (Perk perk : kit.GetPerks()) + { + if (perk instanceof Ultimate) + { + Ultimate ultimate = (Ultimate) perk; + + if (ultimate.getLastUltimate().containsKey(player.getUniqueId())) + { + continue; + } + + incrementUltimate(player, ultimate.getChargeIncreasePerSecond()); + } + } } } - - //TODO DO NOT HARDCODE - - if (_teamDirection == null) + + if (event.getType() == UpdateType.FAST || _minecart != null) { - return; - } - - if (_teamDirection.equals(GetTeamList().get(0))) - { - if (_lastDirection == null) + + Map mostPlayers = new HashMap<>(); + + for (GameTeam gameTeam : GetTeamList()) { - _minecart.setVelocity(new Vector(-0.1, 0, 0)); + mostPlayers.put(gameTeam, 0); + } + + for (Player player : UtilPlayer.getNearby(_minecart.getLocation(), PAYLOAD_CAPTURE_RANGE)) + { + GameTeam gameTeam = GetTeam(player); + + mostPlayers.put(gameTeam, mostPlayers.get(gameTeam) + 1); + } + + int mostPlayersCount = 0; + + for (GameTeam gameTeam : mostPlayers.keySet()) + { + int playerCount = mostPlayers.get(gameTeam); + + if (playerCount > mostPlayersCount) + { + _teamDirection = gameTeam; + } + else if (playerCount == mostPlayersCount) + { + _teamDirection = null; + } + } + + // TODO DO NOT HARDCODE + + if (_teamDirection == null) + { + return; + } + + if (_teamDirection.equals(GetTeamList().get(0))) + { + if (_lastDirection == null) + { + _minecart.setVelocity(new Vector(-0.1, 0, 0)); + } + else + { + _minecart.setVelocity(_minecart.getVelocity().normalize().multiply(0.1)); + } + _lastDirection = _minecart.getVelocity(); } else { - _minecart.setVelocity(_minecart.getVelocity().normalize().multiply(0.1)); + if (_lastDirection == null) + { + _minecart.setVelocity(new Vector(0.1, 0, 0)); + } + else + { + _minecart.setVelocity(_minecart.getVelocity().normalize().multiply(0.1)); + } + _lastDirection = _minecart.getVelocity(); } - _lastDirection = _minecart.getVelocity(); - } - else - { - if (_lastDirection == null) - { - _minecart.setVelocity(new Vector(0.1, 0, 0)); - } - else - { - _minecart.setVelocity(_minecart.getVelocity().normalize().multiply(0.1)); - } - _lastDirection = _minecart.getVelocity(); } } - + @EventHandler public void onVehicleEntityCollision(VehicleEntityCollisionEvent event) { @@ -183,7 +243,7 @@ public class QuiverPayload extends TeamGame event.setCancelled(true); } } - + @EventHandler public void onVehicleDamage(VehicleDamageEvent event) { @@ -192,7 +252,7 @@ public class QuiverPayload extends TeamGame event.setCancelled(true); } } - + @EventHandler public void onVehicleEnter(VehicleEnterEvent event) { @@ -202,4 +262,84 @@ public class QuiverPayload extends TeamGame } } + @EventHandler + public void onCombatDeath(CombatDeathEvent event) + { + Player player = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); + + if (player == null) + { + return; + } + + incrementUltimate(player, 5); + + for (CombatComponent combatComponent : event.GetLog().GetAttackers()) + { + if (combatComponent.IsPlayer()) + { + Player assitedPlayer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); + incrementUltimate(assitedPlayer, 2); + } + } + } + + @EventHandler + public void onPlayerDrop(PlayerDropItemEvent event) + { + Player player = event.getPlayer(); + Kit kit = GetKit(player); + + if (kit == null) + { + return; + } + + if (_ultimatePercentage.get(player.getUniqueId()) < 100) + { + return; + } + + for (Perk perk : kit.GetPerks()) + { + if (perk instanceof Ultimate) + { + Ultimate ultimate = (Ultimate) perk; + + ultimate.activate(player); + _ultimatePercentage.put(player.getUniqueId(), 0D); + } + } + } + + public void incrementUltimate(Player player, double percentage) + { + Kit kit = GetKit(player); + + for (Perk perk : kit.GetPerks()) + { + if (perk instanceof Ultimate) + { + Ultimate ultimate = (Ultimate) perk; + + if (ultimate.getLastUltimate().containsKey(player.getUniqueId())) + { + return; + } + } + } + _ultimatePercentage.put(player.getUniqueId(), _ultimatePercentage.get(player.getUniqueId()) + percentage); + } + + @EventHandler // TODO DEBUG COMMANDS + public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) + { + Player player = event.getPlayer(); + + if (event.getMessage().startsWith("/maxpower")) + { + event.setCancelled(true); + incrementUltimate(player, 100); + } + } }