Skip to content

Commit c676e05

Browse files
committed
fix(ui): prevent game screens from overlapping
1 parent aba8b7f commit c676e05

File tree

1 file changed

+23
-33
lines changed

1 file changed

+23
-33
lines changed

engine/src/main/java/org/destinationsol/ui/nui/screens/MainGameScreen.java

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -899,16 +899,27 @@ public UITextureRegion get() {
899899
};
900900
}
901901

902+
private void toggleScreen(NUIScreenLayer screen) {
903+
if (nuiManager.hasScreen(screen)) {
904+
nuiManager.removeScreen(screen);
905+
return;
906+
}
907+
908+
while (!(nuiManager.getTopScreen() instanceof MainGameScreen) && !(nuiManager.getTopScreen() instanceof UIShipControlsScreen)) {
909+
nuiManager.popScreen();
910+
}
911+
solApplication.getInputManager().setScreen(solApplication, solApplication.getGame().getScreens().oldMainGameScreen);
912+
nuiManager.pushScreen(screen);
913+
}
914+
902915
private void onMenuButtonClicked(UIWidget widget) {
903916
GameScreens gameScreens = solApplication.getGame().getScreens();
904-
905-
nuiManager.pushScreen(gameScreens.menuScreen);
917+
toggleScreen(gameScreens.menuScreen);
906918
}
907919

908920
private void onMapButtonClicked(UIWidget widget) {
909921
GameScreens gameScreens = solApplication.getGame().getScreens();
910-
911-
nuiManager.pushScreen(gameScreens.mapScreen);
922+
toggleScreen(gameScreens.mapScreen);
912923
}
913924

914925
private void onItemsButtonClicked(UIWidget widget) {
@@ -918,17 +929,10 @@ private void onItemsButtonClicked(UIWidget widget) {
918929
return;
919930
}
920931

921-
SolInputManager solInputManager = solApplication.getInputManager();
922932
GameScreens gameScreens = game.getScreens();
923-
924-
solInputManager.setScreen(solApplication, gameScreens.oldMainGameScreen);
925-
if (!nuiManager.hasScreen(gameScreens.inventoryScreen)) {
926-
gameScreens.inventoryScreen.getShowInventory().setTarget(hero.getShip());
927-
gameScreens.inventoryScreen.setOperations(gameScreens.inventoryScreen.getShowInventory());
928-
nuiManager.pushScreen(gameScreens.inventoryScreen);
929-
} else {
930-
nuiManager.removeScreen(gameScreens.inventoryScreen);
931-
}
933+
gameScreens.inventoryScreen.getShowInventory().setTarget(hero.getShip());
934+
gameScreens.inventoryScreen.setOperations(gameScreens.inventoryScreen.getShowInventory());
935+
toggleScreen(gameScreens.inventoryScreen);
932936
}
933937

934938
private void onTalkButtonClicked(UIWidget widget) {
@@ -937,16 +941,9 @@ private void onTalkButtonClicked(UIWidget widget) {
937941
return;
938942
}
939943

940-
SolInputManager solInputManager = solApplication.getInputManager();
941944
GameScreens gameScreens = game.getScreens();
942-
943-
solInputManager.setScreen(solApplication, gameScreens.oldMainGameScreen);
944-
if (!nuiManager.hasScreen(gameScreens.talkScreen)) {
945-
gameScreens.talkScreen.setTarget(talkTarget);
946-
nuiManager.pushScreen(gameScreens.talkScreen);
947-
} else {
948-
nuiManager.removeScreen(gameScreens.talkScreen);
949-
}
945+
gameScreens.talkScreen.setTarget(talkTarget);
946+
toggleScreen(gameScreens.talkScreen);
950947
}
951948

952949
private void onMercsButtonClicked(UIWidget widget) {
@@ -956,17 +953,10 @@ private void onMercsButtonClicked(UIWidget widget) {
956953
return;
957954
}
958955

959-
SolInputManager solInputManager = solApplication.getInputManager();
960956
GameScreens gameScreens = game.getScreens();
961-
962-
solInputManager.setScreen(solApplication, gameScreens.oldMainGameScreen);
963-
if (!nuiManager.hasScreen(gameScreens.inventoryScreen)) {
964-
gameScreens.inventoryScreen.setOperations(gameScreens.inventoryScreen.getChooseMercenaryScreen());
965-
nuiManager.pushScreen(gameScreens.inventoryScreen);
966-
hero.getMercs().markAllAsSeen();
967-
} else {
968-
nuiManager.removeScreen(gameScreens.inventoryScreen);
969-
}
957+
gameScreens.inventoryScreen.setOperations(gameScreens.inventoryScreen.getChooseMercenaryScreen());
958+
toggleScreen(gameScreens.inventoryScreen);
959+
hero.getMercs().markAllAsSeen();
970960
}
971961

972962
private final class CollisionWarnDrawerRayCastCallback implements RayCastCallback {

0 commit comments

Comments
 (0)