From 6aeeb23d7c2f2712a4003e6566c91f17df308c5a Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 31 Oct 2022 20:19:39 -0400 Subject: [PATCH] Experimental multiplayer pausing variable --- core/src/mindustry/Vars.java | 2 ++ core/src/mindustry/core/Control.java | 4 ++-- core/src/mindustry/core/GameState.java | 6 +++++- core/src/mindustry/ui/dialogs/BaseDialog.java | 4 ++-- core/src/mindustry/ui/fragments/HudFragment.java | 4 ++-- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 4abe276b01..216dba2c3d 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -115,6 +115,8 @@ public class Vars implements Loadable{ public static final float iconXLarge = 8*6f, iconLarge = 8*5f, iconMed = 8*4f, iconSmall = 8*3f; /** for map generator dialog */ public static boolean updateEditorOnChange = false; + /** Experimental flag for multiplayer pausing. DO NOT USE YET! */ + public static boolean multiplayerPausing = false; /** all choosable player colors in join/host dialog */ public static final Color[] playerColors = { Color.valueOf("82759a"), diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 98e0841acd..933d37ccf3 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -638,12 +638,12 @@ public class Control implements ApplicationListener, Loadable{ } //cannot launch while paused - if(state.is(State.paused) && renderer.isCutscene()){ + if(state.isPaused() && renderer.isCutscene()){ state.set(State.playing); } if(Core.input.keyTap(Binding.pause) && !renderer.isCutscene() && !scene.hasDialog() && !scene.hasKeyboard() && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){ - state.set(state.is(State.playing) ? State.paused : State.playing); + state.set(state.isPaused() ? State.playing : State.paused); } if(Core.input.keyTap(Binding.menu) && !ui.restart.isShown() && !ui.minimapfrag.shown()){ diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index be9e3b7e16..0df3b4573d 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -51,8 +51,12 @@ public class GameState{ } public void set(State astate){ + //horrible horrible horrible + if(astate == State.paused && net.active() && multiplayerPausing) serverPaused = true; + if(astate != State.paused && net.active() && multiplayerPausing) serverPaused = false; + //cannot pause when in multiplayer - if(astate == State.paused && net.active()) return; + if(astate == State.paused && (net.active())) return; Events.fire(new StateChangeEvent(state, astate)); state = astate; diff --git a/core/src/mindustry/ui/dialogs/BaseDialog.java b/core/src/mindustry/ui/dialogs/BaseDialog.java index 7f55222895..99c761eeb4 100644 --- a/core/src/mindustry/ui/dialogs/BaseDialog.java +++ b/core/src/mindustry/ui/dialogs/BaseDialog.java @@ -24,7 +24,7 @@ public class BaseDialog extends Dialog{ .growX().height(3f).pad(4f); hidden(() -> { - if(shouldPause && state.isGame()){ + if(shouldPause && state.isGame() && !net.active()){ if(!wasPaused || net.active()){ state.set(State.playing); } @@ -33,7 +33,7 @@ public class BaseDialog extends Dialog{ }); shown(() -> { - if(shouldPause && state.isGame()){ + if(shouldPause && state.isGame() && !net.active()){ wasPaused = state.is(State.paused); state.set(State.paused); } diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 4e0ffdd302..5061861bdb 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -147,14 +147,14 @@ public class HudFragment{ if(net.active()){ ui.listfrag.toggle(); }else{ - state.set(state.is(State.paused) ? State.playing : State.paused); + state.set(state.isPaused() ? State.playing : State.paused); } }).name("pause").update(i -> { if(net.active()){ i.getStyle().imageUp = Icon.players; }else{ i.setDisabled(false); - i.getStyle().imageUp = state.is(State.paused) ? Icon.play : Icon.pause; + i.getStyle().imageUp = state.isPaused() ? Icon.play : Icon.pause; } });