mirror of
https://github.com/correl/mage.git
synced 2024-12-24 11:50:45 +00:00
[UI] Some sounds
This commit is contained in:
parent
5c8ebf393b
commit
de146458a9
7 changed files with 99 additions and 5 deletions
|
@ -3,6 +3,7 @@ package mage.client.combat;
|
|||
import mage.cards.MagePermanent;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.game.PlayAreaPanel;
|
||||
import mage.client.util.AudioManager;
|
||||
import mage.client.util.SettingsManager;
|
||||
import mage.client.util.gui.ArrowBuilder;
|
||||
import mage.view.CardView;
|
||||
|
@ -10,7 +11,9 @@ import mage.view.CombatGroupView;
|
|||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
@ -20,6 +23,10 @@ public class CombatManager {
|
|||
|
||||
private static CombatManager combatManager;
|
||||
|
||||
private Map<UUID, Integer> combatAttackers = new HashMap<UUID, Integer>();
|
||||
private Map<UUID, Integer> combatBlockers = new HashMap<UUID, Integer>();
|
||||
private int globalBlockersCount; // we need global counter as there are several combat groups
|
||||
|
||||
public static CombatManager getInstance() {
|
||||
if (combatManager == null) {
|
||||
combatManager = new CombatManager();
|
||||
|
@ -34,17 +41,35 @@ public class CombatManager {
|
|||
displayArrows(combatView, gameId);
|
||||
}
|
||||
|
||||
public void hideCombat() {
|
||||
public void hideCombat(UUID gameId) {
|
||||
ArrowBuilder.removeArrowsByType(ArrowBuilder.Type.COMBAT);
|
||||
combatAttackers.remove(gameId);
|
||||
combatBlockers.remove(gameId);
|
||||
}
|
||||
|
||||
private void displayArrows(List<CombatGroupView> combatView, UUID gameId) {
|
||||
parentPoint = null;
|
||||
int count = 0;
|
||||
globalBlockersCount = 0;
|
||||
for (CombatGroupView group : combatView) {
|
||||
for (CardView attacker : group.getAttackers().values()) {
|
||||
drawAttacker(group, attacker, gameId);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
playAddAttackersSound(gameId, count);
|
||||
playAddBlockersSound(gameId, globalBlockersCount);
|
||||
}
|
||||
|
||||
private void playAddAttackersSound(UUID gameId, int count) {
|
||||
int prevCount = 0;
|
||||
if (combatAttackers.containsKey(gameId)) {
|
||||
prevCount = combatAttackers.get(gameId);
|
||||
}
|
||||
if (prevCount < count) {
|
||||
AudioManager.playAttack();
|
||||
}
|
||||
combatAttackers.put(gameId, count);
|
||||
}
|
||||
|
||||
private void drawAttacker(CombatGroupView group, CardView attacker, UUID gameId) {
|
||||
|
@ -99,11 +124,23 @@ public class CombatManager {
|
|||
double xRateB = (blockerCard.getSize().width / SettingsManager.getInstance().getCardSize().width);
|
||||
ArrowBuilder.addArrow((int) blockerPoint.getX() + (int)(55*xRateB), (int) blockerPoint.getY() + (int)(25*xRateB),
|
||||
(int) attackerPoint.getX() + (int)(70*xRateA), (int) attackerPoint.getY() + (int)(25*yRateA), Color.blue, ArrowBuilder.Type.COMBAT);
|
||||
globalBlockersCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void playAddBlockersSound(UUID gameId, int count) {
|
||||
int prevCount = 0;
|
||||
if (combatBlockers.containsKey(gameId)) {
|
||||
prevCount = combatBlockers.get(gameId);
|
||||
}
|
||||
if (prevCount < count) {
|
||||
AudioManager.playBlock();
|
||||
}
|
||||
combatBlockers.put(gameId, count);
|
||||
}
|
||||
|
||||
private Point getParentPoint(MagePermanent permanent) {
|
||||
if (parentPoint == null) {
|
||||
Component parentComponent = SwingUtilities.getRoot(permanent);
|
||||
|
|
|
@ -34,10 +34,12 @@
|
|||
|
||||
package mage.client.game;
|
||||
|
||||
import mage.Constants;
|
||||
import mage.cards.MagePermanent;
|
||||
import mage.client.cards.BigCard;
|
||||
import mage.client.cards.Permanent;
|
||||
import mage.client.plugins.impl.Plugins;
|
||||
import mage.client.util.AudioManager;
|
||||
import mage.client.util.Config;
|
||||
import mage.view.PermanentView;
|
||||
|
||||
|
@ -71,6 +73,12 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
|
|||
|
||||
private static int i = 0;
|
||||
|
||||
private boolean addedPermanent;
|
||||
private boolean addedArtifact;
|
||||
private boolean addedCreature;
|
||||
|
||||
private boolean removedCreature;
|
||||
|
||||
/** Creates new form BattlefieldPanel */
|
||||
public BattlefieldPanel() {
|
||||
ui.put("battlefieldPanel", this);
|
||||
|
@ -114,11 +122,24 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
|
|||
permanents.get(permanent.getId()).update(permanent);
|
||||
}
|
||||
}
|
||||
|
||||
addedArtifact = addedCreature = addedPermanent = false;
|
||||
|
||||
int count = permanentsToAdd.size();
|
||||
for (PermanentView permanent : permanentsToAdd) {
|
||||
addPermanent(permanent, count);
|
||||
}
|
||||
|
||||
if (addedArtifact) {
|
||||
AudioManager.playAddArtifact();
|
||||
} else if (addedCreature) {
|
||||
AudioManager.playSummon();
|
||||
} else if (addedPermanent) {
|
||||
AudioManager.playAddPermanent();
|
||||
}
|
||||
|
||||
removedCreature = false;
|
||||
|
||||
for (Iterator<Entry<UUID, MagePermanent>> i = permanents.entrySet().iterator(); i.hasNext();) {
|
||||
Entry<UUID, MagePermanent> entry = i.next();
|
||||
if (!battlefield.containsKey(entry.getKey())) {
|
||||
|
@ -128,6 +149,10 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
|
|||
}
|
||||
}
|
||||
|
||||
if (removedCreature) {
|
||||
AudioManager.playDiedCreature();
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
this.battlefield = battlefield;
|
||||
sortLayout();
|
||||
|
@ -183,6 +208,14 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
|
|||
threads.add(t);
|
||||
}*/
|
||||
}
|
||||
|
||||
if (permanent.getCardTypes().contains(Constants.CardType.ARTIFACT)) {
|
||||
addedArtifact = true;
|
||||
} else if (permanent.getCardTypes().contains(Constants.CardType.CREATURE)) {
|
||||
addedCreature = true;
|
||||
} else {
|
||||
addedPermanent = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void groupAttachments(PermanentView permanent) {
|
||||
|
@ -241,6 +274,9 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
|
|||
});
|
||||
t.start();
|
||||
}
|
||||
if (((MagePermanent)comp).getOriginal().getCardTypes().contains(Constants.CardType.CREATURE)) {
|
||||
removedCreature = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ import mage.client.MageFrame;
|
|||
import mage.client.chat.ChatPanel;
|
||||
import mage.client.components.MageTextArea;
|
||||
import mage.client.dialog.MageDialog;
|
||||
import mage.client.util.AudioManager;
|
||||
import mage.client.util.gui.ArrowBuilder;
|
||||
import mage.remote.Session;
|
||||
import org.apache.log4j.Logger;
|
||||
|
@ -378,12 +379,14 @@ public class FeedbackPanel extends javax.swing.JPanel {
|
|||
} else {
|
||||
session.sendPlayerBoolean(gameId, false);
|
||||
}
|
||||
//AudioManager.playButtonOk();
|
||||
}//GEN-LAST:event_btnRightActionPerformed
|
||||
|
||||
private void btnLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLeftActionPerformed
|
||||
this.selected = true;
|
||||
// clear0();
|
||||
session.sendPlayerBoolean(gameId, true);
|
||||
AudioManager.playButtonCancel();
|
||||
}//GEN-LAST:event_btnLeftActionPerformed
|
||||
|
||||
private void btnSpecialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSpecialActionPerformed
|
||||
|
|
|
@ -46,6 +46,7 @@ import mage.client.dialog.*;
|
|||
import mage.client.game.FeedbackPanel.FeedbackMode;
|
||||
import mage.client.plugins.adapters.MageActionCallback;
|
||||
import mage.client.plugins.impl.Plugins;
|
||||
import mage.client.util.AudioManager;
|
||||
import mage.client.util.Config;
|
||||
import mage.client.util.GameManager;
|
||||
import mage.client.util.PhaseManager;
|
||||
|
@ -380,10 +381,16 @@ public class GamePanel extends javax.swing.JPanel {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (game.getPhase() != null)
|
||||
|
||||
if (game.getPhase() != null) {
|
||||
this.txtPhase.setText(game.getPhase().toString());
|
||||
else
|
||||
} else {
|
||||
this.txtPhase.setText("");
|
||||
}
|
||||
if (game.getPhase() != null && game.getPhase().toString().equals("End") && game.getStep().toString().equals("End Turn")) {
|
||||
AudioManager.playEndTurn();
|
||||
}
|
||||
|
||||
if (game.getStep() != null)
|
||||
this.txtStep.setText(game.getStep().toString());
|
||||
else
|
||||
|
@ -423,7 +430,7 @@ public class GamePanel extends javax.swing.JPanel {
|
|||
CombatManager.getInstance().showCombat(game.getCombat(), gameId);
|
||||
} else {
|
||||
//combat.hideDialog();
|
||||
CombatManager.getInstance().hideCombat();
|
||||
CombatManager.getInstance().hideCombat(gameId);
|
||||
}
|
||||
updatePhases(game.getStep());
|
||||
this.revalidate();
|
||||
|
|
|
@ -31,6 +31,7 @@ public class AudioManager {
|
|||
audioManager.endTurnClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnEndTurn.wav");
|
||||
audioManager.tapPermanentClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnTapPermanent.wav");
|
||||
audioManager.summonClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnSummon.wav");
|
||||
audioManager.diedCreatureClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnSummon-.wav");
|
||||
audioManager.drawClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnDraw.wav");
|
||||
audioManager.buttonOkClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnButtonOk.wav");
|
||||
audioManager.buttonCancelClip = audioManager.loadClip(Constants.BASE_SOUND_PATH + "OnButtonCancel.wav");
|
||||
|
@ -72,6 +73,10 @@ public class AudioManager {
|
|||
checkAndPlayClip(getManager().summonClip);
|
||||
}
|
||||
|
||||
public static void playDiedCreature() {
|
||||
checkAndPlayClip(getManager().diedCreatureClip);
|
||||
}
|
||||
|
||||
public static void playDraw() {
|
||||
checkAndPlayClip(getManager().drawClip);
|
||||
}
|
||||
|
@ -156,6 +161,7 @@ public class AudioManager {
|
|||
private Clip endTurnClip = null;
|
||||
private Clip tapPermanentClip = null;
|
||||
private Clip summonClip = null;
|
||||
private Clip diedCreatureClip = null;
|
||||
private Clip drawClip = null;
|
||||
private Clip buttonOkClip = null;
|
||||
private Clip buttonCancelClip = null;
|
||||
|
|
|
@ -74,6 +74,7 @@ public class PhaseManager {
|
|||
if (activePlayer == null) {
|
||||
throw new IllegalStateException("No active player found.");
|
||||
}
|
||||
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
if (message.equals(entry.getKey())) {
|
||||
Preferences prefs = MageFrame.getPreferences();
|
||||
|
@ -81,6 +82,6 @@ public class PhaseManager {
|
|||
return !prop.equals(PHASE_ON);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import mage.cards.MagePermanent;
|
|||
import mage.cards.TextPopup;
|
||||
import mage.cards.action.ActionCallback;
|
||||
import mage.cards.action.TransferData;
|
||||
import mage.client.util.AudioManager;
|
||||
import mage.components.ImagePanel;
|
||||
import mage.utils.CardUtil;
|
||||
import mage.view.AbilityView;
|
||||
|
@ -631,6 +632,9 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
|
|||
if (needsTapping || needsFlipping) {
|
||||
Animation.tapCardToggle(this, this, needsTapping, needsFlipping);
|
||||
}
|
||||
if (needsTapping && ((PermanentView) card).isTapped()) {
|
||||
AudioManager.playTapPermanent();
|
||||
}
|
||||
boolean needsTranforming = isTransformed() != card.isTransformed();
|
||||
if (needsTranforming) {
|
||||
Animation.transformCard(this, this, card.isTransformed());
|
||||
|
|
Loading…
Reference in a new issue