Removed serverPaused

This commit is contained in:
Anuken
2022-11-01 08:47:00 -04:00
parent bc2664994e
commit 7f37b97861
7 changed files with 37 additions and 25 deletions

View File

@@ -269,6 +269,9 @@ public class Control implements ApplicationListener, Loadable{
Events.on(SaveWriteEvent.class, e -> forcePlaceAll());
Events.on(HostEvent.class, e -> forcePlaceAll());
Events.on(HostEvent.class, e -> {
state.set(State.playing);
});
}
private void forcePlaceAll(){

View File

@@ -24,8 +24,6 @@ public class GameState{
public boolean gameOver = false;
/** Whether the player's team won the match. */
public boolean won = false;
/** If true, the server has been put into the paused state on multiplayer. This is synced. */
public boolean serverPaused = false;
/** Server ticks/second. Only valid in multiplayer. */
public int serverTps = -1;
/** Map that is currently being played on. */
@@ -51,12 +49,8 @@ public class GameState{
}
public void set(State astate){
//horrible horrible horrible
if(astate == State.paused && net.server() && !headless) serverPaused = true;
if(astate != State.paused && net.server() && !headless) serverPaused = false;
//cannot pause when in multiplayer
if(astate == State.paused && net.active()) return;
//nothing to change.
if(state == astate) return;
Events.fire(new StateChangeEvent(state, astate));
state = astate;
@@ -88,7 +82,7 @@ public class GameState{
}
public boolean isPaused(){
return (is(State.paused) && !net.active()) || (serverPaused && !isMenu());
return is(State.paused);
}
public boolean isPlaying(){

View File

@@ -488,7 +488,9 @@ public class NetClient implements ApplicationListener{
state.wavetime = waveTime;
state.wave = wave;
state.enemies = enemies;
state.serverPaused = paused;
if(!state.isMenu()){
state.set(paused ? State.paused : State.playing);
}
state.serverTps = tps & 0xff;
//note that this is far from a guarantee that random state is synced - tiny changes in delta and ping can throw everything off again.

View File

@@ -96,7 +96,7 @@ public class NetServer implements ApplicationListener{
}
};
private boolean closing = false;
private boolean closing = false, pvpAutoPaused = true;
private Interval timer = new Interval(10);
private IntSet buildHealthChanged = new IntSet();
@@ -862,7 +862,18 @@ public class NetServer implements ApplicationListener{
if(state.isGame() && net.server()){
if(state.rules.pvp){
state.serverPaused = isWaitingForPlayers();
boolean waiting = isWaitingForPlayers(), paused = state.isPaused();
if(waiting != paused){
if(waiting){
//is now waiting, enable pausing, flag it correctly
pvpAutoPaused = true;
state.set(State.paused);
}else if(pvpAutoPaused){
//no longer waiting, stop pausing
state.set(State.playing);
pvpAutoPaused = false;
}
}
}
sync();
@@ -941,7 +952,7 @@ public class NetServer implements ApplicationListener{
dataStream.close();
//write basic state data.
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, state.gameOver,
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.isPaused(), state.gameOver,
universe.seconds(), tps, GlobalVars.rand.seed0, GlobalVars.rand.seed1, syncStream.toByteArray());
syncStream.reset();

View File

@@ -116,13 +116,13 @@ public class LogicDialog extends BaseDialog{
buttons.button("@variables", Icon.menu, () -> {
BaseDialog dialog = new BaseDialog("@variables");
dialog.hidden(() -> {
if(!wasPaused){
if(!wasPaused && !net.active()){
state.set(State.paused);
}
});
dialog.shown(() -> {
if(!wasPaused){
if(!wasPaused && !net.active()){
state.set(State.playing);
}
});

View File

@@ -24,10 +24,8 @@ public class BaseDialog extends Dialog{
.growX().height(3f).pad(4f);
hidden(() -> {
if(shouldPause && state.isGame() && !net.active()){
if(!wasPaused || net.active()){
state.set(State.playing);
}
if(shouldPause && state.isGame() && !net.active() && !wasPaused){
state.set(State.playing);
}
Sounds.back.play();
});