If switched to Combat pane when combat begins, switch back to previous pane when combat ends

This commit is contained in:
drdev
2013-11-29 04:28:05 +00:00
parent 90fe657da6
commit 4ed8f69da1
2 changed files with 23 additions and 6 deletions

View File

@@ -51,6 +51,7 @@ import forge.gui.events.UiEventBlockerAssigned;
import forge.gui.framework.EDocID; import forge.gui.framework.EDocID;
import forge.gui.framework.FScreen; import forge.gui.framework.FScreen;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.gui.framework.IVDoc;
import forge.gui.framework.SDisplayUtil; import forge.gui.framework.SDisplayUtil;
import forge.gui.match.controllers.CCombat; import forge.gui.match.controllers.CCombat;
import forge.gui.match.controllers.CDetail; import forge.gui.match.controllers.CDetail;
@@ -88,6 +89,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider {
private VMatchUI view; private VMatchUI view;
private EventBus uiEvents; private EventBus uiEvents;
private IVDoc<? extends ICDoc> selectedDocBeforeCombat;
private MatchUiEventVisitor visitor = new MatchUiEventVisitor(); private MatchUiEventVisitor visitor = new MatchUiEventVisitor();
private CMatchUI() { private CMatchUI() {
@@ -296,7 +298,22 @@ public enum CMatchUI implements ICDoc, IMenuProvider {
public void showCombat(Combat combat) { public void showCombat(Combat combat) {
if (combat != null && combat.getAttackingPlayer().getGame().getStack().isEmpty()) { if (combat != null && combat.getAttackingPlayer().getGame().getStack().isEmpty()) {
SDisplayUtil.showTab(EDocID.REPORT_COMBAT.getDoc()); if (selectedDocBeforeCombat == null) {
IVDoc<? extends ICDoc> combatDoc = EDocID.REPORT_COMBAT.getDoc();
if (combatDoc.getParentCell() != null) {
selectedDocBeforeCombat = combatDoc.getParentCell().getSelected();
if (selectedDocBeforeCombat != combatDoc) {
SDisplayUtil.showTab(combatDoc);
}
else {
selectedDocBeforeCombat = null; //don't need to cache combat doc this way
}
}
}
}
else if (selectedDocBeforeCombat != null) { //re-select doc that was selected before once combat finished
SDisplayUtil.showTab(selectedDocBeforeCombat);
selectedDocBeforeCombat = null;
} }
CCombat.SINGLETON_INSTANCE.setModel(combat); CCombat.SINGLETON_INSTANCE.setModel(combat);
CCombat.SINGLETON_INSTANCE.update(); CCombat.SINGLETON_INSTANCE.update();

View File

@@ -45,16 +45,16 @@ public enum CCombat implements ICDoc {
@Override @Override
public void update() { public void update() {
Combat localCombat = this.combat; // noone will re-assign this from other thread. Combat localCombat = this.combat; // noone will re-assign this from other thread.
if (localCombat != null ) if (localCombat != null) {
VCombat.SINGLETON_INSTANCE.updateCombat(localCombat.getAttackers().size(), getCombatDescription(localCombat)); VCombat.SINGLETON_INSTANCE.updateCombat(localCombat.getAttackers().size(), getCombatDescription(localCombat));
else }
else {
VCombat.SINGLETON_INSTANCE.updateCombat(0, ""); VCombat.SINGLETON_INSTANCE.updateCombat(0, "");
}
} }
public void setModel(Combat combat) public void setModel(Combat combat) {
{
this.combat = combat; this.combat = combat;
} }
private static String getCombatDescription(Combat combat) { private static String getCombatDescription(Combat combat) {