Removed serverPaused
This commit is contained in:
@@ -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(){
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user