mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Refactor so variant checkboxes display same description in tooltip as used by mobile game
This commit is contained in:
@@ -29,6 +29,7 @@ import forge.screens.home.*;
|
||||
import forge.toolbox.*;
|
||||
import forge.toolbox.FSkin.SkinColor;
|
||||
import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.util.GuiDisplayUtil;
|
||||
import forge.util.Lang;
|
||||
import forge.util.MyRandom;
|
||||
import forge.util.NameGenerator;
|
||||
@@ -78,12 +79,12 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
// Variants frame and variables
|
||||
private final Set<GameType> appliedVariants = new TreeSet<GameType>();
|
||||
private final FPanel variantsPanel = new FPanel(new MigLayout("insets 10, gapx 10"));
|
||||
private final FCheckBox vntVanguard = new FCheckBox("Vanguard");
|
||||
private final FCheckBox vntMomirBasic = new FCheckBox("Momir Basic");
|
||||
private final FCheckBox vntCommander = new FCheckBox("Commander");
|
||||
private final FCheckBox vntPlanechase = new FCheckBox("Planechase");
|
||||
private final FCheckBox vntArchenemy = new FCheckBox("Archenemy");
|
||||
private final FCheckBox vntArchenemyRumble = new FCheckBox("Archenemy Rumble");
|
||||
private final VariantCheckBox vntVanguard = new VariantCheckBox(GameType.Vanguard);
|
||||
private final VariantCheckBox vntMomirBasic = new VariantCheckBox(GameType.MomirBasic);
|
||||
private final VariantCheckBox vntCommander = new VariantCheckBox(GameType.Commander);
|
||||
private final VariantCheckBox vntPlanechase = new VariantCheckBox(GameType.Planechase);
|
||||
private final VariantCheckBox vntArchenemy = new VariantCheckBox(GameType.Archenemy);
|
||||
private final VariantCheckBox vntArchenemyRumble = new VariantCheckBox(GameType.ArchenemyRumble);
|
||||
|
||||
// Player frame elements
|
||||
private final JPanel playersFrame = new JPanel(new MigLayout("insets 0, gap 0 5, wrap, hidemode 3"));
|
||||
@@ -127,14 +128,6 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
////////////////////////////////////////////////////////
|
||||
//////////////////// Variants Panel ////////////////////
|
||||
|
||||
// Populate and add variants panel
|
||||
vntVanguard.addItemListener(iListenerVariants);
|
||||
vntMomirBasic.addItemListener(iListenerVariants);
|
||||
vntCommander.addItemListener(iListenerVariants);
|
||||
vntPlanechase.addItemListener(iListenerVariants);
|
||||
vntArchenemy.addItemListener(iListenerVariants);
|
||||
vntArchenemyRumble.addItemListener(iListenerVariants);
|
||||
|
||||
variantsPanel.setOpaque(false);
|
||||
variantsPanel.add(newLabel("Variants:"));
|
||||
variantsPanel.add(vntVanguard);
|
||||
@@ -1142,74 +1135,61 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
/////////////////////////////////////////////
|
||||
//========== Various listeners in build order
|
||||
|
||||
/** This listener unlocks the relevant buttons for players
|
||||
* and enables/disables archenemy combobox as appropriate. */
|
||||
private ItemListener iListenerVariants = new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
FCheckBox cb = (FCheckBox) arg0.getSource();
|
||||
GameType variantType = null;
|
||||
@SuppressWarnings("serial")
|
||||
private class VariantCheckBox extends FCheckBox {
|
||||
private final GameType variantType;
|
||||
|
||||
if (cb == vntVanguard) {
|
||||
variantType = GameType.Vanguard;
|
||||
}
|
||||
else if (cb == vntMomirBasic) {
|
||||
variantType = GameType.MomirBasic;
|
||||
}
|
||||
else if (cb == vntCommander) {
|
||||
variantType = GameType.Commander;
|
||||
}
|
||||
else if (cb == vntPlanechase) {
|
||||
variantType = GameType.Planechase;
|
||||
}
|
||||
else if (cb == vntArchenemy) {
|
||||
variantType = GameType.Archenemy;
|
||||
}
|
||||
else if (cb == vntArchenemyRumble) {
|
||||
variantType = GameType.ArchenemyRumble;
|
||||
}
|
||||
private VariantCheckBox(GameType variantType0) {
|
||||
super(variantType0.toString());
|
||||
|
||||
if (variantType != null) {
|
||||
if (arg0.getStateChange() == ItemEvent.SELECTED) {
|
||||
appliedVariants.add(variantType);
|
||||
currentGameMode = variantType;
|
||||
variantType = variantType0;
|
||||
|
||||
//ensure other necessary variants are unchecked
|
||||
switch (variantType) {
|
||||
case Archenemy:
|
||||
vntArchenemyRumble.setSelected(false);
|
||||
break;
|
||||
case ArchenemyRumble:
|
||||
vntArchenemy.setSelected(false);
|
||||
break;
|
||||
case Commander:
|
||||
vntMomirBasic.setSelected(false);
|
||||
break;
|
||||
case Vanguard:
|
||||
vntMomirBasic.setSelected(false);
|
||||
break;
|
||||
case MomirBasic:
|
||||
vntCommander.setSelected(false);
|
||||
vntVanguard.setSelected(false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
setToolTipText(GuiDisplayUtil.getVariantDescription(variantType0));
|
||||
|
||||
addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent e) {
|
||||
if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
appliedVariants.add(variantType);
|
||||
currentGameMode = variantType;
|
||||
|
||||
//ensure other necessary variants are unchecked
|
||||
switch (variantType) {
|
||||
case Archenemy:
|
||||
vntArchenemyRumble.setSelected(false);
|
||||
break;
|
||||
case ArchenemyRumble:
|
||||
vntArchenemy.setSelected(false);
|
||||
break;
|
||||
case Commander:
|
||||
vntMomirBasic.setSelected(false);
|
||||
break;
|
||||
case Vanguard:
|
||||
vntMomirBasic.setSelected(false);
|
||||
break;
|
||||
case MomirBasic:
|
||||
vntCommander.setSelected(false);
|
||||
vntVanguard.setSelected(false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
appliedVariants.remove(variantType);
|
||||
if (currentGameMode == variantType) {
|
||||
currentGameMode = GameType.Constructed;
|
||||
else {
|
||||
appliedVariants.remove(variantType);
|
||||
if (currentGameMode == variantType) {
|
||||
currentGameMode = GameType.Constructed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (PlayerPanel pp : playerPanels) {
|
||||
pp.toggleIsPlayerArchenemy();
|
||||
}
|
||||
changePlayerFocus(playerWithFocus, currentGameMode);
|
||||
for (PlayerPanel pp : playerPanels) {
|
||||
pp.toggleIsPlayerArchenemy();
|
||||
}
|
||||
changePlayerFocus(playerWithFocus, currentGameMode);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private ActionListener nameListener = new ActionListener() {
|
||||
@Override
|
||||
|
||||
@@ -46,6 +46,7 @@ import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.FTextField;
|
||||
import forge.util.Callback;
|
||||
import forge.util.GuiDisplayUtil;
|
||||
import forge.util.Lang;
|
||||
import forge.util.NameGenerator;
|
||||
import forge.util.Utils;
|
||||
@@ -935,12 +936,12 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
super("Select Variants");
|
||||
|
||||
lstVariants.setListItemRenderer(new VariantRenderer());
|
||||
lstVariants.addItem(new Variant(GameType.Vanguard, "Each player has a special \"Avatar\" card that affects the game."));
|
||||
lstVariants.addItem(new Variant(GameType.MomirBasic, "Each player has a deck containing 60 basic lands and the Momir Vig avatar."));
|
||||
lstVariants.addItem(new Variant(GameType.Commander, "Each player has a legendary \"General\" card which can be cast at any time and determines deck colors."));
|
||||
lstVariants.addItem(new Variant(GameType.Planechase, "Plane cards apply global effects. Plane card changed when a player rolls \"Chaos\" on the planar die."));
|
||||
lstVariants.addItem(new Variant(GameType.Archenemy, "One player is the Archenemy and can play scheme cards."));
|
||||
lstVariants.addItem(new Variant(GameType.ArchenemyRumble, "All players are Archenemies and can play scheme cards."));
|
||||
lstVariants.addItem(new Variant(GameType.Vanguard));
|
||||
lstVariants.addItem(new Variant(GameType.MomirBasic));
|
||||
lstVariants.addItem(new Variant(GameType.Commander));
|
||||
lstVariants.addItem(new Variant(GameType.Planechase));
|
||||
lstVariants.addItem(new Variant(GameType.Archenemy));
|
||||
lstVariants.addItem(new Variant(GameType.ArchenemyRumble));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -951,10 +952,10 @@ public class ConstructedScreen extends LaunchScreen {
|
||||
private class Variant {
|
||||
private final GameType gameType;
|
||||
private final String description;
|
||||
|
||||
private Variant(GameType gameType0, String description0) {
|
||||
|
||||
private Variant(GameType gameType0) {
|
||||
gameType = gameType0;
|
||||
description = description0;
|
||||
description = GuiDisplayUtil.getVariantDescription(gameType0);
|
||||
}
|
||||
|
||||
private void draw(Graphics g, FSkinFont font, FSkinColor color, float x, float y, float w, float h) {
|
||||
|
||||
@@ -520,5 +520,22 @@ public final class GuiDisplayUtil {
|
||||
return text.replaceAll("(?i)human", playerName);
|
||||
}
|
||||
|
||||
|
||||
public static String getVariantDescription(GameType variant) {
|
||||
switch (variant) {
|
||||
case Archenemy:
|
||||
return "One player is the Archenemy and can play scheme cards.";
|
||||
case ArchenemyRumble:
|
||||
return "All players are Archenemies and can play scheme cards.";
|
||||
case Commander:
|
||||
return "Each player has a legendary \"General\" card which can be cast at any time and determines deck colors.";
|
||||
case MomirBasic:
|
||||
return "Each player has a deck containing 60 basic lands and the Momir Vig avatar.";
|
||||
case Planechase:
|
||||
return "Plane cards apply global effects. Plane card changed when a player rolls \"Chaos\" on the planar die.";
|
||||
case Vanguard:
|
||||
return "Each player has a special \"Avatar\" card that affects the game.";
|
||||
default:
|
||||
return ""; //other game types don't need descriptions
|
||||
}
|
||||
}
|
||||
} // end class GuiDisplayUtil
|
||||
|
||||
Reference in New Issue
Block a user