[UI] Some sounds

This commit is contained in:
magenoxx 2012-07-19 18:11:00 +04:00
parent 5c8ebf393b
commit de146458a9
7 changed files with 99 additions and 5 deletions

View file

@ -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);

View file

@ -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;
}
}
}
}

View file

@ -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

View file

@ -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();

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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());