Table of Contents

Class PlacementValidator

Namespace
GridPlacement.GDScript
Assembly
MoonBark.GridPlacement.GDScript.dll
class PlacementValidator extends PlacementInjectable
PlacementValidator

Fields

ISSUE_MATCHING_PRIORITY

const ISSUE_MATCHING_PRIORITY = "Info: %d rules share visual priority [%d] %s (allowed)"

Properties

logger

var logger = container.get_logger()

container_rules

var container_rules = container.get_placement_rules()

validator

var validator = PlacementValidator.new(container_rules, logger)

issues

var issues = results.get_issues()

active_rules

Full list of rules being used by the placement validator to test object placement

var active_rules: Array[PlacementRule] = []

issues

var issues = results.get_issues()

results

var results = rule.setup(p_gts)

prerequisite_issues

var prerequisite_issues = PlacementRuleValidationLogic.validate_validation_prerequisites(active_rules)

cleaned_count

var cleaned_count = PlacementRuleValidationLogic.cleanup_null_indicators_from_rules(active_rules)

validation_results

var validation_results = PlacementRuleValidationLogic.validate_placement_rules(active_rules)

issues

var issues = results.get_issues()

rule_result

var rule_result = results.rule_results[rule]

issues_for_rule

var issues_for_rule = rule_result.issues if rule_result else []

status

var status = ("PASS" if issues_for_rule.is_empty() else "FAIL")

rule_name

var rule_name = rule.get_class() if rule else "Unknown"

rule_issues

var rule_issues = _setup_rules(p_rules, p_gts)

tile_check_rules

var tile_check_rules: Array[TileCheckRule] = RuleFilters.only_tile_check(p_rules)

typed

var typed: Array[PlacementRule] = []

combined

var combined = _base_rules.duplicate()

priority_rule_dict

var priority_rule_dict = {}

rules

var rules = priority_rule_dict.get(key)

rules_names

var rules_names = "["

rules_with_priority

var rules_with_priority = priority_rule_dict[key].size()

all_rules_setup

var all_rules_setup = true

results

var results = rule.setup(p_gts)

Methods

create_with_injection

static func create_with_injection(container: PlacementContainer) -> PlacementValidator:

Parameters

container

Returns

resolve_placement_dependencies

func resolve_placement_dependencies(container: PlacementContainer) -> bool:

Parameters

container

Returns

get_runtime_issues

func get_runtime_issues() -> Array[String]:

Returns

validate_placement

func validate_placement() -> ValidationResults:

Returns

setup

func setup(p_rules : Array[PlacementRule], p_gts : GridTargetingState) -> Dictionary:

Parameters

p_rules
p_gts

Returns

get_combined_rules

func get_combined_rules(p_placeable_rules: Array, p_category_rules: Array = [], p_ignore_base: bool = false) -> Array[PlacementRule]:

Parameters

p_placeable_rules
p_category_rules
p_ignore_base

Returns

tear_down

func tear_down() -> void:

Returns

apply_rules

func apply_rules() -> void:

Returns

Events

finished

Runs tests for each rule using RuleCheckIndicators to determine if placement in the targeted location is valid if all rules validate successfully Emitted when the placement validator is done evaluating a set of rules on a scene node

signal finished(results: ValidationResults)

setup_failed

Emitted when the setup failed

signal setup_failed(issues : Dictionary[PlacementRule, Array])