mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-07-10 07:47:25 +07:00
Fixed "waiting for players" being shown after PvP end
This commit is contained in:
@ -302,6 +302,11 @@ public class Logic implements ApplicationListener{
|
||||
});
|
||||
}
|
||||
|
||||
@Remote(called = Loc.both)
|
||||
public static void updateGameOver(Team winner){
|
||||
state.gameOver = true;
|
||||
}
|
||||
|
||||
@Remote(called = Loc.both)
|
||||
public static void gameOver(Team winner){
|
||||
state.stats.wavesLasted = state.wave;
|
||||
|
@ -437,13 +437,14 @@ public class NetClient implements ApplicationListener{
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
||||
public static void stateSnapshot(float waveTime, int wave, int enemies, boolean paused, short coreDataLen, byte[] coreData){
|
||||
public static void stateSnapshot(float waveTime, int wave, int enemies, boolean paused, boolean gameOver, short coreDataLen, byte[] coreData){
|
||||
try{
|
||||
if(wave > state.wave){
|
||||
state.wave = wave;
|
||||
Events.fire(new WaveEvent());
|
||||
}
|
||||
|
||||
state.gameOver = gameOver;
|
||||
state.wavetime = waveTime;
|
||||
state.wave = wave;
|
||||
state.enemies = enemies;
|
||||
|
@ -735,7 +735,7 @@ public class NetServer implements ApplicationListener{
|
||||
}
|
||||
|
||||
public boolean isWaitingForPlayers(){
|
||||
if(state.rules.pvp){
|
||||
if(state.rules.pvp && !state.gameOver){
|
||||
int used = 0;
|
||||
for(TeamData t : state.teams.getActive()){
|
||||
if(Groups.player.count(p -> p.team() == t.team) > 0){
|
||||
@ -794,7 +794,7 @@ public class NetServer implements ApplicationListener{
|
||||
if(!entity.block().sync) continue;
|
||||
sent ++;
|
||||
|
||||
dataStream.writeInt(entity.tile().pos());
|
||||
dataStream.writeInt(entity.pos());
|
||||
entity.writeAll(Writes.get(dataStream));
|
||||
|
||||
if(syncStream.size() > maxSnapshotSize){
|
||||
@ -828,7 +828,7 @@ public class NetServer implements ApplicationListener{
|
||||
byte[] stateBytes = syncStream.toByteArray();
|
||||
|
||||
//write basic state data.
|
||||
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, (short)stateBytes.length, net.compressSnapshot(stateBytes));
|
||||
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, state.gameOver, (short)stateBytes.length, net.compressSnapshot(stateBytes));
|
||||
|
||||
viewport.setSize(player.con.viewWidth, player.con.viewHeight).setCenter(player.con.viewX, player.con.viewY);
|
||||
|
||||
|
@ -41,6 +41,8 @@ public class MassDriver extends Block{
|
||||
hasItems = true;
|
||||
hasPower = true;
|
||||
outlineIcon = true;
|
||||
sync = true;
|
||||
|
||||
//point2 is relative
|
||||
config(Point2.class, (MassDriverBuild tile, Point2 point) -> tile.link = Point2.pack(point.x + tile.tileX(), point.y + tile.tileY()));
|
||||
config(Integer.class, (MassDriverBuild tile, Integer point) -> tile.link = point);
|
||||
@ -318,7 +320,7 @@ public class MassDriver extends Block{
|
||||
super.read(read, revision);
|
||||
link = read.i();
|
||||
rotation = read.f();
|
||||
state = DriverState.values()[read.b()];
|
||||
state = DriverState.all[read.b()];
|
||||
}
|
||||
}
|
||||
|
||||
@ -326,6 +328,8 @@ public class MassDriver extends Block{
|
||||
idle, //nothing is shooting at this mass driver and it does not have any target
|
||||
accepting, //currently getting shot at, unload items
|
||||
shooting,
|
||||
unloading
|
||||
unloading;
|
||||
|
||||
public static final DriverState[] all = values();
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ public class PayloadAcceptor extends Block{
|
||||
super(name);
|
||||
|
||||
update = true;
|
||||
sync = true;
|
||||
}
|
||||
|
||||
public static boolean blends(Building tile, int direction){
|
||||
|
@ -159,6 +159,9 @@ public class ServerControl implements ApplicationListener{
|
||||
+ (map.tags.containsKey("author") && !map.tags.get("author").trim().isEmpty() ? " by[accent] " + map.author() + "[white]" : "") + "." +
|
||||
"\nNew game begins in " + roundExtraTime + " seconds.");
|
||||
|
||||
state.gameOver = true;
|
||||
Call.updateGameOver(event.winner);
|
||||
|
||||
info("Selected next map to be @.", map.name());
|
||||
|
||||
play(true, () -> world.loadMap(map, map.applyRules(lastMode)));
|
||||
|
Reference in New Issue
Block a user