PlacementValidator
Adds rule groups to the test and returns if all were setup successfully
Adds rule groups to the test and returns if all were setup successfully
Version: v5.0.0
Inherits: GBInjectable
Source: placement_validator.gd
Parsing: AST-based for maximum accuracy with symbol typing
Constants
PlacementRuleValidationLogic
valid if all rules validate successfully
Value: preload("uid://glxk6xdp6j35")
ISSUE_MATCHING_PRIORITY
Value: "Info: %d rules share visual priority [%d] %s (allowed)"
Variables
_base_rules:
Exists so you don’t have to add the same rule to every single object individually
_logger: GBLogger
Debug settings to pass into rules. Override in resource inspector if desired.
Type: GBLogger
Default: null
active_rules:
Full list of rules being used by the placement validator to test object placement
Signals
finished(results: ValidationResults)
Emitted when the placement validator is done evaluating a set of rules on a scene node
Parameters:
results: ValidationResults
setup_failed(issues : Dictionary[PlacementRule: Variant, Array]: Variant)
Emitted when the setup failed
Parameters:
issues : Dictionary[PlacementRule: VariantArray]: Variant
Methods
create_with_injection
Signature: static create_with_injection(container: GBCompositionContainer) -> PlacementValidator
PlacementValidator - Fully configured placement validator with validated dependencies
Returns: PlacementValidator
Static: true
Parameters:
container: GBCompositionContainer
_init
Signature: _init(p_base_rules : Array[PlacementRule]: Variant, p_logger : GBLogger: Variant) -> void
Returns: void
Parameters:
p_base_rules : Array[PlacementRule]: Variantp_logger : GBLogger: Variant
resolve_gb_dependencies
Signature: resolve_gb_dependencies(container: GBCompositionContainer) -> bool
Returns: bool - True if dependencies were successfully resolved, false otherwise
Returns: bool
Parameters:
container: GBCompositionContainer
get_runtime_issues
Signature: get_runtime_issues() -> Array
Array[String] - List of validation issues (empty if valid)
Returns: Array
validate_placement
Signature: validate_placement() -> ValidationResults
Returns: ValidationResults - Comprehensive validation results with rule details and success status
Returns: ValidationResults
_handle_validation_orchestration
Signature: _handle_validation_orchestration(results: ValidationResults) -> void
Handles orchestration aspects of validation (logging, result processing)
Returns: void
Parameters:
results: ValidationResults
_setup_rules
Signature: _setup_rules(p_rules : Array[PlacementRule]: Variant, p_gts : GridTargetingState: Variant) -> Dictionary
[param] p_gts : GridTargetingState - The current grid targeting state
Returns: Dictionary
Parameters:
p_rules : Array[PlacementRule]: Variantp_gts : GridTargetingState: Variant
setup
Signature: setup(p_rules : Array[PlacementRule]: Variant, p_gts : GridTargetingState: Variant) -> Dictionary
Returns a dictionary of issues
Returns: Dictionary
Parameters:
p_rules : Array[PlacementRule]: Variantp_gts : GridTargetingState: Variant
get_combined_rules
Signature: get_combined_rules(p_outside_rules : Array: Variant, p_ignore_base = false: Variant) -> Array
Uses pure logic class for composition over inheritance
Returns: Array
Parameters:
p_outside_rules : Array: Variantp_ignore_base = false: Variant
_pre_check_tile_rules
Signature: _pre_check_tile_rules(p_tile_check_rules: Array[TileCheckRule]: Variant) -> void
Use pure logic class for rule combination
Returns: void
Parameters:
p_tile_check_rules: Array[TileCheckRule]: Variant
tear_down
Signature: tear_down() -> void
Tear down base & placeable specific rules
Returns: void
apply_rules
Signature: apply_rules() -> void
action takes place
Returns: void