mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 18:31:17 +03:00
* IoC source gen compatibility Can be merged before or after https://github.com/space-wizards/RobustToolbox/pull/6549 doesn't really matter. * Missed a spot
69 lines
1.8 KiB
C#
69 lines
1.8 KiB
C#
using System.IO;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Content.Shared.Mapping;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Shared.Network;
|
|
|
|
namespace Content.Client.Mapping;
|
|
|
|
public sealed partial class MappingManager : IPostInjectInit
|
|
{
|
|
[Dependency] private IFileDialogManager _file = default!;
|
|
[Dependency] private IClientNetManager _net = default!;
|
|
|
|
private Stream? _saveStream;
|
|
private MappingMapDataMessage? _mapData;
|
|
|
|
public void PostInject()
|
|
{
|
|
_net.RegisterNetMessage<MappingSaveMapMessage>();
|
|
_net.RegisterNetMessage<MappingSaveMapErrorMessage>(OnSaveError);
|
|
_net.RegisterNetMessage<MappingMapDataMessage>(OnMapData);
|
|
}
|
|
|
|
private void OnSaveError(MappingSaveMapErrorMessage message)
|
|
{
|
|
_saveStream?.DisposeAsync();
|
|
_saveStream = null;
|
|
}
|
|
|
|
private async void OnMapData(MappingMapDataMessage message)
|
|
{
|
|
if (_saveStream == null)
|
|
{
|
|
_mapData = message;
|
|
return;
|
|
}
|
|
|
|
await _saveStream.WriteAsync(Encoding.ASCII.GetBytes(message.Yml));
|
|
await _saveStream.DisposeAsync();
|
|
|
|
_saveStream = null;
|
|
_mapData = null;
|
|
}
|
|
|
|
public async Task SaveMap()
|
|
{
|
|
if (_saveStream != null)
|
|
await _saveStream.DisposeAsync();
|
|
|
|
var request = new MappingSaveMapMessage();
|
|
_net.ClientSendMessage(request);
|
|
|
|
var path = await _file.SaveFile();
|
|
if (path is not { fileStream: var stream })
|
|
return;
|
|
|
|
if (_mapData != null)
|
|
{
|
|
await stream.WriteAsync(Encoding.ASCII.GetBytes(_mapData.Yml));
|
|
_mapData = null;
|
|
await stream.FlushAsync();
|
|
await stream.DisposeAsync();
|
|
return;
|
|
}
|
|
|
|
_saveStream = stream;
|
|
}
|
|
}
|