mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
fix part where client loads earlier than host
This commit is contained in:
parent
f23c0eb203
commit
1fe7736d4d
3 changed files with 17 additions and 8 deletions
|
|
@ -523,6 +523,9 @@ class MarbleWorld extends Scheduler {
|
|||
shape.onLevelStart();
|
||||
if (this.isMultiplayer && Net.isClient)
|
||||
NetCommands.clientIsReady(Net.clientId);
|
||||
if (this.isMultiplayer && Net.isHost) {
|
||||
NetCommands.clientIsReady(-1);
|
||||
}
|
||||
var cc = 0;
|
||||
for (client in Net.clients)
|
||||
cc++;
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ class Net {
|
|||
|
||||
public static var lobbyHostReady:Bool;
|
||||
public static var lobbyClientReady:Bool;
|
||||
public static var hostReady:Bool;
|
||||
|
||||
public static var clientId:Int;
|
||||
public static var networkRNG:Float;
|
||||
|
|
@ -354,6 +355,7 @@ class Net {
|
|||
Net.remoteServerInfo = null;
|
||||
Net.lobbyHostReady = false;
|
||||
Net.lobbyClientReady = false;
|
||||
Net.hostReady = false;
|
||||
}
|
||||
if (Net.isHost) {
|
||||
NetCommands.serverClosed();
|
||||
|
|
@ -371,6 +373,7 @@ class Net {
|
|||
Net.remoteServerInfo = null;
|
||||
Net.lobbyHostReady = false;
|
||||
Net.lobbyClientReady = false;
|
||||
Net.hostReady = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,10 @@ class NetCommands {
|
|||
@:rpc(client) public static function clientIsReady(clientId:Int) {
|
||||
if (Net.isHost) {
|
||||
if (Net.serverInfo.state == "WAITING" && MarbleGame.instance.world != null) {
|
||||
Net.clientIdMap[clientId].ready();
|
||||
if (clientId != -1)
|
||||
Net.clientIdMap[clientId].ready();
|
||||
else
|
||||
Net.hostReady = true;
|
||||
var allReady = true;
|
||||
for (id => client in Net.clientIdMap) {
|
||||
if (client.state != GameplayState.GAME) {
|
||||
|
|
@ -93,12 +96,10 @@ class NetCommands {
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (allReady) {
|
||||
if (allReady && Net.hostReady) {
|
||||
if (MarbleGame.instance.world != null) {
|
||||
MarbleGame.instance.world.allClientsReady();
|
||||
}
|
||||
}
|
||||
if (Net.isHost) {
|
||||
Net.serverInfo.state = "PLAYING";
|
||||
MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state
|
||||
}
|
||||
|
|
@ -147,6 +148,9 @@ class NetCommands {
|
|||
@:rpc(server) public static function setStartTicks(ticks:Int) {
|
||||
if (MarbleGame.instance.world != null) {
|
||||
MarbleGame.instance.world.serverStartTicks = ticks + 1; // Extra tick so we don't get 0
|
||||
if (Net.isClient) {
|
||||
@:privateAccess MarbleGame.instance.world.marble.serverTicks = ticks;
|
||||
}
|
||||
MarbleGame.instance.world.startTime = MarbleGame.instance.world.timeState.timeSinceLoad + 3.5 + 0.032; // 1 extra tick
|
||||
}
|
||||
}
|
||||
|
|
@ -245,11 +249,10 @@ class NetCommands {
|
|||
}
|
||||
if (Net.isHost) {
|
||||
Net.lobbyHostReady = false;
|
||||
Net.hostReady = false;
|
||||
|
||||
if (Net.isHost) {
|
||||
Net.serverInfo.state = "LOBBY";
|
||||
MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state
|
||||
}
|
||||
Net.serverInfo.state = "LOBBY";
|
||||
MasterServerClient.instance.sendServerInfo(Net.serverInfo); // notify the server of the playing state
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue