Fix block game causing server crash (#2477)
* Fix block game crashing server * fffff i just noticed * THIS is the correct property * Ignore unpause if game has not started * Init _currentPiece by BlockGame constructor
This commit is contained in:
@@ -299,6 +299,7 @@ namespace Content.Server.GameObjects.Components.Arcade
|
|||||||
_component = component;
|
_component = component;
|
||||||
_allBlockGamePieces = (BlockGamePieceType[]) Enum.GetValues(typeof(BlockGamePieceType));
|
_allBlockGamePieces = (BlockGamePieceType[]) Enum.GetValues(typeof(BlockGamePieceType));
|
||||||
_internalNextPiece = GetRandomBlockGamePiece(_component._random);
|
_internalNextPiece = GetRandomBlockGamePiece(_component._random);
|
||||||
|
InitializeNewBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendHighscoreUpdate()
|
private void SendHighscoreUpdate()
|
||||||
@@ -315,8 +316,6 @@ namespace Content.Server.GameObjects.Components.Arcade
|
|||||||
|
|
||||||
public void StartGame()
|
public void StartGame()
|
||||||
{
|
{
|
||||||
InitializeNewBlock();
|
|
||||||
|
|
||||||
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Game));
|
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Game));
|
||||||
|
|
||||||
FullUpdate();
|
FullUpdate();
|
||||||
@@ -569,10 +568,10 @@ namespace Content.Server.GameObjects.Components.Arcade
|
|||||||
break;
|
break;
|
||||||
case BlockGamePlayerAction.Pause:
|
case BlockGamePlayerAction.Pause:
|
||||||
_running = false;
|
_running = false;
|
||||||
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Pause));
|
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Pause, _started));
|
||||||
break;
|
break;
|
||||||
case BlockGamePlayerAction.Unpause:
|
case BlockGamePlayerAction.Unpause:
|
||||||
if (!_gameOver)
|
if (!_gameOver && _started)
|
||||||
{
|
{
|
||||||
_running = true;
|
_running = true;
|
||||||
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Game));
|
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Game));
|
||||||
@@ -583,7 +582,7 @@ namespace Content.Server.GameObjects.Components.Arcade
|
|||||||
break;
|
break;
|
||||||
case BlockGamePlayerAction.ShowHighscores:
|
case BlockGamePlayerAction.ShowHighscores:
|
||||||
_running = false;
|
_running = false;
|
||||||
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Highscores));
|
_component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Highscores, _started));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -654,6 +653,7 @@ namespace Content.Server.GameObjects.Components.Arcade
|
|||||||
}
|
}
|
||||||
|
|
||||||
private bool IsGameOver => _field.Any(block => block.Position.Y == 0);
|
private bool IsGameOver => _field.Any(block => block.Position.Y == 0);
|
||||||
|
|
||||||
private void InvokeGameover()
|
private void InvokeGameover()
|
||||||
{
|
{
|
||||||
_running = false;
|
_running = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user