prevent UI lockup

- closes #3697
This commit is contained in:
Anthony Calosa
2023-08-28 07:54:34 +08:00
parent ef77b798ea
commit 00df91c73f
10 changed files with 15 additions and 2 deletions

View File

@@ -1409,6 +1409,7 @@ lblActionFromPlayerDeck={0} von {1} Deck
lblConcedeCurrentGame=Das Spiel wird als verloren gewertet.\n\nTrotzdem aufgeben? lblConcedeCurrentGame=Das Spiel wird als verloren gewertet.\n\nTrotzdem aufgeben?
lblConcedeTitle=Spiel verloren geben? lblConcedeTitle=Spiel verloren geben?
lblConcede=Aufgeben lblConcede=Aufgeben
lblWaitingforActions=Warten auf Aktionen ...
lblCloseGameSpectator=Das Spiel wird verlassen und du kannst nicht zurückkehren, um es weiter zu beobachten.\n\nTrotzdem verlassen? lblCloseGameSpectator=Das Spiel wird verlassen und du kannst nicht zurückkehren, um es weiter zu beobachten.\n\nTrotzdem verlassen?
lblCloseGame=Spiel verlassen? lblCloseGame=Spiel verlassen?
lblWaitingForOpponent=Warte auf Gegner... lblWaitingForOpponent=Warte auf Gegner...

View File

@@ -1414,6 +1414,7 @@ lblActionFromPlayerDeck={0} from {1} Deck
lblConcedeCurrentGame=This will concede the current game and you will lose.\n\nConcede anyway? lblConcedeCurrentGame=This will concede the current game and you will lose.\n\nConcede anyway?
lblConcedeTitle=Concede Game? lblConcedeTitle=Concede Game?
lblConcede=Concede lblConcede=Concede
lblWaitingforActions=Waiting for actions...
lblCloseGameSpectator=This will close this game and you will not be able to resume watching it.\n\nClose anyway? lblCloseGameSpectator=This will close this game and you will not be able to resume watching it.\n\nClose anyway?
lblCloseGame=Close Game? lblCloseGame=Close Game?
lblWaitingForOpponent=Waiting for opponent... lblWaitingForOpponent=Waiting for opponent...

View File

@@ -1410,6 +1410,7 @@ lblActionFromPlayerDeck={0} del Mazo {1}
lblConcedeCurrentGame=Concederás la partida actual y perderás.\n\n¿Conceder de todos modos? lblConcedeCurrentGame=Concederás la partida actual y perderás.\n\n¿Conceder de todos modos?
lblConcedeTitle=¿Conceder partida? lblConcedeTitle=¿Conceder partida?
lblConcede=Conceder lblConcede=Conceder
lblWaitingforActions=Esperando acciones ...
lblCloseGameSpectator=Cerrarás la partida y no podrás volver a verla.\n\n¿Cerrar de todos modos? lblCloseGameSpectator=Cerrarás la partida y no podrás volver a verla.\n\n¿Cerrar de todos modos?
lblCloseGame=¿Cerrar partida? lblCloseGame=¿Cerrar partida?
lblWaitingForOpponent=Esperando al oponente... lblWaitingForOpponent=Esperando al oponente...

View File

@@ -1413,6 +1413,7 @@ lblActionFromPlayerDeck={0} de la plate-forme {1}
lblConcedeCurrentGame=Ceci concédera la partie en cours et vous perdrez.\n\nConcéder quand même ? lblConcedeCurrentGame=Ceci concédera la partie en cours et vous perdrez.\n\nConcéder quand même ?
lblConcedeTitle=Concéder le jeu ? lblConcedeTitle=Concéder le jeu ?
lblConcede=Concéder lblConcede=Concéder
lblWaitingforActions=En attente d'actions ...
lblCloseGameSpectator=Ceci fermera ce jeu et vous ne pourrez plus le regarder.\n\nFermer quand même ? lblCloseGameSpectator=Ceci fermera ce jeu et vous ne pourrez plus le regarder.\n\nFermer quand même ?
lblCloseGame=Fermer le jeu ? lblCloseGame=Fermer le jeu ?
lblWaitingForOpponent=En attente de l''adversaire... lblWaitingForOpponent=En attente de l''adversaire...

View File

@@ -1410,6 +1410,7 @@ lblActionFromPlayerDeck={0} dal mazzo di {1}
lblConcedeCurrentGame=Questo concederà la partita in corso e perderai. \n \nConcedi comunque? lblConcedeCurrentGame=Questo concederà la partita in corso e perderai. \n \nConcedi comunque?
lblConcedeTitle=Concedere la partita? lblConcedeTitle=Concedere la partita?
lblConcede=Concedi lblConcede=Concedi
lblWaitingforActions=Aspettando le azioni ...
lblCloseGameSpectator=Questo chiuderà questa partita e non potrai riprendere a guardarla. \n \nChiudi comunque? lblCloseGameSpectator=Questo chiuderà questa partita e non potrai riprendere a guardarla. \n \nChiudi comunque?
lblCloseGame=Chiudi la partita? lblCloseGame=Chiudi la partita?
lblWaitingForOpponent=Aspettando l''avversario ... lblWaitingForOpponent=Aspettando l''avversario ...

View File

@@ -1411,6 +1411,7 @@ lblActionFromPlayerDeck={1}デッキから{0}
lblConcedeCurrentGame=これは現在のゲームを投了し、負けます。とにかく投了しますか? lblConcedeCurrentGame=これは現在のゲームを投了し、負けます。とにかく投了しますか?
lblConcedeTitle=ゲームを投了する? lblConcedeTitle=ゲームを投了する?
lblConcede=投了 lblConcede=投了
lblWaitingforActions=行動を待っています...
lblCloseGameSpectator=これにより、このゲームが終了し、視聴を再開できなくなります。\n\nそれでもやはり閉じますか lblCloseGameSpectator=これにより、このゲームが終了し、視聴を再開できなくなります。\n\nそれでもやはり閉じますか
lblCloseGame=ゲームを閉じる? lblCloseGame=ゲームを閉じる?
lblWaitingForOpponent=対戦相手を待っています... lblWaitingForOpponent=対戦相手を待っています...

View File

@@ -1443,6 +1443,7 @@ lblConcedeCurrentGame=Isto concede o jogo atual e você perderá.\n\
Conceder mesmo assim? Conceder mesmo assim?
lblConcedeTitle=Conceder Jogo? lblConcedeTitle=Conceder Jogo?
lblConcede=Conceder lblConcede=Conceder
lblWaitingforActions=Esperando por ações ...
lblCloseGameSpectator=Ao fechar o jogo, não será possível retornar.\n\ lblCloseGameSpectator=Ao fechar o jogo, não será possível retornar.\n\
\n\ \n\
Fechar mesmo assim? Fechar mesmo assim?

View File

@@ -1414,6 +1414,7 @@ lblActionFromPlayerDeck=从{1}的套牌{0}
lblConcedeCurrentGame=这局游戏认输。\n\n确认吗 lblConcedeCurrentGame=这局游戏认输。\n\n确认吗
lblConcedeTitle=这局游戏认输? lblConcedeTitle=这局游戏认输?
lblConcede=认输 lblConcede=认输
lblWaitingforActions=等待动作...
lblCloseGameSpectator=这将关闭游戏,你将无法继续观看它。\n\n一定要关闭吗 lblCloseGameSpectator=这将关闭游戏,你将无法继续观看它。\n\n一定要关闭吗
lblCloseGame=关闭游戏? lblCloseGame=关闭游戏?
lblWaitingForOpponent=等待对手中 lblWaitingForOpponent=等待对手中
@@ -2044,7 +2045,7 @@ lblChooseAnyNumberToPhase=选择任意要跃离的数量
lblChooseUpTo=最多选择 lblChooseUpTo=最多选择
lblSelectCardToPlay=选择要使用的牌 lblSelectCardToPlay=选择要使用的牌
#PlaneswalkEffect.java #PlaneswalkEffect.java
lblWouldYouLikeToPlaneswalk=Would you like to planeswalk?<3F><> lblWouldYouLikeToPlaneswalk=Would you like to planeswalk?<3F><>
#ProtectAllEffect.java #ProtectAllEffect.java
lblChooseAProtection=选择一个保护 lblChooseAProtection=选择一个保护
#PumpEffect.java #PumpEffect.java

View File

@@ -370,6 +370,10 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
} }
} }
if (concedeNeeded) { if (concedeNeeded) {
if (gameView.isMulligan()) { //prevent UI freezing when conceding while the game is waiting for inputs/action
showErrorDialog(Localizer.getInstance().getMessage("lblWaitingforActions"));
return false;
}
if (showConfirmDialog(Localizer.getInstance().getMessage("lblConcedeCurrentGame"), Localizer.getInstance().getMessage("lblConcedeTitle"), Localizer.getInstance().getMessage("lblConcede"), Localizer.getInstance().getMessage("lblCancel"))) { if (showConfirmDialog(Localizer.getInstance().getMessage("lblConcedeCurrentGame"), Localizer.getInstance().getMessage("lblConcedeTitle"), Localizer.getInstance().getMessage("lblConcede"), Localizer.getInstance().getMessage("lblCancel"))) {
for (final IGameController c : getOriginalGameControllers()) { for (final IGameController c : getOriginalGameControllers()) {
// Concede each player on this Gui (except mind-controlled players) // Concede each player on this Gui (except mind-controlled players)

View File

@@ -10,6 +10,7 @@ import forge.game.spellability.SpellAbility;
import forge.gui.FThreads; import forge.gui.FThreads;
import forge.player.PlayerControllerHuman; import forge.player.PlayerControllerHuman;
import forge.util.ITriggerEvent; import forge.util.ITriggerEvent;
import forge.util.Localizer;
import forge.util.ThreadUtil; import forge.util.ThreadUtil;
public class InputLockUI implements Input { public class InputLockUI implements Input {
@@ -58,7 +59,7 @@ public class InputLockUI implements Input {
@Override @Override
public void run() { public void run() {
controller.getGui().updateButtons(InputLockUI.this.getOwner(), "", "", false, false, false); controller.getGui().updateButtons(InputLockUI.this.getOwner(), "", "", false, false, false);
showMessage("Waiting for actions..."); showMessage(Localizer.getInstance().getMessage("lblWaitingforActions"));
} }
}; };