StyleCop clean OrderManager

This commit is contained in:
Matthias Mailänder
2014-11-01 07:55:31 +01:00
parent 2b6295608a
commit 95a4248419
6 changed files with 47 additions and 45 deletions

View File

@@ -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;
} }
} }
} }

View File

@@ -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
View 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)

View File

@@ -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;
} }

View File

@@ -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");

View File

@@ -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 }