Pause the game option.
Game is paused when PAUSE on the keyboard has been hit. It can also be unpaused this way.
This commit is contained in:
@@ -166,7 +166,7 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
var isNetTick = LocalTick % NetTickScale == 0;
|
var isNetTick = LocalTick % NetTickScale == 0;
|
||||||
|
|
||||||
if (!isNetTick || orderManager.IsReadyForNextFrame)
|
if ((!isNetTick || orderManager.IsReadyForNextFrame) && !orderManager.GamePaused )
|
||||||
{
|
{
|
||||||
++orderManager.LocalFrameNumber;
|
++orderManager.LocalFrameNumber;
|
||||||
|
|
||||||
|
|||||||
@@ -200,6 +200,17 @@ namespace OpenRA
|
|||||||
return new Order("HandshakeResponse", null, false) { IsImmediate = true, TargetString = text };
|
return new Order("HandshakeResponse", null, false) { IsImmediate = true, TargetString = text };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Order PauseRequest()
|
||||||
|
{
|
||||||
|
return new Order("PauseRequest", null, false) { IsImmediate = true, TargetString="" }; //TODO: targetbool?
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Order PauseGame()
|
||||||
|
{
|
||||||
|
return new Order("PauseGame", null, false) { IsImmediate = true, TargetString=""}; //TODO: targetbool?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static Order Command(string text)
|
public static Order Command(string text)
|
||||||
{
|
{
|
||||||
return new Order("Command", null, false) { IsImmediate = true, TargetString = text };
|
return new Order("Command", null, false) { IsImmediate = true, TargetString = text };
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ namespace OpenRA.Network
|
|||||||
public int LastTickTime = Environment.TickCount;
|
public int LastTickTime = Environment.TickCount;
|
||||||
|
|
||||||
public bool GameStarted { get { return NetFrameNumber != 0; } }
|
public bool GameStarted { get { return NetFrameNumber != 0; } }
|
||||||
|
public bool GamePaused {get; set;}
|
||||||
public IConnection Connection { get; private set; }
|
public IConnection Connection { get; private set; }
|
||||||
|
|
||||||
public readonly int SyncHeaderSize = 9;
|
public readonly int SyncHeaderSize = 9;
|
||||||
|
|||||||
@@ -95,6 +95,12 @@ namespace OpenRA.Network
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case "PauseGame":
|
||||||
|
{
|
||||||
|
orderManager.GamePaused = !orderManager.GamePaused;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case "HandshakeRequest":
|
case "HandshakeRequest":
|
||||||
{
|
{
|
||||||
var request = HandshakeRequest.Deserialize(order.TargetString);
|
var request = HandshakeRequest.Deserialize(order.TargetString);
|
||||||
|
|||||||
@@ -332,6 +332,9 @@ namespace OpenRA.Server
|
|||||||
|
|
||||||
void InterpretServerOrder(Connection conn, ServerOrder so)
|
void InterpretServerOrder(Connection conn, ServerOrder so)
|
||||||
{
|
{
|
||||||
|
var fromClient = GetClient(conn);
|
||||||
|
var fromIndex = fromClient != null ? fromClient.Index : 0;
|
||||||
|
|
||||||
switch (so.Name)
|
switch (so.Name)
|
||||||
{
|
{
|
||||||
case "Command":
|
case "Command":
|
||||||
@@ -347,17 +350,23 @@ namespace OpenRA.Server
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "HandshakeResponse":
|
case "HandshakeResponse":
|
||||||
ValidateClient(conn, so.Data);
|
ValidateClient(conn, so.Data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "Chat":
|
case "Chat":
|
||||||
case "TeamChat":
|
case "TeamChat":
|
||||||
var fromClient = GetClient(conn);
|
|
||||||
var fromIndex = fromClient != null ? fromClient.Index : 0;
|
|
||||||
|
|
||||||
foreach (var c in conns.Except(conn).ToArray())
|
foreach (var c in conns.Except(conn).ToArray())
|
||||||
DispatchOrdersToClient(c, fromIndex, 0, so.Serialize());
|
DispatchOrdersToClient(c, fromIndex, 0, so.Serialize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "PauseRequest":
|
||||||
|
foreach (var c in conns.ToArray())
|
||||||
|
{ var x = Order.PauseGame();
|
||||||
|
DispatchOrdersToClient(c, fromIndex, 0, x.Serialize());
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,10 @@ namespace OpenRA.Widgets
|
|||||||
world.Selection.DoControlGroup(world, e.KeyName[0] - '0', e.Modifiers);
|
world.Selection.DoControlGroup(world, e.KeyName[0] - '0', e.Modifiers);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if(e.KeyName == "pause")
|
||||||
|
{
|
||||||
|
world.IssueOrder(Order.PauseRequest());
|
||||||
|
}
|
||||||
|
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user