fixed some things
This commit is contained in:
@@ -149,6 +149,9 @@ namespace OpenRA.Server
|
|||||||
|
|
||||||
case ReceiveState.Data:
|
case ReceiveState.Data:
|
||||||
{
|
{
|
||||||
|
if (bytes.Length > 0)
|
||||||
|
Console.WriteLine("{0} bytes", bytes.Length);
|
||||||
|
|
||||||
DispatchOrders(conn, conn.Frame, bytes);
|
DispatchOrders(conn, conn.Frame, bytes);
|
||||||
conn.ExpectLength = 8;
|
conn.ExpectLength = 8;
|
||||||
conn.State = ReceiveState.Header;
|
conn.State = ReceiveState.Header;
|
||||||
@@ -203,10 +206,16 @@ namespace OpenRA.Server
|
|||||||
case "ToggleReady":
|
case "ToggleReady":
|
||||||
conn.IsReady ^= true;
|
conn.IsReady ^= true;
|
||||||
|
|
||||||
|
Console.WriteLine("Player @{0} is {1}",
|
||||||
|
conn.socket.RemoteEndPoint, conn.IsReady ? "ready" : "not ready");
|
||||||
|
|
||||||
// start the game if everyone is ready.
|
// start the game if everyone is ready.
|
||||||
if (conns.All(c => c.IsReady))
|
if (conns.All(c => c.IsReady))
|
||||||
|
{
|
||||||
|
Console.WriteLine("All players are ready. Starting the game!");
|
||||||
DispatchOrders(null, 0,
|
DispatchOrders(null, 0,
|
||||||
new ServerOrder(0, "StartGame", "").Serialize());
|
new ServerOrder(0, "StartGame", "").Serialize());
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,24 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
public void AddOrder(Order o) { recentOrders.Add(o); }
|
public void AddOrder(Order o) { recentOrders.Add(o); }
|
||||||
|
|
||||||
public List<Order> GetRecentOrders()
|
public List<Order> GetRecentOrders( bool imm )
|
||||||
{
|
{
|
||||||
var ret = recentOrders;
|
if (imm)
|
||||||
recentOrders = new List<Order>();
|
{
|
||||||
return ret;
|
var result = recentOrders.Where(o => o.IsImmediate).ToList();
|
||||||
|
recentOrders.RemoveAll(o => o.IsImmediate);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var result = recentOrders.Where(o => !o.IsImmediate).ToList();
|
||||||
|
recentOrders.RemoveAll(o => !o.IsImmediate);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//var ret = recentOrders;
|
||||||
|
//recentOrders = new List<Order>();
|
||||||
|
//return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static string GetVoiceSuffix(Actor unit)
|
static string GetVoiceSuffix(Actor unit)
|
||||||
|
|||||||
@@ -172,9 +172,11 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
lastTime += timestep;
|
lastTime += timestep;
|
||||||
|
|
||||||
|
orderManager.TickImmediate();
|
||||||
|
|
||||||
if (orderManager.IsReadyForNextFrame)
|
if (orderManager.IsReadyForNextFrame)
|
||||||
{
|
{
|
||||||
orderManager.Tick(false);
|
orderManager.Tick();
|
||||||
if (controller.orderGenerator != null)
|
if (controller.orderGenerator != null)
|
||||||
controller.orderGenerator.Tick();
|
controller.orderGenerator.Tick();
|
||||||
|
|
||||||
@@ -191,11 +193,8 @@ namespace OpenRa.Game
|
|||||||
player.Tick();
|
player.Tick();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
orderManager.Tick(true);
|
if (orderManager.FrameNumber == 0)
|
||||||
// if (orderManager.FrameNumber == 0)
|
lastTime = Environment.TickCount;
|
||||||
//{
|
|
||||||
// lastTime = Environment.TickCount;
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PerfHistory.Tick();
|
PerfHistory.Tick();
|
||||||
|
|||||||
@@ -134,7 +134,8 @@ namespace OpenRa.Game
|
|||||||
Game.LocalPlayer.IsReady ^= true;
|
Game.LocalPlayer.IsReady ^= true;
|
||||||
Game.controller.AddOrder(
|
Game.controller.AddOrder(
|
||||||
new Order(Game.LocalPlayer,
|
new Order(Game.LocalPlayer,
|
||||||
"ToggleReady", null, null, int2.Zero, "") { IsImmediate = true });
|
"ToggleReady", null, null, int2.Zero,
|
||||||
|
Game.LocalPlayer.IsReady ? "ready" : "not ready") { IsImmediate = true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<StartupObject>
|
||||||
|
</StartupObject>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|||||||
@@ -51,28 +51,38 @@ namespace OpenRa.Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tick( bool immediateOnly )
|
public void TickImmediate()
|
||||||
{
|
{
|
||||||
var localOrders = Game.controller.GetRecentOrders();
|
var localOrders = Game.controller.GetRecentOrders(true);
|
||||||
|
if (localOrders.Count > 0)
|
||||||
|
foreach (var p in sources)
|
||||||
|
p.SendLocalOrders(0, localOrders);
|
||||||
|
|
||||||
|
var immOrders = sources.SelectMany( p => p.OrdersForFrame(0) ).OrderBy(o => o.Player.Index).ToList();
|
||||||
|
foreach (var order in immOrders)
|
||||||
|
UnitOrders.ProcessOrder(order);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Tick()
|
||||||
|
{
|
||||||
|
var localOrders = Game.controller.GetRecentOrders(false);
|
||||||
|
|
||||||
foreach( var p in sources )
|
foreach( var p in sources )
|
||||||
p.SendLocalOrders( frameNumber + FramesAhead, localOrders );
|
p.SendLocalOrders( frameNumber + FramesAhead, localOrders );
|
||||||
|
|
||||||
var allOrders = sources.SelectMany(p => p.OrdersForFrame(frameNumber)).OrderBy(o => o.Player.Index).ToList();
|
var allOrders = sources.SelectMany(p => p.OrdersForFrame(frameNumber)).OrderBy(o => o.Player.Index).ToList();
|
||||||
|
|
||||||
foreach (var order in allOrders)
|
foreach (var order in allOrders)
|
||||||
UnitOrders.ProcessOrder(order);
|
UnitOrders.ProcessOrder(order);
|
||||||
|
|
||||||
if( savingReplay != null )
|
if( savingReplay != null )
|
||||||
savingReplay.WriteFrameData( allOrders, frameNumber );
|
savingReplay.WriteFrameData( allOrders, frameNumber );
|
||||||
|
|
||||||
if (frameNumber != 0 && !immediateOnly)
|
++frameNumber;
|
||||||
++frameNumber; /* game hasnt started yet.. */
|
|
||||||
|
|
||||||
// sanity check on the framenumber. This is 2^31 frames maximum, or multiple *years* at 40ms/frame.
|
// sanity check on the framenumber. This is 2^31 frames maximum, or multiple *years* at 40ms/frame.
|
||||||
if( ( frameNumber & 0x80000000 ) != 0 )
|
if( ( frameNumber & 0x80000000 ) != 0 )
|
||||||
throw new InvalidOperationException( "(OrderManager) Frame number too large" );
|
throw new InvalidOperationException( "(OrderManager) Frame number too large" );
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,6 +107,7 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
public void SendLocalOrders( int localFrame, List<Order> localOrders )
|
public void SendLocalOrders( int localFrame, List<Order> localOrders )
|
||||||
{
|
{
|
||||||
|
if (localFrame == 0) return;
|
||||||
orders[ localFrame ] = localOrders;
|
orders[ localFrame ] = localOrders;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,18 +200,12 @@ namespace OpenRa.Game
|
|||||||
public List<Order> OrdersForFrame( int currentFrame )
|
public List<Order> OrdersForFrame( int currentFrame )
|
||||||
{
|
{
|
||||||
var orderData = ExtractOrders(currentFrame);
|
var orderData = ExtractOrders(currentFrame);
|
||||||
if (currentFrame != 0)
|
|
||||||
orderData.AddRange(ExtractOrders(0));
|
|
||||||
|
|
||||||
return orderData.SelectMany(a => a.ToOrderList()).ToList();
|
return orderData.SelectMany(a => a.ToOrderList()).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendLocalOrders( int localFrame, List<Order> localOrders )
|
public void SendLocalOrders( int localFrame, List<Order> localOrders )
|
||||||
{
|
{
|
||||||
socket.GetStream().WriteFrameData(
|
socket.GetStream().WriteFrameData( localOrders, localFrame );
|
||||||
localOrders.Where(o => o.IsImmediate), 0);
|
|
||||||
socket.GetStream().WriteFrameData(
|
|
||||||
localOrders.Where( o => !o.IsImmediate ), localFrame );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsReadyForFrame( int frameNumber )
|
public bool IsReadyForFrame( int frameNumber )
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ namespace OpenRa.Game
|
|||||||
}
|
}
|
||||||
case "ToggleReady":
|
case "ToggleReady":
|
||||||
{
|
{
|
||||||
Game.chat.AddLine(Pair.New(order.Player.PlayerName, "toggled ready status" ));
|
Game.chat.AddLine(Pair.New(order.Player.PlayerName, "is " + order.TargetString ));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "AssignPlayer":
|
case "AssignPlayer":
|
||||||
|
|||||||
Reference in New Issue
Block a user