diff --git a/Content.IntegrationTests/SaveLoadSaveTest.cs b/Content.IntegrationTests/SaveLoadSaveTest.cs new file mode 100644 index 0000000000..3d73f5566e --- /dev/null +++ b/Content.IntegrationTests/SaveLoadSaveTest.cs @@ -0,0 +1,54 @@ +using System.IO; +using System.Threading.Tasks; +using NUnit.Framework; +using Robust.Server.Interfaces.Maps; +using Robust.Shared.Interfaces.Map; +using Robust.Shared.Interfaces.Resources; +using Robust.Shared.Map; +using Robust.Shared.Utility; + +namespace Content.IntegrationTests +{ + /// + /// Tests that the + /// + [TestFixture] + public class SaveLoadSaveTest : ContentIntegrationTest + { + [Test] + public async Task SaveLoadSave() + { + var server = StartServer(); + await server.WaitIdleAsync(); + var mapLoader = server.ResolveDependency(); + var mapManager = server.ResolveDependency(); + server.Post(() => + { + mapLoader.SaveBlueprint(new GridId(2), "save load save 1.yml"); + var map = mapManager.CreateMap(); + var grid = mapLoader.LoadBlueprint(map, "save load save 1.yml"); + mapLoader.SaveBlueprint(grid.Index, "save load save 2.yml"); + }); + + await server.WaitIdleAsync(); + var userData = server.ResolveDependency().UserData; + + string one; + string two; + + using (var stream = userData.Open(new ResourcePath("save load save 1.yml"), FileMode.Open)) + using (var reader = new StreamReader(stream)) + { + one = reader.ReadToEnd(); + } + + using (var stream = userData.Open(new ResourcePath("save load save 2.yml"), FileMode.Open)) + using (var reader = new StreamReader(stream)) + { + two = reader.ReadToEnd(); + } + + Assert.That(one, Is.EqualTo(two)); + } + } +} diff --git a/Content.Server/GameObjects/Components/Power/PowerDevice.cs b/Content.Server/GameObjects/Components/Power/PowerDevice.cs index 53f8cf9afe..fd7d8cdf6d 100644 --- a/Content.Server/GameObjects/Components/Power/PowerDevice.cs +++ b/Content.Server/GameObjects/Components/Power/PowerDevice.cs @@ -32,6 +32,8 @@ namespace Content.Server.GameObjects.Components.Power } } + protected virtual bool SaveLoad => true; + /// /// The method of draw we will try to use to place our load set via component parameter, defaults to using power providers /// @@ -191,8 +193,12 @@ namespace Content.Server.GameObjects.Components.Power base.ExposeData(serializer); serializer.DataField(ref _drawType, "drawtype", DrawTypes.Provider); - serializer.DataField(ref _load, "load", 100); serializer.DataField(ref _priority, "priority", Powernet.Priority.Medium); + + if (SaveLoad) + { + serializer.DataField(ref _load, "load", 100); + } } void IExamine.Examine(FormattedMessage message) diff --git a/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs index 4771570b5c..4bc1ad6eca 100644 --- a/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs +++ b/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs @@ -23,6 +23,8 @@ namespace Content.Server.GameObjects.Components.Power /// public override DrawTypes DrawType { get; protected set; } = DrawTypes.Node; + protected override bool SaveLoad => false; + /// /// Variable that determines the range that the power provider will try to supply power to /// @@ -280,7 +282,7 @@ namespace Content.Server.GameObjects.Components.Power // Stops an APC from trying to connect to itself if (this == device) return false; - + return (device.Owner.Transform.WorldPosition - Owner.Transform.WorldPosition).LengthSquared <= _range; } }