From 71a6d82d6160e81d4a2d28207c57a4c5874d3b17 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 26 Mar 2023 21:17:38 +0800 Subject: [PATCH] update ManaShards event --- .../java/forge/screens/match/CMatchUI.java | 5 +++ .../forge/screens/match/MatchController.java | 7 +++++ .../screens/match/views/VPlayerPanel.java | 7 +++++ .../gamemodes/net/server/NetGuiGame.java | 5 +++ .../gui/control/FControlGameEventHandler.java | 9 +++++- .../java/forge/gui/interfaces/IGuiGame.java | 1 + .../java/forge/sound/EventVisualizer.java | 31 ++----------------- 7 files changed, 36 insertions(+), 29 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java index 0b34f0a2995..1f10cbba70e 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java @@ -552,6 +552,11 @@ public final class CMatchUI } } + @Override + public void updateShards(Iterable shardsUpdate) { + //mobile adventure only.. + } + @Override public void updateCards(final Iterable cards) { for (final CardView c : cards) { diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index c7520ccfbfb..1352dd98dfe 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -470,6 +470,13 @@ public class MatchController extends AbstractGuiGame { } } + @Override + public void updateShards(final Iterable livesUpdate) { + for (final PlayerView p : livesUpdate) { + view.getPlayerPanel(p).updateShards(); + } + } + @Override public void updateZones(final Iterable zonesToUpdate) { view.updateZones(zonesToUpdate); diff --git a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java index 63378ec9596..6880a13d26a 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java @@ -260,6 +260,10 @@ public class VPlayerPanel extends FContainer { lblLife.update(); } + public void updateShards() { + lblLife.updateShards(); + } + public void updateManaPool() { tabManaPool.update(); } @@ -506,6 +510,9 @@ public class VPlayerPanel extends FContainer { Gdx.input.vibrate(Math.min(vibrateDuration, 2000)); } } + private void updateShards() { + manaShards = player.getNumManaShards(); + } @Override public boolean tap(float x, float y, int count) { diff --git a/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java b/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java index 90f33247465..3f510001ccc 100644 --- a/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java +++ b/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java @@ -179,6 +179,11 @@ public class NetGuiGame extends AbstractGuiGame { send(ProtocolMethod.updateLives, livesUpdate); } + @Override + public void updateShards(Iterable shardsUpdate) { + //mobile adventure local game only.. + } + @Override public void setPanelSelection(final CardView hostCard) { updateGameView(); diff --git a/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java b/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java index 341c1a94119..83610d04631 100644 --- a/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java +++ b/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java @@ -32,6 +32,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { private final Set cardsUpdate = new HashSet<>(); private final Set cardsRefreshDetails = new HashSet<>(); private final Set livesUpdate = new HashSet<>(); + private final Set shardsUpdate = new HashSet<>(); private final Set manaPoolUpdate = new HashSet<>(); private final PlayerZoneUpdates zonesUpdate = new PlayerZoneUpdates(); private final Map playersWithValidTargets = Maps.newHashMap(); @@ -69,6 +70,12 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { livesUpdate.clear(); } } + synchronized (shardsUpdate) { + if (!shardsUpdate.isEmpty()) { + matchController.updateShards(shardsUpdate); + shardsUpdate.clear(); + } + } synchronized (manaPoolUpdate) { if (!manaPoolUpdate.isEmpty()) { matchController.updateManaPool(manaPoolUpdate); @@ -485,7 +492,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { @Override public Void visit(final GameEventPlayerShardsChanged event) { - return processPlayer(event.player, livesUpdate); + return processPlayer(event.player, shardsUpdate); } @Override diff --git a/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java b/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java index 7df19e6d54d..68898088528 100644 --- a/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java +++ b/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java @@ -103,6 +103,7 @@ public interface IGuiGame { void updateManaPool(Iterable manaPoolUpdate); void updateLives(Iterable livesUpdate); + void updateShards(Iterable shardsUpdate); void setPanelSelection(CardView hostCard); diff --git a/forge-gui/src/main/java/forge/sound/EventVisualizer.java b/forge-gui/src/main/java/forge/sound/EventVisualizer.java index 709ca1dda58..3d83b1d1fb8 100644 --- a/forge-gui/src/main/java/forge/sound/EventVisualizer.java +++ b/forge-gui/src/main/java/forge/sound/EventVisualizer.java @@ -5,34 +5,7 @@ import java.util.Collection; import forge.LobbyPlayer; import forge.game.card.Card; -import forge.game.event.EventValueChangeType; -import forge.game.event.GameEvent; -import forge.game.event.GameEventBlockersDeclared; -import forge.game.event.GameEventCardAttachment; -import forge.game.event.GameEventCardChangeZone; -import forge.game.event.GameEventCardCounters; -import forge.game.event.GameEventCardDamaged; -import forge.game.event.GameEventCardDestroyed; -import forge.game.event.GameEventCardPhased; -import forge.game.event.GameEventCardRegenerated; -import forge.game.event.GameEventCardSacrificed; -import forge.game.event.GameEventCardStatsChanged; -import forge.game.event.GameEventCardTapped; -import forge.game.event.GameEventDayTimeChanged; -import forge.game.event.GameEventFlipCoin; -import forge.game.event.GameEventGameOutcome; -import forge.game.event.GameEventGameStarted; -import forge.game.event.GameEventLandPlayed; -import forge.game.event.GameEventManaBurn; -import forge.game.event.GameEventPlayerLivesChanged; -import forge.game.event.GameEventPlayerPoisoned; -import forge.game.event.GameEventRollDie; -import forge.game.event.GameEventShuffle; -import forge.game.event.GameEventSpellResolved; -import forge.game.event.GameEventTokenCreated; -import forge.game.event.GameEventTurnEnded; -import forge.game.event.GameEventZone; -import forge.game.event.IGameEventVisitor; +import forge.game.event.*; import forge.game.spellability.AbilityManaPart; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; @@ -99,6 +72,8 @@ public class EventVisualizer extends IGameEventVisitor.Base imp @Override public SoundEffectType visit(final GameEventPlayerLivesChanged event) { return event.newLives < event.oldLives ? SoundEffectType.LifeLoss : SoundEffectType.LifeGain; } @Override + public SoundEffectType visit(final GameEventPlayerShardsChanged event) { return SoundEffectType.TakeShard; } + @Override public SoundEffectType visit(final GameEventManaBurn event) { return SoundEffectType.ManaBurn; } @Override public SoundEffectType visit(final GameEventPlayerPoisoned event) { return SoundEffectType.Poison; }