Map Blueprint Save/Loading (#32)

* Change entry point to new system.

* Map saving/loading works.

* Cleans up old code.

* Saving and Loading of blueprints works.

* Saving and Loading of blueprints works.

* Updated the nuget 'YamlDotNet' package to 4.3.0.

* Submodules are trash
This commit is contained in:
Acruid
2018-02-06 19:34:36 -08:00
committed by clusterfack
parent 059832d324
commit 3dfce70fdc
15 changed files with 116 additions and 82 deletions

View File

@@ -47,12 +47,12 @@
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="YamlDotNet">
<HintPath>$(SolutionDir)packages\YamlDotNet.4.2.1\lib\net35\YamlDotNet.dll</HintPath>
</Reference>
<Reference Include="OpenTK, Version=3.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
<HintPath>$(SolutionDir)packages\OpenTK.3.0.0-pre\lib\net20\OpenTK.dll</HintPath>
</Reference>
<Reference Include="YamlDotNet, Version=4.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>$(SolutionDir)packages\YamlDotNet.4.3.0\lib\net45\YamlDotNet.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="EntryPoint.cs" />
@@ -115,5 +115,8 @@
<ContentAssemblies Include="$(OutputPath)Content.Server.pdb" Condition="'$(Configuration)' == 'Debug'" />
<ContentAssemblies Include="$(OutputPath)Content.Shared.pdb" Condition="'$(Configuration)' == 'Debug'" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
</Project>

View File

@@ -1,5 +1,4 @@
using Content.Server.GameObjects;
using Content.Server.GameObjects;
using Content.Server.GameObjects.Components.Power;
using Content.Server.GameObjects.Components.Interactable.Tools;
using Content.Server.Interfaces.GameObjects;
@@ -19,7 +18,7 @@ using SS14.Shared.IoC;
using SS14.Shared.Log;
using SS14.Shared.Map;
using SS14.Shared.Timers;
using System.Diagnostics;
using SS14.Shared.Interfaces.Timing;
namespace Content.Server
{
@@ -84,13 +83,26 @@ namespace Content.Server
base.Dispose();
}
private void HandleRunLevelChanged(object sender, RunLevelChangedEventArgs args)
private static void HandleRunLevelChanged(object sender, RunLevelChangedEventArgs args)
{
switch (args.NewLevel)
{
case ServerRunLevel.PreGame:
IoCManager.Resolve<IPlayerManager>().FallbackSpawnPoint = new LocalCoordinates(0, 0, GridId.DefaultGrid, new MapId(1));
NewDemoGrid(new GridId(1), new MapId(1));
var timing = IoCManager.Resolve<IGameTiming>();
IoCManager.Resolve<IPlayerManager>().FallbackSpawnPoint = new LocalCoordinates(0, 0, GridId.DefaultGrid, new MapId(2));
var mapLoader = IoCManager.Resolve<IMapLoader>();
var mapMan = IoCManager.Resolve<IMapManager>();
var startTime = timing.RealTime;
{
var newMap = mapMan.CreateMap(new MapId(2));
mapLoader.LoadBlueprint(newMap, new GridId(4), "Maps/Demo/DemoGrid.yaml");
}
var timeSpan = timing.RealTime - startTime;
Logger.Info($"Loaded map in {timeSpan.TotalMilliseconds:N2}ms.");
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Round loaded!");
break;
@@ -152,39 +164,5 @@ namespace Content.Server
break;
}
}
//TODO: This whole method should be removed once file loading/saving works, and replaced with a 'Demo' map.
/// <summary>
/// Generates 'Demo' grid and inserts it into the map manager.
/// </summary>
private void NewDemoGrid(GridId gridId, MapId mapId)
{
var mapManager = IoCManager.Resolve<IMapManager>();
var defManager = IoCManager.Resolve<ITileDefinitionManager>();
mapManager.SuppressOnTileChanged = true;
Logger.Log("Cannot find map. Generating blank map.", LogLevel.Warning);
var floor = defManager["Floor"].TileId;
Debug.Assert(floor > 0);
var map = mapManager.CreateMap(mapId);
var grid = map.CreateGrid(gridId);
for (var y = -32; y <= 32; ++y)
{
for (var x = -32; x <= 32; ++x)
{
grid.SetTile(new LocalCoordinates(x, y, gridId, mapId), new Tile(floor));
}
}
// load entities
IoCManager.Resolve<IMapLoader>().Load(_server.MapName, map);
mapManager.SuppressOnTileChanged = false;
}
}
}

11
Content.Server/app.config Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="OpenTK" version="3.0.0-pre" targetFramework="net451" />
<package id="YamlDotNet" version="4.2.1" targetFramework="net451" />
<package id="System.ValueTuple" version="4.3.1" targetFramework="net451" />
</packages>
<package id="YamlDotNet" version="4.3.0" targetFramework="net451" />
</packages>