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 packet = new GemSpawnPacket();
|
||||||
|
|
||||||
var hunt = cast(this.gameMode, HuntMode);
|
var hunt = cast(this.gameMode, HuntMode);
|
||||||
var activeGemIds = [];
|
if (@:privateAccess hunt.activeGemSpawnGroup != null) {
|
||||||
for (gemId in @:privateAccess hunt.activeGemSpawnGroup) {
|
var activeGemIds = [];
|
||||||
if (@:privateAccess hunt.gemSpawnPoints[gemId].gem != null && @:privateAccess !hunt.gemSpawnPoints[gemId].gem.pickedUp) {
|
for (gemId in @:privateAccess hunt.activeGemSpawnGroup) {
|
||||||
activeGemIds.push(gemId);
|
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
|
// Marble states
|
||||||
for (marb in this.marbles) {
|
for (marb in this.marbles) {
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,9 @@ class Net {
|
||||||
if (!Net.isMP)
|
if (!Net.isMP)
|
||||||
return;
|
return;
|
||||||
static var accum = 0.0;
|
static var accum = 0.0;
|
||||||
|
static var wsAccum = 0.0;
|
||||||
accum += dt;
|
accum += dt;
|
||||||
|
wsAccum += dt;
|
||||||
if (accum > 1.0) {
|
if (accum > 1.0) {
|
||||||
accum = 0;
|
accum = 0;
|
||||||
var t = Console.time();
|
var t = Console.time();
|
||||||
|
|
@ -312,11 +314,25 @@ class Net {
|
||||||
}
|
}
|
||||||
if (Net.isClient) {
|
if (Net.isClient) {
|
||||||
disconnect();
|
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) {
|
static function onClientConnect(c:RTCPeerConnection, dc:RTCDataChannel, dcu:RTCDataChannel) {
|
||||||
|
|
@ -521,23 +537,25 @@ class Net {
|
||||||
var marbleUpdatePacket = new MarbleUpdatePacket();
|
var marbleUpdatePacket = new MarbleUpdatePacket();
|
||||||
marbleUpdatePacket.deserialize(input);
|
marbleUpdatePacket.deserialize(input);
|
||||||
var cc = marbleUpdatePacket.clientId;
|
var cc = marbleUpdatePacket.clientId;
|
||||||
if (MarbleGame.instance.world != null) {
|
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||||
var m = MarbleGame.instance.world.lastMoves;
|
var m = MarbleGame.instance.world.lastMoves;
|
||||||
m.enqueue(marbleUpdatePacket);
|
m.enqueue(marbleUpdatePacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
case MarbleMove:
|
case MarbleMove:
|
||||||
var movePacket = new MarbleMovePacket();
|
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||||
movePacket.deserialize(input);
|
var movePacket = new MarbleMovePacket();
|
||||||
var cc = clientIdMap[movePacket.clientId];
|
movePacket.deserialize(input);
|
||||||
if (cc.state == GAME)
|
var cc = clientIdMap[movePacket.clientId];
|
||||||
for (move in movePacket.moves)
|
if (cc.state == GAME)
|
||||||
cc.queueMove(move);
|
for (move in movePacket.moves)
|
||||||
|
cc.queueMove(move);
|
||||||
|
}
|
||||||
|
|
||||||
case PowerupPickup:
|
case PowerupPickup:
|
||||||
var powerupPickupPacket = new PowerupPickupPacket();
|
var powerupPickupPacket = new PowerupPickupPacket();
|
||||||
powerupPickupPacket.deserialize(input);
|
powerupPickupPacket.deserialize(input);
|
||||||
if (MarbleGame.instance.world != null) {
|
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||||
var m = @:privateAccess MarbleGame.instance.world.powerupPredictions;
|
var m = @:privateAccess MarbleGame.instance.world.powerupPredictions;
|
||||||
m.acknowledgePowerupPickup(powerupPickupPacket, MarbleGame.instance.world.timeState, clientConnection.moveManager.getQueueSize());
|
m.acknowledgePowerupPickup(powerupPickupPacket, MarbleGame.instance.world.timeState, clientConnection.moveManager.getQueueSize());
|
||||||
}
|
}
|
||||||
|
|
@ -545,7 +563,7 @@ class Net {
|
||||||
case GemSpawn:
|
case GemSpawn:
|
||||||
var gemSpawnPacket = new GemSpawnPacket();
|
var gemSpawnPacket = new GemSpawnPacket();
|
||||||
gemSpawnPacket.deserialize(input);
|
gemSpawnPacket.deserialize(input);
|
||||||
if (MarbleGame.instance.world != null) {
|
if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) {
|
||||||
MarbleGame.instance.world.spawnHuntGemsClientSide(gemSpawnPacket.gemIds);
|
MarbleGame.instance.world.spawnHuntGemsClientSide(gemSpawnPacket.gemIds);
|
||||||
@:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemSpawn(gemSpawnPacket);
|
@:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemSpawn(gemSpawnPacket);
|
||||||
}
|
}
|
||||||
|
|
@ -553,7 +571,7 @@ class Net {
|
||||||
case GemPickup:
|
case GemPickup:
|
||||||
var gemPickupPacket = new GemPickupPacket();
|
var gemPickupPacket = new GemPickupPacket();
|
||||||
gemPickupPacket.deserialize(input);
|
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.playGui.incrementPlayerScore(gemPickupPacket.clientId, gemPickupPacket.scoreIncr);
|
||||||
@:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemPickup(gemPickupPacket);
|
@:privateAccess MarbleGame.instance.world.gemPredictions.acknowledgeGemPickup(gemPickupPacket);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,14 +106,32 @@ class NetCommands {
|
||||||
// Mid game join
|
// Mid game join
|
||||||
Console.log("Mid game join for client " + clientId);
|
Console.log("Mid game join for client " + clientId);
|
||||||
// Send em our present world state
|
// Send em our present world state
|
||||||
var packets = MarbleGame.instance.world.getWorldStateForClientJoin();
|
if (MarbleGame.instance.world != null) {
|
||||||
var c = Net.clientIdMap[clientId];
|
var packets = MarbleGame.instance.world.getWorldStateForClientJoin();
|
||||||
for (packet in packets) {
|
var c = Net.clientIdMap[clientId];
|
||||||
c.sendBytes(packet);
|
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() {
|
@:rpc(server) public static function timerRanOut() {
|
||||||
if (Net.isClient && MarbleGame.instance.world != null) {
|
if (Net.isClient && MarbleGame.instance.world != null) {
|
||||||
|
if (MarbleGame.instance.paused) {
|
||||||
|
MarbleGame.instance.handlePauseGame(); // Unpause
|
||||||
|
}
|
||||||
var huntMode:HuntMode = cast MarbleGame.instance.world.gameMode;
|
var huntMode:HuntMode = cast MarbleGame.instance.world.gameMode;
|
||||||
huntMode.onTimeExpire();
|
huntMode.onTimeExpire();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue