Fix GameSummary showing an incorrect amout of shards
This commit is contained in:
parent
248c109627
commit
d267c15845
|
@ -791,6 +791,11 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
return _gameCreationManager;
|
||||
}
|
||||
|
||||
public GameRewardManager getGameRewardManager()
|
||||
{
|
||||
return _gameRewardManager;
|
||||
}
|
||||
|
||||
public GameHostManager GetGameHostManager()
|
||||
{
|
||||
return _gameHostManager;
|
||||
|
|
|
@ -2,23 +2,20 @@ package nautilus.game.arcade.game.modules.gamesummary;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import mineplex.core.common.jsonchat.HoverEvent;
|
||||
import mineplex.core.common.jsonchat.JsonMessage;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import com.google.common.util.concurrent.AtomicDouble;
|
||||
|
||||
import mineplex.core.achievement.Achievement;
|
||||
import mineplex.core.achievement.AchievementData;
|
||||
import mineplex.core.achievement.AchievementLog;
|
||||
import mineplex.core.achievement.AchievementManager;
|
||||
import mineplex.core.common.Pair;
|
||||
import mineplex.core.common.currency.GlobalCurrency;
|
||||
import mineplex.core.common.jsonchat.HoverEvent;
|
||||
import mineplex.core.common.jsonchat.JsonMessage;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
|
||||
|
@ -26,7 +23,6 @@ import nautilus.game.arcade.ArcadeFormat;
|
|||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.GemData;
|
||||
import nautilus.game.arcade.game.modules.Module;
|
||||
import nautilus.game.arcade.game.modules.gamesummary.components.AchievementSummaryComponent;
|
||||
import nautilus.game.arcade.game.modules.gamesummary.components.ExperienceSummaryComponent;
|
||||
|
@ -89,15 +85,7 @@ public class GameSummaryModule extends Module
|
|||
};
|
||||
|
||||
addComponent(new GemSummaryComponent(player -> getGame().GetGems(player), GlobalCurrency.GEM.getColor(), GlobalCurrency.GEM.getPrefix()));
|
||||
addComponent(new ShardSummaryComponent(getGame().getArcadeManager(), player ->
|
||||
{
|
||||
AtomicDouble total = new AtomicDouble();
|
||||
Map<String, GemData> gems = getGame().GetGems(player);
|
||||
|
||||
gems.values().forEach(gemData -> total.getAndAdd(gemData.Gems));
|
||||
|
||||
return Pair.create(player, (int) total.get());
|
||||
}));
|
||||
addComponent(new ShardSummaryComponent(getGame().getArcadeManager(), player -> Pair.create(player, getGame().getArcadeManager().getGameRewardManager().getBaseShardsEarned(player))));
|
||||
addComponent(new ExperienceSummaryComponent(experienceFunction));
|
||||
addComponent(new LevelUpSummaryComponent(experienceFunction));
|
||||
addComponent(new AchievementSummaryComponent(getGame().getArcadeManager()));
|
||||
|
@ -114,7 +102,7 @@ public class GameSummaryModule extends Module
|
|||
|
||||
ArcadeManager manager = getGame().getArcadeManager();
|
||||
|
||||
if (!manager.IsRewardGems() || !manager.IsRewardStats() || !manager.IsRewardAchievements())
|
||||
if (!manager.IsRewardGems() || !manager.IsRewardStats() || !manager.IsRewardAchievements() || manager.GetGame().getGameLiveTime() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ public class ShardSummaryComponent extends GameSummaryComponent<Pair<Player, Int
|
|||
}
|
||||
}
|
||||
|
||||
text.add(get(baseShards, "Earning " + baseShards + " Gems"));
|
||||
text.add(get(baseShards, "Earning " + baseShards + " Game Gems"));
|
||||
|
||||
if (extraMult > 0)
|
||||
{
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package nautilus.game.arcade.managers;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -34,6 +35,7 @@ import nautilus.game.arcade.game.GemData;
|
|||
*/
|
||||
public class GameRewardManager implements Listener
|
||||
{
|
||||
|
||||
public enum Perm implements Permission
|
||||
{
|
||||
SHARD_MULT_1,
|
||||
|
@ -48,11 +50,14 @@ public class GameRewardManager implements Listener
|
|||
boolean DoubleGem = false;
|
||||
boolean TimeReward = true;
|
||||
|
||||
private final Map<Player, Integer> _baseShardsEarned;
|
||||
|
||||
public GameRewardManager(ArcadeManager manager)
|
||||
{
|
||||
Manager = manager;
|
||||
|
||||
Manager.getPluginManager().registerEvents(this, Manager.getPlugin());
|
||||
_baseShardsEarned = new HashMap<>();
|
||||
UtilServer.RegisterEvents(this);
|
||||
|
||||
generatePermissions();
|
||||
}
|
||||
|
@ -129,7 +134,7 @@ public class GameRewardManager implements Listener
|
|||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void GameStateChange(GameStateChangeEvent event)
|
||||
public void gameDead(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Dead)
|
||||
{
|
||||
|
@ -139,6 +144,17 @@ public class GameRewardManager implements Listener
|
|||
UtilServer.getPlayersCollection().forEach(player -> GiveGems(event.GetGame(), player));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void gameDeadCleanup(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Dead)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_baseShardsEarned.clear();
|
||||
}
|
||||
|
||||
private void GiveGems(Game game, Player player)
|
||||
{
|
||||
if (!Manager.IsRewardGems())
|
||||
|
@ -147,7 +163,7 @@ public class GameRewardManager implements Listener
|
|||
}
|
||||
|
||||
double gameMult = game.GemMultiplier;
|
||||
Map<String, GemData> gems = game.GetGems(player);
|
||||
Map<String, GemData> gems = game.GetGems(player);
|
||||
|
||||
if (gems == null)
|
||||
{
|
||||
|
@ -158,22 +174,25 @@ public class GameRewardManager implements Listener
|
|||
int gemsToReward;
|
||||
|
||||
// Calculate the base gems earned in this game
|
||||
int gemsEarned = 0;
|
||||
|
||||
for (GemData data : gems.values())
|
||||
{
|
||||
int gemsEarned = 0;
|
||||
|
||||
for (GemData data : gems.values())
|
||||
gemsEarned += (int) data.Gems;
|
||||
|
||||
if (gemsEarned <= 0)
|
||||
gemsEarned = 1;
|
||||
|
||||
baseGemsEarned = (int) (gemsEarned * gameMult);
|
||||
gemsToReward = baseGemsEarned;
|
||||
gemsEarned += (int) data.Gems;
|
||||
}
|
||||
|
||||
if (gemsEarned <= 0)
|
||||
{
|
||||
gemsEarned = 1;
|
||||
}
|
||||
|
||||
baseGemsEarned = (int) (gemsEarned * gameMult);
|
||||
gemsToReward = baseGemsEarned;
|
||||
|
||||
// Award players shards equal to base gems, plus booster bonuses.
|
||||
final int baseShardsEarned = baseGemsEarned;
|
||||
int shardsToReward = baseShardsEarned;
|
||||
_baseShardsEarned.put(player, baseShardsEarned);
|
||||
|
||||
// Gem Boooster
|
||||
Booster booster = Manager.getBoosterManager().getActiveBooster();
|
||||
|
@ -265,4 +284,9 @@ public class GameRewardManager implements Listener
|
|||
Manager.GetStatsManager().incrementStat(player, game.GetName() + ".CrownsEarned", gemsToReward);
|
||||
}
|
||||
}
|
||||
|
||||
public Integer getBaseShardsEarned(Player player)
|
||||
{
|
||||
return _baseShardsEarned.get(player);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue