@@ -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