work toward deferrable start of replay saving
This commit is contained in:
@@ -50,13 +50,8 @@ namespace OpenRA
|
|||||||
|
|
||||||
public static void JoinServer(string host, int port)
|
public static void JoinServer(string host, int port)
|
||||||
{
|
{
|
||||||
var replayFilename = ChooseReplayFilename();
|
|
||||||
string path = Path.Combine( Platform.SupportDir, "Replays" );
|
|
||||||
if( !Directory.Exists( path ) ) Directory.CreateDirectory( path );
|
|
||||||
var replayFile = File.Create( Path.Combine( path, replayFilename ) );
|
|
||||||
|
|
||||||
JoinInner(new OrderManager(host, port,
|
JoinInner(new OrderManager(host, port,
|
||||||
new ReplayRecorderConnection(new NetworkConnection(host, port), replayFile)));
|
new ReplayRecorderConnection(new NetworkConnection(host, port), ChooseReplayFilename)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static string ChooseReplayFilename()
|
static string ChooseReplayFilename()
|
||||||
|
|||||||
@@ -20,11 +20,25 @@ namespace OpenRA.Network
|
|||||||
{
|
{
|
||||||
IConnection inner;
|
IConnection inner;
|
||||||
BinaryWriter writer;
|
BinaryWriter writer;
|
||||||
|
Func<string> chooseFilename;
|
||||||
|
|
||||||
public ReplayRecorderConnection( IConnection inner, FileStream replayFile )
|
public ReplayRecorderConnection( IConnection inner, Func<string> chooseFilename )
|
||||||
{
|
{
|
||||||
|
this.chooseFilename = chooseFilename;
|
||||||
this.inner = inner;
|
this.inner = inner;
|
||||||
this.writer = new BinaryWriter( replayFile );
|
|
||||||
|
StartSavingReplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartSavingReplay()
|
||||||
|
{
|
||||||
|
var filename = chooseFilename();
|
||||||
|
var replayPath = Path.Combine( Platform.SupportDir, "Replays" );
|
||||||
|
|
||||||
|
if (!Directory.Exists(replayPath))
|
||||||
|
Directory.CreateDirectory(replayPath);
|
||||||
|
|
||||||
|
this.writer = new BinaryWriter(File.Create(Path.Combine(replayPath, filename)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int LocalClientId { get { return inner.LocalClientId; } }
|
public int LocalClientId { get { return inner.LocalClientId; } }
|
||||||
|
|||||||
Reference in New Issue
Block a user