StyleCop clean OrderManager
This commit is contained in:
@@ -139,12 +139,12 @@ namespace OpenRA
|
|||||||
map = modData.PrepareMap(mapUID);
|
map = modData.PrepareMap(mapUID);
|
||||||
using (new PerfTimer("NewWorld"))
|
using (new PerfTimer("NewWorld"))
|
||||||
{
|
{
|
||||||
orderManager.world = new World(map, orderManager, isShellmap);
|
orderManager.World = new World(map, orderManager, isShellmap);
|
||||||
orderManager.world.Timestep = Timestep;
|
orderManager.World.Timestep = Timestep;
|
||||||
}
|
}
|
||||||
worldRenderer = new WorldRenderer(orderManager.world);
|
worldRenderer = new WorldRenderer(orderManager.World);
|
||||||
using (new PerfTimer("LoadComplete"))
|
using (new PerfTimer("LoadComplete"))
|
||||||
orderManager.world.LoadComplete(worldRenderer);
|
orderManager.World.LoadComplete(worldRenderer);
|
||||||
|
|
||||||
if (orderManager.GameStarted)
|
if (orderManager.GameStarted)
|
||||||
return;
|
return;
|
||||||
@@ -398,7 +398,7 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
var tick = RunTime;
|
var tick = RunTime;
|
||||||
|
|
||||||
var world = orderManager.world;
|
var world = orderManager.World;
|
||||||
|
|
||||||
var uiTickDelta = tick - Ui.LastTickTime;
|
var uiTickDelta = tick - Ui.LastTickTime;
|
||||||
if (uiTickDelta >= Timestep)
|
if (uiTickDelta >= Timestep)
|
||||||
@@ -474,7 +474,7 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
|
|
||||||
InnerLogicTick(orderManager);
|
InnerLogicTick(orderManager);
|
||||||
if (worldRenderer != null && orderManager.world != worldRenderer.world)
|
if (worldRenderer != null && orderManager.World != worldRenderer.world)
|
||||||
InnerLogicTick(worldRenderer.world.orderManager);
|
InnerLogicTick(worldRenderer.world.orderManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -506,7 +506,7 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
|
|
||||||
using (new PerfSample("render_flip"))
|
using (new PerfSample("render_flip"))
|
||||||
Renderer.EndFrame(new DefaultInputHandler(orderManager.world));
|
Renderer.EndFrame(new DefaultInputHandler(orderManager.World));
|
||||||
}
|
}
|
||||||
|
|
||||||
PerfHistory.items["render"].Tick();
|
PerfHistory.items["render"].Tick();
|
||||||
@@ -663,8 +663,8 @@ namespace OpenRA
|
|||||||
|
|
||||||
public static void Disconnect()
|
public static void Disconnect()
|
||||||
{
|
{
|
||||||
if (orderManager.world != null)
|
if (orderManager.World != null)
|
||||||
orderManager.world.traitDict.PrintReport();
|
orderManager.World.traitDict.PrintReport();
|
||||||
|
|
||||||
orderManager.Dispose();
|
orderManager.Dispose();
|
||||||
CloseServer();
|
CloseServer();
|
||||||
@@ -704,7 +704,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
public static bool IsCurrentWorld(World world)
|
public static bool IsCurrentWorld(World world)
|
||||||
{
|
{
|
||||||
return orderManager != null && orderManager.world == world;
|
return orderManager != null && orderManager.World == world;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,12 +18,14 @@ namespace OpenRA.Network
|
|||||||
{
|
{
|
||||||
public sealed class OrderManager : IDisposable
|
public sealed class OrderManager : IDisposable
|
||||||
{
|
{
|
||||||
|
static readonly IEnumerable<Session.Client> NoClients = new Session.Client[] { };
|
||||||
|
|
||||||
readonly SyncReport syncReport;
|
readonly SyncReport syncReport;
|
||||||
readonly FrameData frameData = new FrameData();
|
readonly FrameData frameData = new FrameData();
|
||||||
|
|
||||||
public Session LobbyInfo = new Session();
|
public Session LobbyInfo = new Session();
|
||||||
public Session.Client LocalClient { get { return LobbyInfo.ClientWithIndex(Connection.LocalClientId); } }
|
public Session.Client LocalClient { get { return LobbyInfo.ClientWithIndex(Connection.LocalClientId); } }
|
||||||
public World world;
|
public World World;
|
||||||
|
|
||||||
public readonly string Host;
|
public readonly string Host;
|
||||||
public readonly int Port;
|
public readonly int Port;
|
||||||
@@ -46,14 +48,25 @@ namespace OpenRA.Network
|
|||||||
List<Order> localOrders = new List<Order>();
|
List<Order> localOrders = new List<Order>();
|
||||||
|
|
||||||
List<ChatLine> chatCache = new List<ChatLine>();
|
List<ChatLine> chatCache = new List<ChatLine>();
|
||||||
|
|
||||||
public readonly ReadOnlyList<ChatLine> ChatCache;
|
public readonly ReadOnlyList<ChatLine> ChatCache;
|
||||||
|
|
||||||
|
static void OutOfSync(int frame)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Out of sync in frame {0}.\n Compare syncreport.log with other players.".F(frame));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OutOfSync(int frame, string blame)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Out of sync in frame {0}: Blame {1}.\n Compare syncreport.log with other players.".F(frame, blame));
|
||||||
|
}
|
||||||
|
|
||||||
public void StartGame()
|
public void StartGame()
|
||||||
{
|
{
|
||||||
if (GameStarted) return;
|
if (GameStarted) return;
|
||||||
|
|
||||||
NetFrameNumber = 1;
|
NetFrameNumber = 1;
|
||||||
for (var i = NetFrameNumber ; i <= FramesAhead ; i++)
|
for (var i = NetFrameNumber; i <= FramesAhead; i++)
|
||||||
Connection.Send(i, new List<byte[]>());
|
Connection.Send(i, new List<byte[]>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,15 +100,15 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
public void TickImmediate()
|
public void TickImmediate()
|
||||||
{
|
{
|
||||||
var immediateOrders = localOrders.Where( o => o.IsImmediate ).ToList();
|
var immediateOrders = localOrders.Where(o => o.IsImmediate).ToList();
|
||||||
if( immediateOrders.Count != 0 )
|
if (immediateOrders.Count != 0)
|
||||||
Connection.SendImmediate( immediateOrders.Select( o => o.Serialize() ).ToList() );
|
Connection.SendImmediate(immediateOrders.Select(o => o.Serialize()).ToList());
|
||||||
localOrders.RemoveAll( o => o.IsImmediate );
|
localOrders.RemoveAll(o => o.IsImmediate);
|
||||||
|
|
||||||
var immediatePackets = new List<Pair<int, byte[]>>();
|
var immediatePackets = new List<Pair<int, byte[]>>();
|
||||||
|
|
||||||
Connection.Receive(
|
Connection.Receive(
|
||||||
( clientId, packet ) =>
|
(clientId, packet) =>
|
||||||
{
|
{
|
||||||
var frame = BitConverter.ToInt32(packet, 0);
|
var frame = BitConverter.ToInt32(packet, 0);
|
||||||
if (packet.Length == 5 && packet[4] == 0xBF)
|
if (packet.Length == 5 && packet[4] == 0xBF)
|
||||||
@@ -106,11 +119,11 @@ namespace OpenRA.Network
|
|||||||
immediatePackets.Add(Pair.New(clientId, packet));
|
immediatePackets.Add(Pair.New(clientId, packet));
|
||||||
else
|
else
|
||||||
frameData.AddFrameOrders(clientId, frame, packet);
|
frameData.AddFrameOrders(clientId, frame, packet);
|
||||||
} );
|
});
|
||||||
|
|
||||||
foreach (var p in immediatePackets)
|
foreach (var p in immediatePackets)
|
||||||
foreach (var o in p.Second.ToOrderList(world))
|
foreach (var o in p.Second.ToOrderList(World))
|
||||||
UnitOrders.ProcessOrder(this, world, p.First, o);
|
UnitOrders.ProcessOrder(this, World, p.First, o);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
|
Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
|
||||||
@@ -148,7 +161,7 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
void OutOfSync(int frame, int index)
|
void OutOfSync(int frame, int index)
|
||||||
{
|
{
|
||||||
var orders = frameData.OrdersForFrame(world, frame);
|
var orders = frameData.OrdersForFrame(World, frame);
|
||||||
|
|
||||||
// Invalid index
|
// Invalid index
|
||||||
if (index >= orders.Count())
|
if (index >= orders.Count())
|
||||||
@@ -157,22 +170,11 @@ namespace OpenRA.Network
|
|||||||
throw new InvalidOperationException("Out of sync in frame {0}.\n {1}\n Compare syncreport.log with other players.".F(frame, orders.ElementAt(index).Order.ToString()));
|
throw new InvalidOperationException("Out of sync in frame {0}.\n {1}\n Compare syncreport.log with other players.".F(frame, orders.ElementAt(index).Order.ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OutOfSync(int frame)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Out of sync in frame {0}.\n Compare syncreport.log with other players.".F(frame));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OutOfSync(int frame, string blame)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Out of sync in frame {0}: Blame {1}.\n Compare syncreport.log with other players.".F(frame, blame));
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsReadyForNextFrame
|
public bool IsReadyForNextFrame
|
||||||
{
|
{
|
||||||
get { return NetFrameNumber >= 1 && frameData.IsReadyForFrame(NetFrameNumber); }
|
get { return NetFrameNumber >= 1 && frameData.IsReadyForFrame(NetFrameNumber); }
|
||||||
}
|
}
|
||||||
|
|
||||||
static readonly IEnumerable<Session.Client> NoClients = new Session.Client[] {};
|
|
||||||
public IEnumerable<Session.Client> GetClientsNotReadyForNextFrame
|
public IEnumerable<Session.Client> GetClientsNotReadyForNextFrame
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -193,12 +195,12 @@ namespace OpenRA.Network
|
|||||||
localOrders.Clear();
|
localOrders.Clear();
|
||||||
|
|
||||||
var sync = new List<int>();
|
var sync = new List<int>();
|
||||||
sync.Add(world.SyncHash());
|
sync.Add(World.SyncHash());
|
||||||
|
|
||||||
foreach (var order in frameData.OrdersForFrame(world, NetFrameNumber))
|
foreach (var order in frameData.OrdersForFrame(World, NetFrameNumber))
|
||||||
{
|
{
|
||||||
UnitOrders.ProcessOrder(this, world, order.Client, order.Order);
|
UnitOrders.ProcessOrder(this, World, order.Client, order.Order);
|
||||||
sync.Add(world.SyncHash());
|
sync.Add(World.SyncHash());
|
||||||
}
|
}
|
||||||
|
|
||||||
var ss = sync.SerializeSync();
|
var ss = sync.SerializeSync();
|
||||||
|
|||||||
8
OpenRA.Game/Network/SyncReport.cs
Executable file → Normal file
8
OpenRA.Game/Network/SyncReport.cs
Executable file → Normal file
@@ -45,10 +45,10 @@ namespace OpenRA.Network
|
|||||||
void GenerateSyncReport(Report report)
|
void GenerateSyncReport(Report report)
|
||||||
{
|
{
|
||||||
report.Frame = orderManager.NetFrameNumber;
|
report.Frame = orderManager.NetFrameNumber;
|
||||||
report.SyncedRandom = orderManager.world.SharedRandom.Last;
|
report.SyncedRandom = orderManager.World.SharedRandom.Last;
|
||||||
report.TotalCount = orderManager.world.SharedRandom.TotalCount;
|
report.TotalCount = orderManager.World.SharedRandom.TotalCount;
|
||||||
report.Traits.Clear();
|
report.Traits.Clear();
|
||||||
foreach (var a in orderManager.world.ActorsWithTrait<ISync>())
|
foreach (var a in orderManager.World.ActorsWithTrait<ISync>())
|
||||||
{
|
{
|
||||||
var sync = Sync.CalculateSyncHash(a.Trait);
|
var sync = Sync.CalculateSyncHash(a.Trait);
|
||||||
if (sync != 0)
|
if (sync != 0)
|
||||||
@@ -63,7 +63,7 @@ namespace OpenRA.Network
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var e in orderManager.world.Effects)
|
foreach (var e in orderManager.World.Effects)
|
||||||
{
|
{
|
||||||
var sync = e as ISync;
|
var sync = e as ISync;
|
||||||
if (sync != null)
|
if (sync != null)
|
||||||
|
|||||||
@@ -103,14 +103,14 @@ namespace OpenRA.Network
|
|||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
var pause = order.TargetString == "Pause";
|
var pause = order.TargetString == "Pause";
|
||||||
if (orderManager.world.Paused != pause && !world.LobbyInfo.IsSinglePlayer)
|
if (orderManager.World.Paused != pause && !world.LobbyInfo.IsSinglePlayer)
|
||||||
{
|
{
|
||||||
var pausetext = "The game is {0} by {1}".F(pause ? "paused" : "un-paused", client.Name);
|
var pausetext = "The game is {0} by {1}".F(pause ? "paused" : "un-paused", client.Name);
|
||||||
Game.AddChatLine(Color.White, "", pausetext);
|
Game.AddChatLine(Color.White, "", pausetext);
|
||||||
}
|
}
|
||||||
|
|
||||||
orderManager.world.Paused = pause;
|
orderManager.World.Paused = pause;
|
||||||
orderManager.world.PredictedPaused = pause;
|
orderManager.World.PredictedPaused = pause;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -526,7 +526,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
musicButton.OnClick = () => Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs
|
musicButton.OnClick = () => Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs
|
||||||
{
|
{
|
||||||
{ "onExit", DoNothing },
|
{ "onExit", DoNothing },
|
||||||
{ "world", orderManager.world }
|
{ "world", orderManager.World }
|
||||||
});
|
});
|
||||||
|
|
||||||
var settingsButton = lobby.GetOrNull<ButtonWidget>("SETTINGS_BUTTON");
|
var settingsButton = lobby.GetOrNull<ButtonWidget>("SETTINGS_BUTTON");
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
Action<HSLColor> onChange = c => preview.Color = c;
|
Action<HSLColor> onChange = c => preview.Color = c;
|
||||||
|
|
||||||
var colorChooser = Game.LoadWidget(orderManager.world, "COLOR_CHOOSER", null, new WidgetArgs()
|
var colorChooser = Game.LoadWidget(orderManager.World, "COLOR_CHOOSER", null, new WidgetArgs()
|
||||||
{
|
{
|
||||||
{ "onChange", onChange },
|
{ "onChange", onChange },
|
||||||
{ "initialColor", client.Color }
|
{ "initialColor", client.Color }
|
||||||
|
|||||||
Reference in New Issue
Block a user