Merge remote-tracking branch 'tuc/simplepause'
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;
|
||||||
|
|
||||||
@@ -188,6 +188,8 @@ namespace OpenRA
|
|||||||
else
|
else
|
||||||
if (orderManager.NetFrameNumber == 0)
|
if (orderManager.NetFrameNumber == 0)
|
||||||
orderManager.LastTickTime = Environment.TickCount;
|
orderManager.LastTickTime = Environment.TickCount;
|
||||||
|
|
||||||
|
viewport.Tick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -199,7 +199,18 @@ 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;
|
||||||
|
|||||||
@@ -94,6 +94,19 @@ namespace OpenRA.Network
|
|||||||
Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, false);
|
Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case "PauseGame":
|
||||||
|
{
|
||||||
|
var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
|
||||||
|
|
||||||
|
if(client != null)
|
||||||
|
{
|
||||||
|
orderManager.GamePaused = !orderManager.GamePaused;
|
||||||
|
var pausetext = "The game is {0} by {1}".F( orderManager.GamePaused ? "paused" : "un-paused", client.Name );
|
||||||
|
Game.AddChatLine(Color.White, "", pausetext);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case "HandshakeRequest":
|
case "HandshakeRequest":
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -348,6 +348,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":
|
||||||
@@ -363,17 +366,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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ namespace OpenRA.Widgets
|
|||||||
{
|
{
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
{
|
{
|
||||||
var s = WidgetUtils.FormatTime(Game.LocalTick);
|
|
||||||
var font = Game.Renderer.Fonts["Title"];
|
var font = Game.Renderer.Fonts["Title"];
|
||||||
var rb = RenderBounds;
|
var rb = RenderBounds;
|
||||||
|
|
||||||
|
var s = WidgetUtils.FormatTime(Game.LocalTick) + (Game.orderManager.GamePaused?" (paused)":"");
|
||||||
var pos = new float2(rb.Left - font.Measure(s).X / 2, rb.Top);
|
var pos = new float2(rb.Left - font.Measure(s).X / 2, rb.Top);
|
||||||
|
|
||||||
font.DrawTextWithContrast(s, pos, Color.White, Color.Black, 1);
|
font.DrawTextWithContrast(s, pos, Color.White, Color.Black, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" || e.KeyName == "f3")
|
||||||
|
{
|
||||||
|
world.IssueOrder(Order.PauseRequest());
|
||||||
|
}
|
||||||
|
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
|
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
while (frameEndActions.Count != 0)
|
while (frameEndActions.Count != 0)
|
||||||
frameEndActions.Dequeue()(this);
|
frameEndActions.Dequeue()(this);
|
||||||
Game.viewport.Tick();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Actor> Actors { get { return actors; } }
|
public IEnumerable<Actor> Actors { get { return actors; } }
|
||||||
|
|||||||
Reference in New Issue
Block a user