mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
fix few nulls
This commit is contained in:
parent
ca6991e495
commit
eaea583c2c
3 changed files with 65 additions and 24 deletions
|
|
@ -1142,15 +1142,17 @@ class MarbleWorld extends Scheduler {
|
|||
var packet = new GemSpawnPacket();
|
||||
|
||||
var hunt = cast(this.gameMode, HuntMode);
|
||||
var activeGemIds = [];
|
||||
for (gemId in @:privateAccess hunt.activeGemSpawnGroup) {
|
||||
if (@:privateAccess hunt.gemSpawnPoints[gemId].gem != null && @:privateAccess !hunt.gemSpawnPoints[gemId].gem.pickedUp) {
|
||||
activeGemIds.push(gemId);
|
||||
if (@:privateAccess hunt.activeGemSpawnGroup != null) {
|
||||
var activeGemIds = [];
|
||||
for (gemId in @:privateAccess hunt.activeGemSpawnGroup) {
|
||||
if (@:privateAccess hunt.gemSpawnPoints[gemId].gem != null && @:privateAccess !hunt.gemSpawnPoints[gemId].gem.pickedUp) {
|
||||
activeGemIds.push(gemId);
|
||||
}
|
||||
}
|
||||
packet.gemIds = activeGemIds;
|
||||
packet.serialize(bs);
|
||||
packets.push(bs.getBytes());
|
||||
}
|
||||
packet.gemIds = activeGemIds;
|
||||
packet.serialize(bs);
|
||||
packets.push(bs.getBytes());
|
||||
|
||||
// Marble states
|
||||
for (marb in this.marbles) {
|
||||
|
|
|
|||
|
|
@ -290,7 +290,9 @@ class Net {
|
|||
if (!Net.isMP)
|
||||
return;
|
||||
static var accum = 0.0;
|
||||
static var wsAccum = 0.0;
|
||||
accum += dt;
|
||||
wsAccum += dt;
|
||||
if (accum > 1.0) {
|
||||
accum = 0;
|
||||
var t = Console.time();
|
||||
|
|
@ -312,11 +314,25 @@ class Net {
|
|||
}
|
||||
if (Net.isClient) {
|
||||
disconnect();
|
||||
if (MarbleGame.instance.world != null) {
|
||||
MarbleGame.instance.quitMission();
|
||||
}
|
||||
if (!(MarbleGame.canvas.content is MultiplayerLoadingGui)) {
|
||||
var loadGui = new MultiplayerLoadingGui("Timed out");
|
||||
MarbleGame.canvas.setContent(loadGui);
|
||||
loadGui.setErrorStatus("Timed out");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wsAccum >= 20.0) {
|
||||
wsAccum = 0;
|
||||
if (Net.isHost) {
|
||||
MasterServerClient.instance.sendServerInfo(serverInfo); // Heartbeat
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static function onClientConnect(c:RTCPeerConnection, dc:RTCDataChannel, dcu:RTCDataChannel) {
|
||||
|
|
@ -521,23 +537,25 @@ class Net {
|
|||
var marbleUpdatePacket = new MarbleUpdatePacket();
|
||||
marbleUpdatePacket.deserialize(input);
|
||||
var cc = marbleUpdatePacket.clientId;
|
||||
if (MarbleGame.instance.world != null) {
|
||||
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||
var m = MarbleGame.instance.world.lastMoves;
|
||||
m.enqueue(marbleUpdatePacket);
|
||||
}
|
||||
|
||||
case MarbleMove:
|
||||
var movePacket = new MarbleMovePacket();
|
||||
movePacket.deserialize(input);
|
||||
var cc = clientIdMap[movePacket.clientId];
|
||||
if (cc.state == GAME)
|
||||
for (move in movePacket.moves)
|
||||
cc.queueMove(move);
|
||||
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||
var movePacket = new MarbleMovePacket();
|
||||
movePacket.deserialize(input);
|
||||
var cc = clientIdMap[movePacket.clientId];
|
||||
if (cc.state == GAME)
|
||||
for (move in movePacket.moves)
|
||||
cc.queueMove(move);
|
||||
}
|
||||
|
||||
case PowerupPickup:
|
||||
var powerupPickupPacket = new PowerupPickupPacket();
|
||||
powerupPickupPacket.deserialize(input);
|
||||
if (MarbleGame.instance.world != null) {
|
||||
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||
var m = @:privateAccess MarbleGame.instance.world.powerupPredictions;
|
||||
m.acknowledgePowerupPickup(powerupPickupPacket, MarbleGame.instance.world.timeState, clientConnection.moveManager.getQueueSize());
|
||||
}
|
||||
|
|
@ -545,7 +563,7 @@ class Net {
|
|||
case GemSpawn:
|
||||
var gemSpawnPacket = new GemSpawnPacket();
|
||||
gemSpawnPacket.deserialize(input);
|
||||
if (MarbleGame.instance.world != null) {
|
||||
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||
MarbleGame.instance.world.spawnHuntGemsClientSide(gemSpawnPacket.gemIds);
|
||||
@:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemSpawn(gemSpawnPacket);
|
||||
}
|
||||
|
|
@ -553,7 +571,7 @@ class Net {
|
|||
case GemPickup:
|
||||
var gemPickupPacket = new GemPickupPacket();
|
||||
gemPickupPacket.deserialize(input);
|
||||
if (MarbleGame.instance.world != null) {
|
||||
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||
@:privateAccess MarbleGame.instance.world.playGui.incrementPlayerScore(gemPickupPacket.clientId, gemPickupPacket.scoreIncr);
|
||||
@:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemPickup(gemPickupPacket);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,14 +106,32 @@ class NetCommands {
|
|||
// Mid game join
|
||||
Console.log("Mid game join for client " + clientId);
|
||||
// Send em our present world state
|
||||
var packets = MarbleGame.instance.world.getWorldStateForClientJoin();
|
||||
var c = Net.clientIdMap[clientId];
|
||||
for (packet in packets) {
|
||||
c.sendBytes(packet);
|
||||
if (MarbleGame.instance.world != null) {
|
||||
var packets = MarbleGame.instance.world.getWorldStateForClientJoin();
|
||||
var c = Net.clientIdMap[clientId];
|
||||
for (packet in packets) {
|
||||
c.sendBytes(packet);
|
||||
}
|
||||
Net.clientIdMap[clientId].ready();
|
||||
|
||||
if (MarbleGame.instance.world.serverStartTicks == 0) {
|
||||
var allReady = true;
|
||||
for (id => client in Net.clientIdMap) {
|
||||
if (client.state != GameplayState.GAME) {
|
||||
allReady = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (allReady) {
|
||||
if (MarbleGame.instance.world != null) {
|
||||
MarbleGame.instance.world.allClientsReady();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Send the start ticks
|
||||
NetCommands.setStartTicksMidJoinClient(c, MarbleGame.instance.world.serverStartTicks, MarbleGame.instance.world.timeState.ticks);
|
||||
}
|
||||
}
|
||||
Net.clientIdMap[clientId].ready();
|
||||
// Send the start ticks
|
||||
NetCommands.setStartTicksMidJoinClient(c, MarbleGame.instance.world.serverStartTicks, MarbleGame.instance.world.timeState.ticks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -143,6 +161,9 @@ class NetCommands {
|
|||
|
||||
@:rpc(server) public static function timerRanOut() {
|
||||
if (Net.isClient && MarbleGame.instance.world != null) {
|
||||
if (MarbleGame.instance.paused) {
|
||||
MarbleGame.instance.handlePauseGame(); // Unpause
|
||||
}
|
||||
var huntMode:HuntMode = cast MarbleGame.instance.world.gameMode;
|
||||
huntMode.onTimeExpire();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue