Move force pausing to EndGame method
This commit is contained in:
committed by
Matthias Mailänder
parent
19613ed833
commit
20a16ad5f8
@@ -182,7 +182,7 @@ namespace OpenRA.Network
|
||||
var pause = order.TargetString == "Pause";
|
||||
|
||||
// Prevent injected unpause orders from restarting a finished game
|
||||
if (orderManager.World.PauseStateLocked && !pause)
|
||||
if (orderManager.World.IsGameOver && !pause)
|
||||
break;
|
||||
|
||||
if (orderManager.World.Paused != pause && world != null && world.LobbyInfo.NonBotClients.Count() > 1)
|
||||
|
||||
@@ -223,12 +223,7 @@ namespace OpenRA.Scripting
|
||||
|
||||
FatalErrorOccurred = true;
|
||||
|
||||
World.AddFrameEndTask(w =>
|
||||
{
|
||||
World.EndGame();
|
||||
World.SetPauseState(true);
|
||||
World.PauseStateLocked = true;
|
||||
});
|
||||
World.AddFrameEndTask(w => World.EndGame());
|
||||
}
|
||||
|
||||
public void RegisterMapActor(string name, Actor a)
|
||||
|
||||
@@ -68,15 +68,19 @@ namespace OpenRA
|
||||
public Player LocalPlayer { get; private set; }
|
||||
|
||||
public event Action GameOver = () => { };
|
||||
|
||||
/// <Remarks> Should only be set in <see cref="EndGame"/></Remarks>
|
||||
public bool IsGameOver { get; private set; }
|
||||
public void EndGame()
|
||||
{
|
||||
if (!IsGameOver)
|
||||
{
|
||||
SetPauseState(true);
|
||||
IsGameOver = true;
|
||||
|
||||
foreach (var t in WorldActor.TraitsImplementing<IGameOver>())
|
||||
t.GameOver(this);
|
||||
|
||||
gameInfo.FinalGameTick = WorldTick;
|
||||
GameOver();
|
||||
}
|
||||
@@ -381,7 +385,6 @@ namespace OpenRA
|
||||
|
||||
public bool Paused { get; internal set; }
|
||||
public bool PredictedPaused { get; internal set; }
|
||||
public bool PauseStateLocked { get; set; }
|
||||
|
||||
public int WorldTick { get; private set; }
|
||||
|
||||
@@ -393,7 +396,7 @@ namespace OpenRA
|
||||
|
||||
public void SetPauseState(bool paused)
|
||||
{
|
||||
if (PauseStateLocked)
|
||||
if (IsGameOver)
|
||||
return;
|
||||
|
||||
IssueOrder(Order.FromTargetString("PauseGame", paused ? "Pause" : "UnPause", false));
|
||||
@@ -615,8 +618,6 @@ namespace OpenRA
|
||||
public void OutOfSync()
|
||||
{
|
||||
EndGame();
|
||||
SetPauseState(true);
|
||||
PauseStateLocked = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -165,12 +165,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
Game.RunAfterDelay(Info.GameOverDelay, () =>
|
||||
{
|
||||
if (!Game.IsCurrentWorld(player.World))
|
||||
return;
|
||||
|
||||
player.World.EndGame();
|
||||
player.World.SetPauseState(true);
|
||||
player.World.PauseStateLocked = true;
|
||||
if (Game.IsCurrentWorld(player.World))
|
||||
player.World.EndGame();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user