Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 22 additions & 69 deletions forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,9 @@ public void enableOverlay() {
@Override
public void finishGame() {
FloatingZone.closeAll(); //ensure floating card areas cleared and closed after the game
if (isNetGame()) {
writeMatchPreferences();
}
final GameView gameView = getGameView();
if (hasLocalPlayers() || gameView.isMatchOver()) {
new ViewWinLose(gameView, this).show();
Expand Down Expand Up @@ -1224,84 +1227,34 @@ public boolean isUiSetToSkipPhase(final PlayerView playerTurn, final PhaseType p
return skippedPhase && label != null && !label.getEnabled();
}

/**
* TODO: Needs to be reworked for efficiency with rest of prefs saves in codebase.
*/
public void writeMatchPreferences() {
final ForgePreferences prefs = FModel.getPreferences();
final List<VField> fieldViews = getFieldViews();

// AI field is at index [1]
final PhaseIndicator fvAi = fieldViews.get(1).getPhaseIndicator();
prefs.setPref(FPref.PHASE_AI_UPKEEP, fvAi.getLblUpkeep().getEnabled());
prefs.setPref(FPref.PHASE_AI_DRAW, fvAi.getLblDraw().getEnabled());
prefs.setPref(FPref.PHASE_AI_MAIN1, fvAi.getLblMain1().getEnabled());
prefs.setPref(FPref.PHASE_AI_BEGINCOMBAT, fvAi.getLblBeginCombat().getEnabled());
prefs.setPref(FPref.PHASE_AI_DECLAREATTACKERS, fvAi.getLblDeclareAttackers().getEnabled());
prefs.setPref(FPref.PHASE_AI_DECLAREBLOCKERS, fvAi.getLblDeclareBlockers().getEnabled());
prefs.setPref(FPref.PHASE_AI_FIRSTSTRIKE, fvAi.getLblFirstStrike().getEnabled());
prefs.setPref(FPref.PHASE_AI_COMBATDAMAGE, fvAi.getLblCombatDamage().getEnabled());
prefs.setPref(FPref.PHASE_AI_ENDCOMBAT, fvAi.getLblEndCombat().getEnabled());
prefs.setPref(FPref.PHASE_AI_MAIN2, fvAi.getLblMain2().getEnabled());
prefs.setPref(FPref.PHASE_AI_EOT, fvAi.getLblEndTurn().getEnabled());
prefs.setPref(FPref.PHASE_AI_CLEANUP, fvAi.getLblCleanup().getEnabled());

// Human field is at index [0]
final PhaseIndicator fvHuman = fieldViews.get(0).getPhaseIndicator();
prefs.setPref(FPref.PHASE_HUMAN_UPKEEP, fvHuman.getLblUpkeep().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_DRAW, fvHuman.getLblDraw().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_MAIN1, fvHuman.getLblMain1().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_BEGINCOMBAT, fvHuman.getLblBeginCombat().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_DECLAREATTACKERS, fvHuman.getLblDeclareAttackers().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_DECLAREBLOCKERS, fvHuman.getLblDeclareBlockers().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_FIRSTSTRIKE, fvHuman.getLblFirstStrike().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_COMBATDAMAGE, fvHuman.getLblCombatDamage().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_ENDCOMBAT, fvHuman.getLblEndCombat().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_MAIN2, fvHuman.getLblMain2().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_EOT, fvHuman.getLblEndTurn().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_CLEANUP, fvHuman.getLblCleanup().getEnabled());

final PhaseType[] phases = PhaseType.values();

for (int i = 0; i < fieldViews.size(); i++) {
final FPref[] keys = isLocalPlayer(sortedPlayers.get(i))
? FPref.PHASES_HUMAN : FPref.PHASES_AI;
final PhaseIndicator pi = fieldViews.get(i).getPhaseIndicator();
for (int p = 1; p < phases.length; p++) {
prefs.setPref(keys[p - 1], pi.getLabelFor(phases[p]).getEnabled());
}
}
prefs.save();
}

/**
* TODO: Needs to be reworked for efficiency with rest of prefs saves in codebase.
*/
private void actuateMatchPreferences() {
final ForgePreferences prefs = FModel.getPreferences();
final List<VField> fieldViews = getFieldViews();

// Human field is at index [0]
//TODO: Rework without that assumption; not true in 4 AI game or hotseat game.
final PhaseIndicator fvHuman = fieldViews.get(0).getPhaseIndicator();
fvHuman.getLblUpkeep().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_UPKEEP));
fvHuman.getLblDraw().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DRAW));
fvHuman.getLblMain1().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_MAIN1));
fvHuman.getLblBeginCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_BEGINCOMBAT));
fvHuman.getLblDeclareAttackers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DECLAREATTACKERS));
fvHuman.getLblDeclareBlockers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DECLAREBLOCKERS));
fvHuman.getLblFirstStrike().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_FIRSTSTRIKE));
fvHuman.getLblCombatDamage().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_COMBATDAMAGE));
fvHuman.getLblEndCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_ENDCOMBAT));
fvHuman.getLblMain2().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_MAIN2));
fvHuman.getLblEndTurn().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_EOT));
fvHuman.getLblCleanup().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_CLEANUP));

// AI field is at index [1], ...
for (int i = 1; i < fieldViews.size(); i++) {
final PhaseIndicator fvAi = fieldViews.get(i).getPhaseIndicator();
fvAi.getLblUpkeep().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_UPKEEP));
fvAi.getLblDraw().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_DRAW));
fvAi.getLblMain1().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_MAIN1));
fvAi.getLblBeginCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_BEGINCOMBAT));
fvAi.getLblDeclareAttackers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_DECLAREATTACKERS));
fvAi.getLblDeclareBlockers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_DECLAREBLOCKERS));
fvAi.getLblFirstStrike().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_FIRSTSTRIKE));
fvAi.getLblCombatDamage().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_COMBATDAMAGE));
fvAi.getLblEndCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_ENDCOMBAT));
fvAi.getLblMain2().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_MAIN2));
fvAi.getLblEndTurn().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_EOT));
fvAi.getLblCleanup().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_CLEANUP));
final PhaseType[] phases = PhaseType.values();

for (int i = 0; i < fieldViews.size(); i++) {
final FPref[] keys = isLocalPlayer(sortedPlayers.get(i))
? FPref.PHASES_HUMAN : FPref.PHASES_AI;
final PhaseIndicator pi = fieldViews.get(i).getPhaseIndicator();
for (int p = 1; p < phases.length; p++) {
pi.getLabelFor(phases[p]).setEnabled(prefs.getPrefBoolean(keys[p - 1]));
}
}
}

Expand Down
79 changes: 21 additions & 58 deletions forge-gui-mobile/src/forge/screens/match/MatchController.java
Original file line number Diff line number Diff line change
Expand Up @@ -559,69 +559,32 @@ public void resetPlayerPanels() {

private static void actuateMatchPreferences() {
final ForgePreferences prefs = FModel.getPreferences();

for (int i=0; i<view.getPlayerPanelsList().size()-1; ++i){
VPhaseIndicator fvAi = view.getPlayerPanelsList().get(i).getPhaseIndicator();
fvAi.getLabel(PhaseType.UPKEEP).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_UPKEEP));
fvAi.getLabel(PhaseType.DRAW).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_DRAW));
fvAi.getLabel(PhaseType.MAIN1).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_MAIN1));
fvAi.getLabel(PhaseType.COMBAT_BEGIN).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_BEGINCOMBAT));
fvAi.getLabel(PhaseType.COMBAT_DECLARE_ATTACKERS).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_DECLAREATTACKERS));
fvAi.getLabel(PhaseType.COMBAT_DECLARE_BLOCKERS).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_DECLAREBLOCKERS));
fvAi.getLabel(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_FIRSTSTRIKE));
fvAi.getLabel(PhaseType.COMBAT_DAMAGE).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_COMBATDAMAGE));
fvAi.getLabel(PhaseType.COMBAT_END).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_ENDCOMBAT));
fvAi.getLabel(PhaseType.MAIN2).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_MAIN2));
fvAi.getLabel(PhaseType.END_OF_TURN).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_EOT));
fvAi.getLabel(PhaseType.CLEANUP).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_AI_CLEANUP));
final List<VPlayerPanel> panels = view.getPlayerPanelsList();
final PhaseType[] phases = PhaseType.values();

for (final VPlayerPanel panel : panels) {
final FPref[] keys = instance.isLocalPlayer(panel.getPlayer())
? FPref.PHASES_HUMAN : FPref.PHASES_AI;
final VPhaseIndicator pi = panel.getPhaseIndicator();
for (int p = 1; p < phases.length; p++) {
pi.getLabel(phases[p]).setStopAtPhase(prefs.getPrefBoolean(keys[p - 1]));
}
}

final VPhaseIndicator fvHuman = view.getBottomPlayerPanel().getPhaseIndicator();
fvHuman.getLabel(PhaseType.UPKEEP).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_UPKEEP));
fvHuman.getLabel(PhaseType.DRAW).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DRAW));
fvHuman.getLabel(PhaseType.MAIN1).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_MAIN1));
fvHuman.getLabel(PhaseType.COMBAT_BEGIN).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_BEGINCOMBAT));
fvHuman.getLabel(PhaseType.COMBAT_DECLARE_ATTACKERS).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DECLAREATTACKERS));
fvHuman.getLabel(PhaseType.COMBAT_DECLARE_BLOCKERS).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DECLAREBLOCKERS));
fvHuman.getLabel(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_FIRSTSTRIKE));
fvHuman.getLabel(PhaseType.COMBAT_DAMAGE).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_COMBATDAMAGE));
fvHuman.getLabel(PhaseType.COMBAT_END).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_ENDCOMBAT));
fvHuman.getLabel(PhaseType.MAIN2).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_MAIN2));
fvHuman.getLabel(PhaseType.END_OF_TURN).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_EOT));
fvHuman.getLabel(PhaseType.CLEANUP).setStopAtPhase(prefs.getPrefBoolean(FPref.PHASE_HUMAN_CLEANUP));
}

public static void writeMatchPreferences() {
final ForgePreferences prefs = FModel.getPreferences();

final VPhaseIndicator fvAi = view.getTopPlayerPanel().getPhaseIndicator();
prefs.setPref(FPref.PHASE_AI_UPKEEP, String.valueOf(fvAi.getLabel(PhaseType.UPKEEP).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_DRAW, String.valueOf(fvAi.getLabel(PhaseType.DRAW).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_MAIN1, String.valueOf(fvAi.getLabel(PhaseType.MAIN1).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_BEGINCOMBAT, String.valueOf(fvAi.getLabel(PhaseType.COMBAT_BEGIN).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_DECLAREATTACKERS, String.valueOf(fvAi.getLabel(PhaseType.COMBAT_DECLARE_ATTACKERS).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_DECLAREBLOCKERS, String.valueOf(fvAi.getLabel(PhaseType.COMBAT_DECLARE_BLOCKERS).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_FIRSTSTRIKE, String.valueOf(fvAi.getLabel(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_COMBATDAMAGE, String.valueOf(fvAi.getLabel(PhaseType.COMBAT_DAMAGE).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_ENDCOMBAT, String.valueOf(fvAi.getLabel(PhaseType.COMBAT_END).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_MAIN2, String.valueOf(fvAi.getLabel(PhaseType.MAIN2).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_EOT, String.valueOf(fvAi.getLabel(PhaseType.END_OF_TURN).getStopAtPhase()));
prefs.setPref(FPref.PHASE_AI_CLEANUP, String.valueOf(fvAi.getLabel(PhaseType.CLEANUP).getStopAtPhase()));

final VPhaseIndicator fvHuman = view.getBottomPlayerPanel().getPhaseIndicator();
prefs.setPref(FPref.PHASE_HUMAN_UPKEEP, String.valueOf(fvHuman.getLabel(PhaseType.UPKEEP).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_DRAW, String.valueOf(fvHuman.getLabel(PhaseType.DRAW).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_MAIN1, String.valueOf(fvHuman.getLabel(PhaseType.MAIN1).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_BEGINCOMBAT, String.valueOf(fvHuman.getLabel(PhaseType.COMBAT_BEGIN).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_DECLAREATTACKERS, String.valueOf(fvHuman.getLabel(PhaseType.COMBAT_DECLARE_ATTACKERS).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_DECLAREBLOCKERS, String.valueOf(fvHuman.getLabel(PhaseType.COMBAT_DECLARE_BLOCKERS).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_FIRSTSTRIKE, String.valueOf(fvHuman.getLabel(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_COMBATDAMAGE, String.valueOf(fvHuman.getLabel(PhaseType.COMBAT_DAMAGE).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_ENDCOMBAT, String.valueOf(fvHuman.getLabel(PhaseType.COMBAT_END).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_MAIN2, String.valueOf(fvHuman.getLabel(PhaseType.MAIN2).getStopAtPhase()));
prefs.setPref(FPref.PHASE_HUMAN_EOT, fvHuman.getLabel(PhaseType.END_OF_TURN).getStopAtPhase());
prefs.setPref(FPref.PHASE_HUMAN_CLEANUP, fvHuman.getLabel(PhaseType.CLEANUP).getStopAtPhase());

final List<VPlayerPanel> panels = view.getPlayerPanelsList();
final PhaseType[] phases = PhaseType.values();

for (final VPlayerPanel panel : panels) {
final FPref[] keys = instance.isLocalPlayer(panel.getPlayer())
? FPref.PHASES_HUMAN : FPref.PHASES_AI;
final VPhaseIndicator pi = panel.getPhaseIndicator();
for (int p = 1; p < phases.length; p++) {
prefs.setPref(keys[p - 1], String.valueOf(pi.getLabel(phases[p]).getStopAtPhase()));
}
}
prefs.save();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,20 @@ private static String defaultCustomLogTypes() {
BRAWL_P5_DECK_STATE, BRAWL_P6_DECK_STATE,
BRAWL_P7_DECK_STATE, BRAWL_P8_DECK_STATE };

/** Phase stop prefs in PhaseType order (UPKEEP through CLEANUP, skipping UNTAP). */
public static FPref[] PHASES_AI = {
PHASE_AI_UPKEEP, PHASE_AI_DRAW, PHASE_AI_MAIN1,
PHASE_AI_BEGINCOMBAT, PHASE_AI_DECLAREATTACKERS,
PHASE_AI_DECLAREBLOCKERS, PHASE_AI_FIRSTSTRIKE,
PHASE_AI_COMBATDAMAGE, PHASE_AI_ENDCOMBAT,
PHASE_AI_MAIN2, PHASE_AI_EOT, PHASE_AI_CLEANUP };
public static FPref[] PHASES_HUMAN = {
PHASE_HUMAN_UPKEEP, PHASE_HUMAN_DRAW, PHASE_HUMAN_MAIN1,
PHASE_HUMAN_BEGINCOMBAT, PHASE_HUMAN_DECLAREATTACKERS,
PHASE_HUMAN_DECLAREBLOCKERS, PHASE_HUMAN_FIRSTSTRIKE,
PHASE_HUMAN_COMBATDAMAGE, PHASE_HUMAN_ENDCOMBAT,
PHASE_HUMAN_MAIN2, PHASE_HUMAN_EOT, PHASE_HUMAN_CLEANUP };

}

/** Instantiates a ForgePreferences object. */
Expand Down