Class ConditionCompatibility
- Namespace
- ElectricDrill.AstraRpgFramework.Conditions
- Assembly
- com.electricdrill.astra-rpg-framework.Runtime.dll
Design-time utility that checks whether a Condition subclass is compatible with a given trigger payload type, based on ConditionPayloadAttribute metadata.
A condition with noConditionPayloadAttribute is payload-agnostic and compatible with every trigger. A condition with one or more attributes is compatible when the trigger's payload type is assignable to at least one declared accepted type.
public static class ConditionCompatibility
- Inheritance
-
objectConditionCompatibility
Methods
AreTargetsCompatibleDeep(ConditionEvaluationAvailability, Condition)
Recursively checks whether every configured ConditionTarget in a condition tree is available in the supplied evaluation context.
public static bool AreTargetsCompatibleDeep(ConditionEvaluationAvailability availability, Condition condition)
Parameters
availabilityConditionEvaluationAvailabilityContext availability descriptor.
conditionConditionRoot condition to validate.
Returns
- bool
CollectIncompatible(Type, Condition, List<Condition>)
Collects every incompatible leaf Condition found in the condition tree. Useful for building detailed validation messages that name each offending child.
public static void CollectIncompatible(Type triggerPayloadType, Condition condition, List<Condition> incompatible)
Parameters
triggerPayloadTypeTypePayload type delivered by the trigger.
conditionConditionRoot condition to walk.
incompatibleList<Condition>Populated with every incompatible non-null condition encountered.
CollectUnavailableTargets(ConditionEvaluationAvailability, Condition, List<UnavailableTarget>)
Collects every unavailable ConditionTarget configured in a condition tree.
public static void CollectUnavailableTargets(ConditionEvaluationAvailability availability, Condition condition, List<ConditionCompatibility.UnavailableTarget> unavailable)
Parameters
availabilityConditionEvaluationAvailabilityContext availability descriptor.
conditionConditionRoot condition to inspect.
unavailableList<ConditionCompatibility.UnavailableTarget>Populated with unavailable target diagnostics.
GetAcceptedPayloadTypes(Type)
Returns the list of accepted payload types declared via
ConditionPayloadAttribute on conditionType.
An empty list means the condition is payload-agnostic.
public static IReadOnlyList<Type> GetAcceptedPayloadTypes(Type conditionType)
Parameters
conditionTypeType
Returns
- IReadOnlyList<Type>
IsCompatible(ConditionEvaluationAvailability, Type)
Checks whether a condition type is compatible with the payload described by
availability.
public static bool IsCompatible(ConditionEvaluationAvailability availability, Type conditionType)
Parameters
availabilityConditionEvaluationAvailabilityPayload and target slots available to the condition.
conditionTypeTypeConcrete condition type to validate.
Returns
- bool
truewhen the condition type can consume the available payload.
IsCompatible(Type, Type)
Checks flat (non-recursive) compatibility between a trigger payload type and a condition type.
public static bool IsCompatible(Type triggerPayloadType, Type conditionType)
Parameters
triggerPayloadTypeTypeThe System.Type delivered by the trigger.
nullmeans the trigger is not yet configured (always compatible).typeof(void)means a parameterless trigger.conditionTypeTypeThe concrete Condition subclass type.
nullmeans no condition is configured (always compatible).
Returns
- bool
trueif the pair is compatible or either side is unconfigured.
IsCompatibleDeep(ConditionEvaluationAvailability, Condition)
Recursively checks payload and target-slot compatibility for a condition tree.
public static bool IsCompatibleDeep(ConditionEvaluationAvailability availability, Condition condition)
Parameters
availabilityConditionEvaluationAvailabilityPayload and target slots available to the condition tree.
conditionConditionRoot condition to validate.
Returns
- bool
trueif the entire condition tree is compatible.
IsCompatibleDeep(Type, Condition)
Recursively checks compatibility for a condition instance, walking into composite conditions that contain child Condition fields.
public static bool IsCompatibleDeep(Type triggerPayloadType, Condition condition)
Parameters
triggerPayloadTypeTypeThe System.Type delivered by the trigger.
null= not configured (compatible).conditionConditionThe condition instance to check.
null= no condition (compatible).
Returns
- bool
trueif the entire condition tree is compatible with the payload.
IsPayloadAgnostic(Type)
Returns true if conditionType has no
ConditionPayloadAttribute and therefore accepts any payload.
public static bool IsPayloadAgnostic(Type conditionType)
Parameters
conditionTypeType
Returns
- bool
IsTargetAvailable(ConditionEvaluationAvailability, ConditionTarget)
Returns true when target is available in the supplied
evaluation context descriptor.
public static bool IsTargetAvailable(ConditionEvaluationAvailability availability, ConditionTarget target)
Parameters
availabilityConditionEvaluationAvailabilityContext availability descriptor.
targetConditionTargetCondition target to test.
Returns
- bool