mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Merge remote-tracking branch 'upstream/master' into smart-card-art-deck-import-desktop-and-mobile
This commit is contained in:
@@ -290,6 +290,7 @@ public class GuiDesktop implements IGuiBase {
|
||||
@Override
|
||||
public void clearImageCache() {
|
||||
ImageCache.clear();
|
||||
ImageKeys.clearMissingCards();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -96,6 +96,7 @@ public class ImageCache {
|
||||
public static void clear() {
|
||||
_CACHE.invalidateAll();
|
||||
_missingIconKeys.clear();
|
||||
ImageKeys.clearMissingCards();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,7 @@ import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.screens.deckeditor.CDeckEditorUI;
|
||||
import forge.screens.deckeditor.controllers.CEditorTokenViewer;
|
||||
import forge.sound.MusicPlaylist;
|
||||
import forge.sound.SoundSystem;
|
||||
import forge.toolbox.*;
|
||||
import forge.util.Localizer;
|
||||
@@ -27,6 +28,8 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
import java.io.File;
|
||||
@@ -262,6 +265,8 @@ public enum CSubmenuPreferences implements ICDoc {
|
||||
initializeAutoUpdaterComboBox();
|
||||
initializeMulliganRuleComboBox();
|
||||
initializeAiProfilesComboBox();
|
||||
initializeSoundSetsComboBox();
|
||||
initializeMusicSetsComboBox();
|
||||
initializeStackAdditionsComboBox();
|
||||
initializeLandPlayedComboBox();
|
||||
initializeColorIdentityCombobox();
|
||||
@@ -466,6 +471,35 @@ public enum CSubmenuPreferences implements ICDoc {
|
||||
panel.setComboBox(comboBox, selectedItem);
|
||||
}
|
||||
|
||||
private void initializeSoundSetsComboBox() {
|
||||
final FPref userSetting = FPref.UI_CURRENT_SOUND_SET;
|
||||
final FComboBoxPanel<String> panel = this.view.getSoundSetsComboBoxPanel();
|
||||
final FComboBox<String> comboBox = createComboBox(SoundSystem.instance.getAvailableSoundSets(), userSetting);
|
||||
final String selectedItem = this.prefs.getPref(userSetting);
|
||||
panel.setComboBox(comboBox, selectedItem);
|
||||
comboBox.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
SoundSystem.instance.invalidateSoundCache();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initializeMusicSetsComboBox() {
|
||||
final FPref userSetting = FPref.UI_CURRENT_MUSIC_SET;
|
||||
final FComboBoxPanel<String> panel = this.view.getMusicSetsComboBoxPanel();
|
||||
final FComboBox<String> comboBox = createComboBox(SoundSystem.instance.getAvailableMusicSets(), userSetting);
|
||||
final String selectedItem = this.prefs.getPref(userSetting);
|
||||
panel.setComboBox(comboBox, selectedItem);
|
||||
comboBox.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
MusicPlaylist.invalidateMusicPlaylist();
|
||||
SoundSystem.instance.changeBackgroundTrack();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initializeCardArtPreference() {
|
||||
final String latestOpt = Localizer.getInstance().getMessage("latestArtOpt");
|
||||
final String originalOpt = Localizer.getInstance().getMessage("originalArtOpt");
|
||||
|
||||
@@ -128,6 +128,8 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
|
||||
private final FComboBoxPanel<String> cbpCardArtFormat = new FComboBoxPanel<>(localizer.getMessage("cbpCardArtFormat")+":");
|
||||
private final FComboBoxPanel<String> cbpCardArtPreference = new FComboBoxPanel<>(localizer.getMessage("lblPreferredArt")+":");
|
||||
private final FComboBoxPanel<String> cbpMulliganRule = new FComboBoxPanel<>(localizer.getMessage("cbpMulliganRule")+":");
|
||||
private final FComboBoxPanel<String> cbpSoundSets = new FComboBoxPanel<>(localizer.getMessage("cbpSoundSets")+":");
|
||||
private final FComboBoxPanel<String> cbpMusicSets = new FComboBoxPanel<>(localizer.getMessage("cbpMusicSets")+":");
|
||||
private final FComboBoxPanel<String> cbpAiProfiles = new FComboBoxPanel<>(localizer.getMessage("cbpAiProfiles")+":");
|
||||
private final FComboBoxPanel<String> cbpStackAdditions = new FComboBoxPanel<>(localizer.getMessage("cbpStackAdditions")+":");
|
||||
private final FComboBoxPanel<String> cbpLandPlayed = new FComboBoxPanel<>(localizer.getMessage("cbpLandPlayed")+":");
|
||||
@@ -414,9 +416,15 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
|
||||
pnlPrefs.add(cbEnableSounds, titleConstraints);
|
||||
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlEnableSounds")), descriptionConstraints);
|
||||
|
||||
pnlPrefs.add(cbpSoundSets, comboBoxConstraints);
|
||||
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlpSoundSets")), descriptionConstraints);
|
||||
|
||||
pnlPrefs.add(cbEnableMusic, titleConstraints);
|
||||
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlEnableMusic")), descriptionConstraints);
|
||||
|
||||
pnlPrefs.add(cbpMusicSets, comboBoxConstraints);
|
||||
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlpMusicSets")), descriptionConstraints);
|
||||
|
||||
pnlPrefs.add(cbAltSoundSystem, titleConstraints);
|
||||
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlAltSoundSystem")), descriptionConstraints);
|
||||
pnlPrefs.add(cbSROptimize, titleConstraints);
|
||||
@@ -740,6 +748,14 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
|
||||
return cbpMulliganRule;
|
||||
}
|
||||
|
||||
public FComboBoxPanel<String> getSoundSetsComboBoxPanel() {
|
||||
return cbpSoundSets;
|
||||
}
|
||||
|
||||
public FComboBoxPanel<String> getMusicSetsComboBoxPanel() {
|
||||
return cbpMusicSets;
|
||||
}
|
||||
|
||||
public FComboBoxPanel<String> getAiProfilesComboBoxPanel() {
|
||||
return cbpAiProfiles;
|
||||
}
|
||||
|
||||
@@ -40,9 +40,6 @@ import javax.sound.sampled.UnsupportedAudioFileException;
|
||||
import com.google.common.io.Files;
|
||||
import com.sipgate.mp3wav.Converter;
|
||||
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
|
||||
|
||||
/**
|
||||
* SoundSystem - a simple sound playback system for Forge.
|
||||
* Do not use directly. Instead, use the {@link forge.sound.SoundEffectType} enumeration.
|
||||
@@ -64,7 +61,7 @@ public class AudioClip implements IAudioClip {
|
||||
}
|
||||
|
||||
public static boolean fileExists(String fileName) {
|
||||
File fSound = new File(ForgeConstants.SOUND_DIR, fileName);
|
||||
File fSound = new File(SoundSystem.instance.getSoundDirectory(), fileName);
|
||||
return fSound.exists();
|
||||
}
|
||||
|
||||
@@ -195,7 +192,7 @@ public class AudioClip implements IAudioClip {
|
||||
}
|
||||
|
||||
private Clip createClip(String filename) {
|
||||
File fSound = new File(ForgeConstants.SOUND_DIR, filename);
|
||||
File fSound = new File(SoundSystem.instance.getSoundDirectory(), filename);
|
||||
if (!fSound.exists()) {
|
||||
throw new IllegalArgumentException("Sound file " + fSound.toString() + " does not exist, cannot make a clip of it");
|
||||
}
|
||||
|
||||
@@ -132,9 +132,9 @@ public class FCheckBoxTree extends JTree {
|
||||
this.selectedChildrenCount = selectedChildrenCount;
|
||||
this.enabledChildrenCount = enabledChildrenCount;
|
||||
}
|
||||
public boolean hasChildren() { return this.numberOfChildren > 0;}
|
||||
public boolean allChildrenSelected(){ return this.numberOfChildren == this.selectedChildrenCount; };
|
||||
public boolean allChildrenEnabled(){ return this.enabledChildrenCount == this.numberOfChildren; };
|
||||
public boolean hasChildren() { return this.numberOfChildren > 0; }
|
||||
public boolean allChildrenSelected() { return this.numberOfChildren == this.selectedChildrenCount; }
|
||||
public boolean allChildrenEnabled() { return this.enabledChildrenCount == this.numberOfChildren; }
|
||||
}
|
||||
|
||||
// == Fields of the FCheckboxTree class ==
|
||||
|
||||
Reference in New Issue
Block a user