Merge branch 'dicesfx' into 'master'

Sound effect for dice rolling!

See merge request core-developers/forge!5176
This commit is contained in:
Michael Kamensky
2021-08-04 05:08:28 +00:00
7 changed files with 21 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import forge.game.event.GameEventRollDie;
import org.apache.commons.lang3.StringUtils;
import forge.game.ability.AbilityKey;
@@ -75,6 +76,8 @@ public class RollDiceEffect extends SpellAbilityEffect {
for (int i = 0; i < amount; i++) {
int roll = MyRandom.getRandom().nextInt(sides) + 1;
// Play the die roll sound
player.getGame().fireEvent(new GameEventRollDie());
rolls.add(roll);
total += roll;
}

View File

@@ -3,6 +3,7 @@ package forge.game.ability.effects;
import forge.game.Game;
import forge.game.PlanarDice;
import forge.game.ability.SpellAbilityEffect;
import forge.game.event.GameEventRollDie;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.util.Localizer;
@@ -26,6 +27,8 @@ public class RollPlanarDiceEffect extends SpellAbilityEffect {
game.getPhaseHandler().incPlanarDiceRolledthisTurn();
}
PlanarDice result = PlanarDice.roll(activator, null);
// Play the die roll sound
activator.getGame().fireEvent(new GameEventRollDie());
String message = Localizer.getInstance().getMessage("lblPlayerRolledResult", activator.getName(), result.toString());
game.getAction().notifyOfValue(sa, activator, message, null);

View File

@@ -0,0 +1,9 @@
package forge.game.event;
public class GameEventRollDie extends GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);
}
}

View File

@@ -38,6 +38,7 @@ public interface IGameEventVisitor<T> {
T visit(GameEventPlayerPoisoned event);
T visit(GameEventPlayerPriority event);
T visit(GameEventPlayerStatsChanged event);
T visit(GameEventRollDie event);
T visit(GameEventTokenStateUpdate event);
T visit(GameEventScry event);
T visit(GameEventShuffle event);
@@ -88,6 +89,7 @@ public interface IGameEventVisitor<T> {
public T visit(GameEventPlayerPoisoned event) { return null; }
public T visit(GameEventPlayerPriority event) { return null; }
public T visit(GameEventPlayerStatsChanged event) { return null; }
public T visit(GameEventRollDie event) { return null; }
public T visit(GameEventTokenStateUpdate event) { return null; }
public T visit(GameEventScry event) { return null; }
public T visit(GameEventShuffle event) { return null; }

Binary file not shown.

View File

@@ -23,6 +23,7 @@ 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;
@@ -85,6 +86,8 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(final GameEventFlipCoin event) { return SoundEffectType.FlipCoin; }
@Override
public SoundEffectType visit(final GameEventRollDie event) { return SoundEffectType.RollDie; }
@Override
public SoundEffectType visit(final GameEventPlayerLivesChanged event) { return event.newLives < event.oldLives ? SoundEffectType.LifeLoss : SoundEffectType.LifeGain; }
@Override
public SoundEffectType visit(final GameEventManaBurn event) { return SoundEffectType.ManaBurn; }

View File

@@ -79,6 +79,7 @@ public enum SoundEffectType {
RedLand("red_land.mp3", false),
Regen("regeneration.mp3", false),
RemoveCounter("remove_counter.mp3", true),
RollDie("roll_die.mp3", false),
Sacrifice("sacrifice.mp3", true),
ScriptedEffect("", false), // Plays the effect defined by SVar:SoundEffect
Shuffle("shuffle.mp3", false),