Table of Contents

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
object
ConditionCompatibility

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

availability ConditionEvaluationAvailability

Context availability descriptor.

condition Condition

Root 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

triggerPayloadType Type

Payload type delivered by the trigger.

condition Condition

Root condition to walk.

incompatible List<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

availability ConditionEvaluationAvailability

Context availability descriptor.

condition Condition

Root condition to inspect.

unavailable List<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

conditionType Type

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

availability ConditionEvaluationAvailability

Payload and target slots available to the condition.

conditionType Type

Concrete condition type to validate.

Returns

bool

true when 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

triggerPayloadType Type

The System.Type delivered by the trigger. null means the trigger is not yet configured (always compatible). typeof(void) means a parameterless trigger.

conditionType Type

The concrete Condition subclass type. null means no condition is configured (always compatible).

Returns

bool

true if 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

availability ConditionEvaluationAvailability

Payload and target slots available to the condition tree.

condition Condition

Root condition to validate.

Returns

bool

true if 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

triggerPayloadType Type

The System.Type delivered by the trigger. null = not configured (compatible).

condition Condition

The condition instance to check. null = no condition (compatible).

Returns

bool

true if 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

conditionType Type

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

availability ConditionEvaluationAvailability

Context availability descriptor.

target ConditionTarget

Condition target to test.

Returns

bool