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

@@ -60,7 +60,7 @@ namespace OpenRA.Mods.Cnc.Traits
{
self = init.Self;
var returnInit = init.GetOrDefault<ChronoshiftReturnInit>(info);
var returnInit = init.GetOrDefault<ChronoshiftReturnInit>();
if (returnInit != null)
{
ReturnTicks = returnInit.Ticks;
@@ -176,7 +176,7 @@ namespace OpenRA.Mods.Cnc.Traits
void ITransformActorInitModifier.ModifyTransformActorInit(Actor self, TypeDictionary init) { ModifyActorInit(init); }
}
public class ChronoshiftReturnInit : CompositeActorInit
public class ChronoshiftReturnInit : CompositeActorInit, ISingleInstanceInit
{
public readonly int Ticks;
public readonly int Duration;