PlacementValidator

Adds rule groups to the test and returns if all were setup successfully

sort Weight: 10

Adds rule groups to the test and returns if all were setup successfully

Version: v5.0.0

STABLE

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: Variant
  • Array]: 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]: Variant
  • p_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]: Variant
  • p_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]: Variant
  • p_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: Variant
  • p_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