11package src ;
22
3+ import net .NetPacket .ExplodableUpdatePacket ;
34import net .TrapdoorPredictionStore ;
45import shapes .Explodable ;
56import net .ExplodablePredictionStore ;
@@ -563,10 +564,10 @@ class MarbleWorld extends Scheduler {
563564 interior .onLevelStart ();
564565 for (shape in this .dtsObjects )
565566 shape .onLevelStart ();
566- // if (this.isMultiplayer && Net.isClient)
567- // NetCommands.clientIsReady(Net.clientId);
567+ if (this .isMultiplayer && Net .isClient && ! _skipPreGame )
568+ NetCommands .clientIsReady (Net .clientId );
568569 if (this .isMultiplayer && Net .isHost ) {
569- // NetCommands.clientIsReady(-1);
570+ // NetCommands.clientIsReady(-1);
570571
571572 // Sort all the marbles so that they are updated in a deterministic order
572573 this .marbles .sort ((a , b ) -> @:privateAccess {
@@ -591,6 +592,7 @@ class MarbleWorld extends Scheduler {
591592 _skipPreGame = false ;
592593 this .setCursorLock (true );
593594 NetCommands .requestMidGameJoinState (Net .clientId );
595+ NetCommands .clientIsReady (Net .clientId );
594596 }
595597 }
596598 this .gameMode .onMissionLoad ();
@@ -1417,7 +1419,11 @@ class MarbleWorld extends Scheduler {
14171419 // Marble states
14181420 for (marb in this .marbles ) {
14191421 var oldFlags = @:privateAccess marb .netFlags ;
1420- @:privateAccess marb .netFlags = MarbleNetFlags . DoBlast | MarbleNetFlags . DoMega | MarbleNetFlags . DoHelicopter | MarbleNetFlags . PickupPowerup | MarbleNetFlags . GravityChange | MarbleNetFlags . UsePowerup ;
1422+ @:privateAccess marb .netFlags = MarbleNetFlags . DoBlast | MarbleNetFlags . DoMega | MarbleNetFlags . DoHelicopter | MarbleNetFlags . DoShockAbsorber | MarbleNetFlags . DoSuperBounce | MarbleNetFlags . PickupPowerup | MarbleNetFlags . GravityChange | MarbleNetFlags . UsePowerup ;
1423+
1424+ if (oldFlags & MarbleNetFlags . UpdateTrapdoor > 0 ) {
1425+ @:privateAccess marb .netFlags | = MarbleNetFlags . UpdateTrapdoor ;
1426+ }
14211427
14221428 var innerMove = @:privateAccess marb .lastMove ;
14231429 if (innerMove == null ) {
@@ -1452,6 +1458,19 @@ class MarbleWorld extends Scheduler {
14521458 }
14531459 }
14541460
1461+ // Explosion states
1462+ for (exp in this .explodables ) {
1463+ if (this .timeState .ticks < (exp .lastContactTick + exp .renewTime >> 5 )) {
1464+ var b = new OutputBitStream ();
1465+ b .writeByte (NetPacketType . ExplodableUpdate );
1466+ var explPacket = new ExplodableUpdatePacket ();
1467+ explPacket .explodableId = exp .netId ;
1468+ explPacket .serverTicks = timeState .ticks ;
1469+ explPacket .serialize (b );
1470+ packets .push (b .getBytes ());
1471+ }
1472+ }
1473+
14551474 // Scoreboard!
14561475 var b = new OutputBitStream ();
14571476 b .writeByte (NetPacketType . ScoreBoardInfo );
0 commit comments