Skip to content

Commit efef167

Browse files
committed
Notify about game closing; provide small fixes
1 parent 2aca3fa commit efef167

File tree

8 files changed

+56
-10
lines changed

8 files changed

+56
-10
lines changed

src/SICore/SICore/Clients/Game/Game.cs

+19-10
Original file line numberDiff line numberDiff line change
@@ -2812,20 +2812,29 @@ private void DropPlayerFromThemeDeleters(int playerIndex)
28122812

28132813
themeDeleters.RemoveAt(playerIndex);
28142814

2815-
if (ClientData.Decision == DecisionType.NextPersonFinalThemeDeleting && !themeDeleters.IsEmpty())
2815+
if (ClientData.Decision == DecisionType.NextPersonFinalThemeDeleting)
28162816
{
2817-
var indicies = themeDeleters.Current.PossibleIndicies;
2818-
var hasAnyFlag = false;
2819-
2820-
for (var i = 0; i < ClientData.Players.Count; i++)
2817+
if (themeDeleters.IsEmpty())
28212818
{
2822-
ClientData.Players[i].Flag = indicies.Contains(i);
2823-
hasAnyFlag = true;
2819+
_logic.StopWaiting();
2820+
ClientData.MoveDirection = MoveDirections.RoundNext;
2821+
_logic.Stop(StopReason.Move);
28242822
}
2825-
2826-
if (!hasAnyFlag)
2823+
else
28272824
{
2828-
_logic.PlanExecution(Tasks.AskToDelete, 10);
2825+
var indicies = themeDeleters.Current.PossibleIndicies;
2826+
var hasAnyFlag = false;
2827+
2828+
for (var i = 0; i < ClientData.Players.Count; i++)
2829+
{
2830+
ClientData.Players[i].Flag = indicies.Contains(i);
2831+
hasAnyFlag = true;
2832+
}
2833+
2834+
if (!hasAnyFlag)
2835+
{
2836+
_logic.PlanExecution(Tasks.AskToDelete, 10);
2837+
}
28292838
}
28302839
}
28312840
}

src/SICore/SICore/Clients/Game/GameLogic.cs

+5
Original file line numberDiff line numberDiff line change
@@ -2272,6 +2272,11 @@ private void WaitNext(bool isSelectingStaker)
22722272
_gameActions.SendMessage(Messages.Cancel, _data.ShowMan.Name);
22732273
_gameActions.SendMessageWithArgs(Messages.Timer, 2, MessageParams.Timer_Stop);
22742274

2275+
if (!isSelectingStaker && _data.ThemeDeleters != null && _data.ThemeDeleters.IsEmpty())
2276+
{
2277+
throw new InvalidOperationException("_data.ThemeDeleters are empty");
2278+
}
2279+
22752280
var playerIndex = isSelectingStaker ? _data.Order[_data.OrderIndex] : _data.ThemeDeleters?.Current.PlayerIndex;
22762281

22772282
if (playerIndex == -1) // The showman has not made a decision

src/SICore/SICore/Clients/Viewer/IViewerLogic.cs

+5
Original file line numberDiff line numberDiff line change
@@ -271,4 +271,9 @@ void OnQuestionSelected() { }
271271
/// Handles player answering outcome.
272272
/// </summary>
273273
void OnPlayerOutcome(int playerIndex, bool isRight);
274+
275+
/// <summary>
276+
/// Handles game closing.
277+
/// </summary>
278+
void OnGameClosed() { }
274279
}

src/SICore/SICore/Clients/Viewer/Viewer.cs

+6
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,12 @@ await _client.Node.ConnectionsLock.WithLockAsync(() =>
243243
break;
244244
}
245245

246+
case SystemMessages.GameClosed:
247+
{
248+
_logic.OnGameClosed();
249+
break;
250+
}
251+
246252
case Messages.Disconnected:
247253
await OnDisconnectedAsync(mparams);
248254
break;

src/SIGame/SIGame.ViewModel/Properties/Resources.Designer.cs

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/SIGame/SIGame.ViewModel/Properties/Resources.resx

+3
Original file line numberDiff line numberDiff line change
@@ -579,4 +579,7 @@
579579
<data name="QuestionTypeWithButton" xml:space="preserve">
580580
<value>Question with button</value>
581581
</data>
582+
<data name="GameClosedMessage" xml:space="preserve">
583+
<value>Game closed by server due to inactivity </value>
584+
</data>
582585
</root>

src/SIGame/SIGame.ViewModel/Properties/Resources.ru-RU.resx

+3
Original file line numberDiff line numberDiff line change
@@ -576,4 +576,7 @@
576576
<data name="QuestionTypeWithButton" xml:space="preserve">
577577
<value>Вопрос с кнопкой</value>
578578
</data>
579+
<data name="GameClosedMessage" xml:space="preserve">
580+
<value>Игра завершена сервером по причине неактивности</value>
581+
</data>
579582
</root>

src/SIGame/SIGame.ViewModel/ViewModel/Logic/ViewerHumanLogic.cs

+6
Original file line numberDiff line numberDiff line change
@@ -1844,4 +1844,10 @@ public void Report()
18441844
_gameViewModel.DialogMode = DialogModes.Report;
18451845
_data.Host.OnFlash();
18461846
}
1847+
1848+
public void OnGameClosed()
1849+
{
1850+
PlatformManager.Instance.ShowMessage(Resources.GameClosedMessage, MessageType.Warning, true);
1851+
OnReplic(ReplicCodes.Special.ToString(), Resources.GameClosedMessage);
1852+
}
18471853
}

0 commit comments

Comments
 (0)