From 2faff4963ace75f01bcd303b4a627706ebd2cf37 Mon Sep 17 00:00:00 2001 From: zionnBE Date: Wed, 4 Nov 2020 08:08:47 +0100 Subject: [PATCH] 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 --- .../Components/Arcade/BlockGameArcadeComponent.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs index 736442f95a..b60dc31c95 100644 --- a/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs +++ b/Content.Server/GameObjects/Components/Arcade/BlockGameArcadeComponent.cs @@ -299,6 +299,7 @@ namespace Content.Server.GameObjects.Components.Arcade _component = component; _allBlockGamePieces = (BlockGamePieceType[]) Enum.GetValues(typeof(BlockGamePieceType)); _internalNextPiece = GetRandomBlockGamePiece(_component._random); + InitializeNewBlock(); } private void SendHighscoreUpdate() @@ -315,8 +316,6 @@ namespace Content.Server.GameObjects.Components.Arcade public void StartGame() { - InitializeNewBlock(); - _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Game)); FullUpdate(); @@ -569,10 +568,10 @@ namespace Content.Server.GameObjects.Components.Arcade break; case BlockGamePlayerAction.Pause: _running = false; - _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Pause)); + _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Pause, _started)); break; case BlockGamePlayerAction.Unpause: - if (!_gameOver) + if (!_gameOver && _started) { _running = true; _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Game)); @@ -583,7 +582,7 @@ namespace Content.Server.GameObjects.Components.Arcade break; case BlockGamePlayerAction.ShowHighscores: _running = false; - _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Highscores)); + _component.UserInterface?.SendMessage(new BlockGameMessages.BlockGameSetScreenMessage(BlockGameMessages.BlockGameScreen.Highscores, _started)); break; } } @@ -654,6 +653,7 @@ namespace Content.Server.GameObjects.Components.Arcade } private bool IsGameOver => _field.Any(block => block.Position.Y == 0); + private void InvokeGameover() { _running = false;