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:
zionnBE
2020-11-04 08:08:47 +01:00
committed by GitHub
parent 1444074b24
commit 2faff4963a

View File

@@ -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;