StyleCop clean OrderManager
This commit is contained in:
@@ -18,12 +18,14 @@ namespace OpenRA.Network
|
||||
{
|
||||
public sealed class OrderManager : IDisposable
|
||||
{
|
||||
static readonly IEnumerable<Session.Client> NoClients = new Session.Client[] { };
|
||||
|
||||
readonly SyncReport syncReport;
|
||||
readonly FrameData frameData = new FrameData();
|
||||
|
||||
public Session LobbyInfo = new Session();
|
||||
public Session.Client LocalClient { get { return LobbyInfo.ClientWithIndex(Connection.LocalClientId); } }
|
||||
public World world;
|
||||
public World World;
|
||||
|
||||
public readonly string Host;
|
||||
public readonly int Port;
|
||||
@@ -46,14 +48,25 @@ namespace OpenRA.Network
|
||||
List<Order> localOrders = new List<Order>();
|
||||
|
||||
List<ChatLine> chatCache = new List<ChatLine>();
|
||||
|
||||
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()
|
||||
{
|
||||
if (GameStarted) return;
|
||||
|
||||
NetFrameNumber = 1;
|
||||
for (var i = NetFrameNumber ; i <= FramesAhead ; i++)
|
||||
for (var i = NetFrameNumber; i <= FramesAhead; i++)
|
||||
Connection.Send(i, new List<byte[]>());
|
||||
}
|
||||
|
||||
@@ -87,15 +100,15 @@ namespace OpenRA.Network
|
||||
|
||||
public void TickImmediate()
|
||||
{
|
||||
var immediateOrders = localOrders.Where( o => o.IsImmediate ).ToList();
|
||||
if( immediateOrders.Count != 0 )
|
||||
Connection.SendImmediate( immediateOrders.Select( o => o.Serialize() ).ToList() );
|
||||
localOrders.RemoveAll( o => o.IsImmediate );
|
||||
var immediateOrders = localOrders.Where(o => o.IsImmediate).ToList();
|
||||
if (immediateOrders.Count != 0)
|
||||
Connection.SendImmediate(immediateOrders.Select(o => o.Serialize()).ToList());
|
||||
localOrders.RemoveAll(o => o.IsImmediate);
|
||||
|
||||
var immediatePackets = new List<Pair<int, byte[]>>();
|
||||
|
||||
Connection.Receive(
|
||||
( clientId, packet ) =>
|
||||
(clientId, packet) =>
|
||||
{
|
||||
var frame = BitConverter.ToInt32(packet, 0);
|
||||
if (packet.Length == 5 && packet[4] == 0xBF)
|
||||
@@ -106,11 +119,11 @@ namespace OpenRA.Network
|
||||
immediatePackets.Add(Pair.New(clientId, packet));
|
||||
else
|
||||
frameData.AddFrameOrders(clientId, frame, packet);
|
||||
} );
|
||||
});
|
||||
|
||||
foreach (var p in immediatePackets)
|
||||
foreach (var o in p.Second.ToOrderList(world))
|
||||
UnitOrders.ProcessOrder(this, world, p.First, o);
|
||||
foreach (var o in p.Second.ToOrderList(World))
|
||||
UnitOrders.ProcessOrder(this, World, p.First, o);
|
||||
}
|
||||
|
||||
Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
|
||||
@@ -148,7 +161,7 @@ namespace OpenRA.Network
|
||||
|
||||
void OutOfSync(int frame, int index)
|
||||
{
|
||||
var orders = frameData.OrdersForFrame(world, frame);
|
||||
var orders = frameData.OrdersForFrame(World, frame);
|
||||
|
||||
// Invalid index
|
||||
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()));
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
get { return NetFrameNumber >= 1 && frameData.IsReadyForFrame(NetFrameNumber); }
|
||||
}
|
||||
|
||||
static readonly IEnumerable<Session.Client> NoClients = new Session.Client[] {};
|
||||
public IEnumerable<Session.Client> GetClientsNotReadyForNextFrame
|
||||
{
|
||||
get
|
||||
@@ -193,12 +195,12 @@ namespace OpenRA.Network
|
||||
localOrders.Clear();
|
||||
|
||||
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);
|
||||
sync.Add(world.SyncHash());
|
||||
UnitOrders.ProcessOrder(this, World, order.Client, order.Order);
|
||||
sync.Add(World.SyncHash());
|
||||
}
|
||||
|
||||
var ss = sync.SerializeSync();
|
||||
|
||||
Reference in New Issue
Block a user