fix: some factories not assigning fields correctly
This commit is contained in:
parent
e00319d7ff
commit
63bc94c7a6
@ -4,10 +4,10 @@ namespace Syntriax.Engine.Core.Factory;
|
|||||||
|
|
||||||
public class BehaviourControllerFactory
|
public class BehaviourControllerFactory
|
||||||
{
|
{
|
||||||
public static IBehaviourController Instantiate(IUniverseObject universeObject)
|
public static IBehaviourController Instantiate(IUniverseObject universeObject, IStateEnable? stateEnable = null)
|
||||||
=> Instantiate<BehaviourController>(universeObject);
|
=> Instantiate<BehaviourController>(universeObject, stateEnable);
|
||||||
|
|
||||||
public static T Instantiate<T>(IUniverseObject universeObject, params object?[]? args)
|
public static T Instantiate<T>(IUniverseObject universeObject, IStateEnable? stateEnable = null, params object?[]? args)
|
||||||
where T : class, IBehaviourController
|
where T : class, IBehaviourController
|
||||||
{
|
{
|
||||||
T behaviourController = TypeFactory.Get<T>(args);
|
T behaviourController = TypeFactory.Get<T>(args);
|
||||||
@ -18,6 +18,17 @@ public class BehaviourControllerFactory
|
|||||||
if (!behaviourController.Assign(universeObject))
|
if (!behaviourController.Assign(universeObject))
|
||||||
throw AssignFailedException.From(behaviourController, universeObject);
|
throw AssignFailedException.From(behaviourController, universeObject);
|
||||||
|
|
||||||
|
if (stateEnable is not null)
|
||||||
|
{
|
||||||
|
if (!stateEnable.Assign(behaviourController))
|
||||||
|
throw AssignFailedException.From(stateEnable, behaviourController);
|
||||||
|
|
||||||
|
if (!behaviourController.Assign(stateEnable))
|
||||||
|
throw AssignFailedException.From(behaviourController, stateEnable);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
StateEnableFactory.Instantiate(behaviourController);
|
||||||
|
|
||||||
return behaviourController;
|
return behaviourController;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,15 @@ public class BehaviourFactory
|
|||||||
{
|
{
|
||||||
T behaviour = TypeFactory.Get<T>(args);
|
T behaviour = TypeFactory.Get<T>(args);
|
||||||
|
|
||||||
stateEnable ??= TypeFactory.Get<StateEnable>();
|
if (stateEnable is not null)
|
||||||
if (!stateEnable.Assign(behaviour))
|
{
|
||||||
throw AssignFailedException.From(stateEnable, behaviour);
|
if (!stateEnable.Assign(behaviour))
|
||||||
|
throw AssignFailedException.From(stateEnable, behaviour);
|
||||||
if (!behaviour.Assign(stateEnable))
|
if (!behaviour.Assign(stateEnable))
|
||||||
throw AssignFailedException.From(behaviour, stateEnable);
|
throw AssignFailedException.From(behaviour, stateEnable);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
StateEnableFactory.Instantiate(behaviour);
|
||||||
|
|
||||||
return behaviour;
|
return behaviour;
|
||||||
}
|
}
|
||||||
|
@ -18,18 +18,25 @@ public class UniverseObjectFactory
|
|||||||
{
|
{
|
||||||
T universeObject = TypeFactory.Get<T>(args);
|
T universeObject = TypeFactory.Get<T>(args);
|
||||||
|
|
||||||
behaviourController ??= TypeFactory.Get<BehaviourController>();
|
if (behaviourController is not null)
|
||||||
stateEnable ??= TypeFactory.Get<StateEnable>();
|
{
|
||||||
|
if (!behaviourController.Assign(universeObject))
|
||||||
|
throw AssignFailedException.From(behaviourController, universeObject);
|
||||||
|
if (!universeObject.Assign(behaviourController))
|
||||||
|
throw AssignFailedException.From(universeObject, behaviourController);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
BehaviourControllerFactory.Instantiate(universeObject);
|
||||||
|
|
||||||
if (!behaviourController.Assign(universeObject))
|
if (stateEnable is not null)
|
||||||
throw AssignFailedException.From(behaviourController, universeObject);
|
{
|
||||||
if (!stateEnable.Assign(universeObject))
|
if (!stateEnable.Assign(universeObject))
|
||||||
throw AssignFailedException.From(stateEnable, universeObject);
|
throw AssignFailedException.From(stateEnable, universeObject);
|
||||||
|
if (!universeObject.Assign(stateEnable))
|
||||||
if (!universeObject.Assign(behaviourController))
|
throw AssignFailedException.From(universeObject, stateEnable);
|
||||||
throw AssignFailedException.From(universeObject, behaviourController);
|
}
|
||||||
if (!universeObject.Assign(stateEnable))
|
else
|
||||||
throw AssignFailedException.From(universeObject, stateEnable);
|
StateEnableFactory.Instantiate(universeObject);
|
||||||
|
|
||||||
return universeObject;
|
return universeObject;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user