mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Fix local Multiplayer Phase Indicator
This commit is contained in:
@@ -89,6 +89,15 @@ public class GameView extends TrackableObject {
|
|||||||
}
|
}
|
||||||
void updatePhase(PhaseHandler phaseHandler) {
|
void updatePhase(PhaseHandler phaseHandler) {
|
||||||
set(TrackableProperty.Phase, phaseHandler.getPhase());
|
set(TrackableProperty.Phase, phaseHandler.getPhase());
|
||||||
|
set(TrackableProperty.PhaseLabelUpdate, true);
|
||||||
|
}
|
||||||
|
public boolean getPhaseLabelUpdate() {
|
||||||
|
if (get(TrackableProperty.PhaseLabelUpdate) == null)
|
||||||
|
return false;
|
||||||
|
return get(TrackableProperty.PhaseLabelUpdate);
|
||||||
|
}
|
||||||
|
public void clearPhaseLabelUpdate() {
|
||||||
|
set(TrackableProperty.PhaseLabelUpdate, false);
|
||||||
}
|
}
|
||||||
public PlayerView getPlayerTurn() {
|
public PlayerView getPlayerTurn() {
|
||||||
return get(TrackableProperty.PlayerTurn);
|
return get(TrackableProperty.PlayerTurn);
|
||||||
|
|||||||
@@ -254,6 +254,7 @@ public enum TrackableProperty {
|
|||||||
GameOver(TrackableTypes.BooleanType),
|
GameOver(TrackableTypes.BooleanType),
|
||||||
PoisonCountersToLose(TrackableTypes.IntegerType),
|
PoisonCountersToLose(TrackableTypes.IntegerType),
|
||||||
GameLog(TrackableTypes.StringType),
|
GameLog(TrackableTypes.StringType),
|
||||||
|
PhaseLabelUpdate(TrackableTypes.BooleanType),
|
||||||
PlayerTurn(TrackableTypes.PlayerViewType),
|
PlayerTurn(TrackableTypes.PlayerViewType),
|
||||||
Phase(TrackableTypes.EnumType(PhaseType.class));
|
Phase(TrackableTypes.EnumType(PhaseType.class));
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ import forge.player.PlayerZoneUpdates;
|
|||||||
import forge.screens.match.views.VAssignCombatDamage;
|
import forge.screens.match.views.VAssignCombatDamage;
|
||||||
import forge.screens.match.views.VAssignGenericAmount;
|
import forge.screens.match.views.VAssignGenericAmount;
|
||||||
import forge.screens.match.views.VPhaseIndicator;
|
import forge.screens.match.views.VPhaseIndicator;
|
||||||
import forge.screens.match.views.VPhaseIndicator.PhaseLabel;
|
|
||||||
import forge.screens.match.views.VPlayerPanel;
|
import forge.screens.match.views.VPlayerPanel;
|
||||||
import forge.screens.match.views.VPlayerPanel.InfoTab;
|
import forge.screens.match.views.VPlayerPanel.InfoTab;
|
||||||
import forge.screens.match.views.VPrompt;
|
import forge.screens.match.views.VPrompt;
|
||||||
@@ -213,21 +212,8 @@ public class MatchController extends AbstractGuiGame {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updatePhase(boolean saveState) {
|
public void updatePhase(boolean saveState) {
|
||||||
final PlayerView p = getGameView().getPlayerTurn();
|
|
||||||
final PhaseType ph = getGameView().getPhase();
|
final PhaseType ph = getGameView().getPhase();
|
||||||
|
|
||||||
PhaseLabel lbl = null;
|
|
||||||
|
|
||||||
if(ph!=null) {
|
|
||||||
lbl = p == null ? null : view.getPlayerPanel(p).getPhaseIndicator().getLabel(ph);
|
|
||||||
} else {
|
|
||||||
System.err.println("getGameView().getPhase() returned 'null'");
|
|
||||||
}
|
|
||||||
|
|
||||||
view.resetAllPhaseButtons();
|
|
||||||
if (lbl != null) {
|
|
||||||
lbl.setActive(true);
|
|
||||||
}
|
|
||||||
if(GuiBase.isNetworkplay())
|
if(GuiBase.isNetworkplay())
|
||||||
checkStack();
|
checkStack();
|
||||||
|
|
||||||
|
|||||||
@@ -358,6 +358,21 @@ public class MatchScreen extends FScreen {
|
|||||||
final GameView game = MatchController.instance.getGameView();
|
final GameView game = MatchController.instance.getGameView();
|
||||||
if (game == null) { return; }
|
if (game == null) { return; }
|
||||||
|
|
||||||
|
//updatePhase to make it work with local MultiPlayer
|
||||||
|
if (game.getPhaseLabelUpdate()) {
|
||||||
|
PlayerView currentPlayer = game.getPlayerTurn();
|
||||||
|
PhaseType phaseType = game.getPhase();
|
||||||
|
//reset
|
||||||
|
game.clearPhaseLabelUpdate();
|
||||||
|
resetAllPhaseButtons();
|
||||||
|
//set phaselabel
|
||||||
|
try {
|
||||||
|
getPlayerPanel(currentPlayer).getPhaseIndicator().getLabel(phaseType).setActive(true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
//FIXME: it seems getting the phase or label causes NPE particularly after End of Turn, don't know why...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(gameMenu!=null) {
|
if(gameMenu!=null) {
|
||||||
if(gameMenu.getChildCount()>3){
|
if(gameMenu.getChildCount()>3){
|
||||||
if(viewWinLose == null) {
|
if(viewWinLose == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user