Add ISingleInstanceInit interface.

Inits that are logically singletons (e.g. actor
location or owner) should implement this interface
to avoid runtime inconsistencies.

Duplicate instances are rejected at init-time,
allowing simpler queries when they are used.
This commit is contained in:
Paul Chote
2020-05-30 16:48:35 +01:00
committed by reaperrr
parent 86305879cb
commit b856613194
45 changed files with 169 additions and 95 deletions

View File

@@ -249,16 +249,16 @@ namespace OpenRA.Mods.Common.Traits
{
self = init.Self;
var locationInit = init.GetOrDefault<LocationInit>(info);
var locationInit = init.GetOrDefault<LocationInit>();
if (locationInit != null)
SetPosition(self, locationInit.Value);
var centerPositionInit = init.GetOrDefault<CenterPositionInit>(info);
var centerPositionInit = init.GetOrDefault<CenterPositionInit>();
if (centerPositionInit != null)
SetPosition(self, centerPositionInit.Value);
Facing = WAngle.FromFacing(init.GetValue<FacingInit, int>(info, Info.InitialFacing));
creationActivityDelay = init.GetValue<CreationActivityDelayInit, int>(info, 0);
Facing = WAngle.FromFacing(init.GetValue<FacingInit, int>(Info.InitialFacing));
creationActivityDelay = init.GetValue<CreationActivityDelayInit, int>(0);
}
public WDist LandAltitude