Files
Mindustry/core/src/mindustry/net/WorldReloader.java
Даркнесс#3729 61e9ffb7e8 Fix WorldReloader (#7701)
* Fix WorldReloader

* horrible if

* Update WorldReloader.java

Co-authored-by: Anuken <arnukren@gmail.com>
2022-10-12 09:50:07 -04:00

62 lines
1.6 KiB
Java

package mindustry.net;
import arc.struct.*;
import arc.struct.Seq.*;
import mindustry.gen.*;
import static mindustry.Vars.*;
/** Handles player state for sending to every connected player*/
public class WorldReloader{
Seq<Player> players = new Seq<>();
boolean wasServer = false;
boolean began = false;
/** Begins reloading the world. Sends world begin packets to each user and stores player state.
* If the current client is not a server, this resets state and disconnects. */
public void begin(){
//don't begin twice
if(began) return;
if(wasServer = net.server()){
players.clear();
for(Player p : Groups.player){
if(p.isLocal()) continue;
players.add(p);
p.clearUnit();
}
logic.reset();
Call.worldDataBegin();
}else{
if(net.client()){
net.reset();
}
logic.reset();
}
began = true;
}
/** Ends reloading the world. Sends world data to each player.
* If the current client was not a server, does nothing.*/
public void end(){
if(wasServer){
for(Player p : players){
if(p.con == null) continue;
boolean wasAdmin = p.admin;
p.reset();
p.admin = wasAdmin;
if(state.rules.pvp){
p.team(netServer.assignTeam(p, new SeqIterable<>(players)));
}
netServer.sendWorldData(p);
}
}
}
}