mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
* Add TryGetOpenBUI Avoids having to get the component and openinterfaces separately. * Couple more helpers * entityquery * reviews * Shared BUIs * zawehdo * More boilerplate * Bunch more work * Building * Stuff * More state handling * API cleanup * Slight tweak * Tweaks * gabriel * Disposies * Active UI support * Lots of fixes - Fix states not applying properly, fix predicted messages, remove redundant message type, add RaiseUiMessage for an easy way to do it from shared, add the old BUI state change events back. * Fix test failures * weh * Remove unncessary closes. * release note
116 lines
3.4 KiB
C#
116 lines
3.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using Robust.Server.GameObjects;
|
|
using Robust.Shared.ContentPack;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.IoC;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Physics;
|
|
using Robust.Shared.Physics.Dynamics;
|
|
using Robust.Shared.Prototypes;
|
|
using Robust.Shared.Serialization.Manager;
|
|
using Robust.Shared.Serialization.Manager.Attributes;
|
|
using Robust.Shared.Utility;
|
|
using IgnoreUIRangeComponent = Robust.Shared.GameObjects.IgnoreUIRangeComponent;
|
|
|
|
namespace Robust.UnitTesting.Server.Maps
|
|
{
|
|
[TestFixture]
|
|
public sealed partial class MapLoaderTest : RobustUnitTest
|
|
{
|
|
private const string MapData = @"
|
|
meta:
|
|
format: 2
|
|
name: DemoStation
|
|
author: Space-Wizards
|
|
postmapinit: false
|
|
grids:
|
|
- settings:
|
|
chunksize: 16
|
|
tilesize: 1
|
|
snapsize: 1
|
|
chunks: []
|
|
tilemap: {}
|
|
entities:
|
|
- uid: 0
|
|
components:
|
|
- parent: null
|
|
type: Transform
|
|
- index: 0
|
|
type: MapGrid
|
|
- uid: 1
|
|
type: MapDeserializeTest
|
|
components:
|
|
- type: MapDeserializeTest
|
|
foo: 3
|
|
- parent: 0
|
|
type: Transform
|
|
";
|
|
|
|
private const string Prototype = @"
|
|
- type: entity
|
|
id: MapDeserializeTest
|
|
components:
|
|
- type: MapDeserializeTest
|
|
foo: 1
|
|
bar: 2
|
|
";
|
|
|
|
protected override Type[]? ExtraComponents => new[] { typeof(MapDeserializeTestComponent), typeof(VisibilityComponent), typeof(IgnoreUIRangeComponent)};
|
|
|
|
[OneTimeSetUp]
|
|
public void Setup()
|
|
{
|
|
IoCManager.Resolve<ISerializationManager>().Initialize();
|
|
var resourceManager = IoCManager.Resolve<IResourceManagerInternal>();
|
|
resourceManager.Initialize(null);
|
|
resourceManager.MountString("/TestMap.yml", MapData);
|
|
resourceManager.MountString("/EnginePrototypes/TestMapEntity.yml", Prototype);
|
|
|
|
var protoMan = IoCManager.Resolve<IPrototypeManager>();
|
|
protoMan.RegisterKind(typeof(EntityPrototype));
|
|
|
|
protoMan.LoadDirectory(new ("/EnginePrototypes"));
|
|
protoMan.LoadDirectory(new ("/Prototypes"));
|
|
protoMan.ResolveResults();
|
|
}
|
|
|
|
[Test]
|
|
public void TestDataLoadPriority()
|
|
{
|
|
// TODO: Fix after serv3
|
|
// fix what?
|
|
|
|
var entMan = IoCManager.Resolve<IEntityManager>();
|
|
entMan.System<SharedMapSystem>().CreateMap(out var mapId);
|
|
|
|
var traversal = entMan.System<SharedGridTraversalSystem>();
|
|
traversal.Enabled = false;
|
|
var mapLoad = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<MapLoaderSystem>();
|
|
if (!mapLoad.TryLoad(mapId, "/TestMap.yml", out var root)
|
|
|| root.FirstOrDefault() is not { Valid:true } geid)
|
|
{
|
|
Assert.Fail();
|
|
return;
|
|
}
|
|
|
|
var entity = entMan.GetComponent<TransformComponent>(geid)._children.Single();
|
|
var c = entMan.GetComponent<MapDeserializeTestComponent>(entity);
|
|
traversal.Enabled = true;
|
|
|
|
Assert.That(c.Bar, Is.EqualTo(2));
|
|
Assert.That(c.Foo, Is.EqualTo(3));
|
|
Assert.That(c.Baz, Is.EqualTo(-1));
|
|
}
|
|
|
|
[DataDefinition]
|
|
private sealed partial class MapDeserializeTestComponent : Component
|
|
{
|
|
[DataField("foo")] public int Foo { get; set; } = -1;
|
|
[DataField("bar")] public int Bar { get; set; } = -1;
|
|
[DataField("baz")] public int Baz { get; set; } = -1;
|
|
}
|
|
}
|
|
}
|