mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Merge branch 'dicesfx' into 'master'
Sound effect for dice rolling! See merge request core-developers/forge!5176
This commit is contained in:
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import forge.game.event.GameEventRollDie;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import forge.game.ability.AbilityKey;
|
import forge.game.ability.AbilityKey;
|
||||||
@@ -75,6 +76,8 @@ public class RollDiceEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
for (int i = 0; i < amount; i++) {
|
for (int i = 0; i < amount; i++) {
|
||||||
int roll = MyRandom.getRandom().nextInt(sides) + 1;
|
int roll = MyRandom.getRandom().nextInt(sides) + 1;
|
||||||
|
// Play the die roll sound
|
||||||
|
player.getGame().fireEvent(new GameEventRollDie());
|
||||||
rolls.add(roll);
|
rolls.add(roll);
|
||||||
total += roll;
|
total += roll;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package forge.game.ability.effects;
|
|||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.PlanarDice;
|
import forge.game.PlanarDice;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
|
import forge.game.event.GameEventRollDie;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
@@ -26,6 +27,8 @@ public class RollPlanarDiceEffect extends SpellAbilityEffect {
|
|||||||
game.getPhaseHandler().incPlanarDiceRolledthisTurn();
|
game.getPhaseHandler().incPlanarDiceRolledthisTurn();
|
||||||
}
|
}
|
||||||
PlanarDice result = PlanarDice.roll(activator, null);
|
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());
|
String message = Localizer.getInstance().getMessage("lblPlayerRolledResult", activator.getName(), result.toString());
|
||||||
game.getAction().notifyOfValue(sa, activator, message, null);
|
game.getAction().notifyOfValue(sa, activator, message, null);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,6 +38,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
T visit(GameEventPlayerPoisoned event);
|
T visit(GameEventPlayerPoisoned event);
|
||||||
T visit(GameEventPlayerPriority event);
|
T visit(GameEventPlayerPriority event);
|
||||||
T visit(GameEventPlayerStatsChanged event);
|
T visit(GameEventPlayerStatsChanged event);
|
||||||
|
T visit(GameEventRollDie event);
|
||||||
T visit(GameEventTokenStateUpdate event);
|
T visit(GameEventTokenStateUpdate event);
|
||||||
T visit(GameEventScry event);
|
T visit(GameEventScry event);
|
||||||
T visit(GameEventShuffle event);
|
T visit(GameEventShuffle event);
|
||||||
@@ -88,6 +89,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventPlayerPoisoned event) { return null; }
|
public T visit(GameEventPlayerPoisoned event) { return null; }
|
||||||
public T visit(GameEventPlayerPriority event) { return null; }
|
public T visit(GameEventPlayerPriority event) { return null; }
|
||||||
public T visit(GameEventPlayerStatsChanged 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(GameEventTokenStateUpdate event) { return null; }
|
||||||
public T visit(GameEventScry event) { return null; }
|
public T visit(GameEventScry event) { return null; }
|
||||||
public T visit(GameEventShuffle event) { return null; }
|
public T visit(GameEventShuffle event) { return null; }
|
||||||
|
|||||||
BIN
forge-gui/res/sound/roll_die.mp3
Normal file
BIN
forge-gui/res/sound/roll_die.mp3
Normal file
Binary file not shown.
@@ -23,6 +23,7 @@ import forge.game.event.GameEventLandPlayed;
|
|||||||
import forge.game.event.GameEventManaBurn;
|
import forge.game.event.GameEventManaBurn;
|
||||||
import forge.game.event.GameEventPlayerLivesChanged;
|
import forge.game.event.GameEventPlayerLivesChanged;
|
||||||
import forge.game.event.GameEventPlayerPoisoned;
|
import forge.game.event.GameEventPlayerPoisoned;
|
||||||
|
import forge.game.event.GameEventRollDie;
|
||||||
import forge.game.event.GameEventShuffle;
|
import forge.game.event.GameEventShuffle;
|
||||||
import forge.game.event.GameEventSpellResolved;
|
import forge.game.event.GameEventSpellResolved;
|
||||||
import forge.game.event.GameEventTokenCreated;
|
import forge.game.event.GameEventTokenCreated;
|
||||||
@@ -85,6 +86,8 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
|
|||||||
@Override
|
@Override
|
||||||
public SoundEffectType visit(final GameEventFlipCoin event) { return SoundEffectType.FlipCoin; }
|
public SoundEffectType visit(final GameEventFlipCoin event) { return SoundEffectType.FlipCoin; }
|
||||||
@Override
|
@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; }
|
public SoundEffectType visit(final GameEventPlayerLivesChanged event) { return event.newLives < event.oldLives ? SoundEffectType.LifeLoss : SoundEffectType.LifeGain; }
|
||||||
@Override
|
@Override
|
||||||
public SoundEffectType visit(final GameEventManaBurn event) { return SoundEffectType.ManaBurn; }
|
public SoundEffectType visit(final GameEventManaBurn event) { return SoundEffectType.ManaBurn; }
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ public enum SoundEffectType {
|
|||||||
RedLand("red_land.mp3", false),
|
RedLand("red_land.mp3", false),
|
||||||
Regen("regeneration.mp3", false),
|
Regen("regeneration.mp3", false),
|
||||||
RemoveCounter("remove_counter.mp3", true),
|
RemoveCounter("remove_counter.mp3", true),
|
||||||
|
RollDie("roll_die.mp3", false),
|
||||||
Sacrifice("sacrifice.mp3", true),
|
Sacrifice("sacrifice.mp3", true),
|
||||||
ScriptedEffect("", false), // Plays the effect defined by SVar:SoundEffect
|
ScriptedEffect("", false), // Plays the effect defined by SVar:SoundEffect
|
||||||
Shuffle("shuffle.mp3", false),
|
Shuffle("shuffle.mp3", false),
|
||||||
|
|||||||
Reference in New Issue
Block a user