fix some plenks

no logic changes
This commit is contained in:
Matthias Mailänder
2013-06-21 18:05:30 +02:00
parent 65088ea2d5
commit e9b2bcc579
4 changed files with 49 additions and 47 deletions

View File

@@ -149,12 +149,12 @@ namespace OpenRA
delayedActions.PerformActions(); delayedActions.PerformActions();
} }
static void Tick( OrderManager orderManager ) static void Tick(OrderManager orderManager)
{ {
int t = Environment.TickCount; int t = Environment.TickCount;
int dt = t - orderManager.LastTickTime; int dt = t - orderManager.LastTickTime;
if (dt >= Settings.Game.Timestep) if (dt >= Settings.Game.Timestep)
using( new PerfSample( "tick_time" ) ) using (new PerfSample("tick_time"))
{ {
orderManager.LastTickTime += Settings.Game.Timestep; orderManager.LastTickTime += Settings.Game.Timestep;
Ui.Tick(); Ui.Tick();
@@ -162,7 +162,7 @@ namespace OpenRA
if (orderManager.GameStarted) if (orderManager.GameStarted)
++Viewport.TicksSinceLastMove; ++Viewport.TicksSinceLastMove;
Sound.Tick(); Sound.Tick();
Sync.CheckSyncUnchanged( world, () => { orderManager.TickImmediate(); } ); Sync.CheckSyncUnchanged(world, orderManager.TickImmediate);
if (world != null) if (world != null)
{ {
@@ -230,7 +230,7 @@ namespace OpenRA
{ {
get get
{ {
var client= orderManager.LobbyInfo.ClientWithIndex ( var client= orderManager.LobbyInfo.ClientWithIndex(
orderManager.Connection.LocalClientId); orderManager.Connection.LocalClientId);
return ((client!=null) && client.IsAdmin); return ((client!=null) && client.IsAdmin);
} }
@@ -315,7 +315,6 @@ namespace OpenRA
Renderer.InitializeFonts(modData.Manifest); Renderer.InitializeFonts(modData.Manifest);
modData.InitializeLoaders(); modData.InitializeLoaders();
PerfHistory.items["render"].hasNormalTick = false; PerfHistory.items["render"].hasNormalTick = false;
PerfHistory.items["batches"].hasNormalTick = false; PerfHistory.items["batches"].hasNormalTick = false;
PerfHistory.items["render_widgets"].hasNormalTick = false; PerfHistory.items["render_widgets"].hasNormalTick = false;
@@ -331,11 +330,11 @@ namespace OpenRA
Game.Settings.Server.Map = WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map); Game.Settings.Server.Map = WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map);
Game.Settings.Save(); Game.Settings.Save();
Game.CreateServer(new ServerSettings(Game.Settings.Server)); Game.CreateServer(new ServerSettings(Game.Settings.Server));
while(true) while (true)
{ {
System.Threading.Thread.Sleep(100); System.Threading.Thread.Sleep(100);
if((server.State == Server.ServerState.GameStarted) if ((server.State == Server.ServerState.GameStarted)
&& (server.conns.Count<=1)) && (server.conns.Count<=1))
{ {
Console.WriteLine("No one is playing, shutting down..."); Console.WriteLine("No one is playing, shutting down...");
@@ -426,7 +425,7 @@ namespace OpenRA
public static T CreateObject<T>( string name ) public static T CreateObject<T>( string name )
{ {
return modData.ObjectCreator.CreateObject<T>( name ); return modData.ObjectCreator.CreateObject<T>(name);
} }
public static void CreateServer(ServerSettings settings) public static void CreateServer(ServerSettings settings)

View File

@@ -21,12 +21,13 @@ namespace OpenRA.Network
readonly SyncReport syncReport; readonly SyncReport syncReport;
readonly FrameData frameData = new FrameData(); readonly FrameData frameData = new FrameData();
public Session LobbyInfo = new Session( Game.Settings.Game.Mods ); public Session LobbyInfo = new Session(Game.Settings.Game.Mods);
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;
public string ServerError = "Server is not responding."; public string ServerError = "Server is not responding.";
public int NetFrameNumber { get; private set; } public int NetFrameNumber { get; private set; }
@@ -47,27 +48,27 @@ namespace OpenRA.Network
if (GameStarted) return; if (GameStarted) return;
NetFrameNumber = 1; NetFrameNumber = 1;
for( int i = NetFrameNumber ; i <= FramesAhead ; i++ ) for (var i = NetFrameNumber ; i <= FramesAhead ; i++)
Connection.Send( i, new List<byte[]>() ); Connection.Send(i, new List<byte[]>());
} }
public OrderManager( string host, int port, IConnection conn ) public OrderManager(string host, int port, IConnection conn)
{ {
this.Host = host; this.Host = host;
this.Port = port; this.Port = port;
Connection = conn; Connection = conn;
syncReport = new SyncReport( this ); syncReport = new SyncReport(this);
} }
public void IssueOrders( Order[] orders ) public void IssueOrders(Order[] orders)
{ {
foreach( var order in orders ) foreach (var order in orders)
IssueOrder( order ); IssueOrder(order);
} }
public void IssueOrder( Order order ) public void IssueOrder(Order order)
{ {
localOrders.Add( order ); localOrders.Add(order);
} }
public void TickImmediate() public void TickImmediate()
@@ -82,25 +83,25 @@ namespace OpenRA.Network
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)
frameData.ClientQuit( clientId, frame ); frameData.ClientQuit(clientId, frame);
else if( packet.Length >= 5 && packet[ 4 ] == 0x65 ) else if (packet.Length >= 5 && packet[4] == 0x65)
CheckSync( packet ); CheckSync(packet);
else if( frame == 0 ) else if (frame == 0)
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[]>();
void CheckSync( byte[] packet ) void CheckSync(byte[] packet)
{ {
var frame = BitConverter.ToInt32(packet, 0); var frame = BitConverter.ToInt32(packet, 0);
byte[] existingSync; byte[] existingSync;
@@ -133,7 +134,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())
@@ -154,7 +155,7 @@ namespace OpenRA.Network
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[] {}; static readonly IEnumerable<Session.Client> NoClients = new Session.Client[] {};
@@ -171,23 +172,23 @@ namespace OpenRA.Network
public void Tick() public void Tick()
{ {
if( !IsReadyForNextFrame ) if (!IsReadyForNextFrame)
throw new InvalidOperationException(); throw new InvalidOperationException();
Connection.Send( NetFrameNumber + FramesAhead, localOrders.Select( o => o.Serialize() ).ToList() ); Connection.Send(NetFrameNumber + FramesAhead, localOrders.Select(o => o.Serialize()).ToList());
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();
Connection.SendSync( NetFrameNumber, ss ); Connection.SendSync(NetFrameNumber, ss);
syncReport.UpdateSyncReport(); syncReport.UpdateSyncReport();

View File

@@ -154,8 +154,10 @@ namespace OpenRA.Network
} }
case "ServerError": case "ServerError":
orderManager.ServerError = order.TargetString; {
break; orderManager.ServerError = order.TargetString;
break;
}
case "SyncInfo": case "SyncInfo":
{ {
@@ -200,13 +202,13 @@ namespace OpenRA.Network
} }
default: default:
{ {
if( !order.IsImmediate ) if (!order.IsImmediate)
{ {
var self = order.Subject; var self = order.Subject;
var health = self.TraitOrDefault<Health>(); var health = self.TraitOrDefault<Health>();
if( health == null || !health.IsDead ) if (health == null || !health.IsDead)
foreach( var t in self.TraitsImplementing<IResolveOrder>() ) foreach (var t in self.TraitsImplementing<IResolveOrder>())
t.ResolveOrder( self, order ); t.ResolveOrder(self, order);
} }
break; break;
} }

View File

@@ -114,7 +114,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
var mapPreview = lobby.Get<MapPreviewWidget>("MAP_PREVIEW"); var mapPreview = lobby.Get<MapPreviewWidget>("MAP_PREVIEW");
mapPreview.IsVisible = () => Map != null; mapPreview.IsVisible = () => Map != null;
mapPreview.Map = () => Map; mapPreview.Map = () => Map;
mapPreview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint( orderManager, mapPreview, Map, mi ); mapPreview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, mapPreview, Map, mi);
mapPreview.SpawnClients = () => LobbyUtils.GetSpawnClients(orderManager, Map); mapPreview.SpawnClients = () => LobbyUtils.GetSpawnClients(orderManager, Map);
var mapTitle = lobby.GetOrNull<LabelWidget>("MAP_TITLE"); var mapTitle = lobby.GetOrNull<LabelWidget>("MAP_TITLE");