Table of Contents

Class IndicatorSetupUtils

Namespace
GridPlacement.GDScript
Assembly
MoonBark.GridPlacement.GDScript.dll

IndicatorSetupUtils - Static utility functions for indicator setup operations.\n\nThis class provides static utility functions for complex indicator setup logic that has been extracted from IndicatorService for better testability. All functions are static and do not depend on instance state, making them suitable for unit testing.\n\nKey Features: - Static functions for collision test setup building - Testing indicator creation and management - Indicator count calculation without side effects - Tile-based positioning using tile map layers

class IndicatorSetupUtils extends RefCounted
IndicatorSetupUtils

Properties

testing_indicator

var testing_indicator = create_testing_indicator(indicator_template, parent_node)

owner_shapes

var owner_shapes: Dictionary[Node2D, Array] = {}

indicator_test_setups

var indicator_test_setups = build_collision_test_setups_with_factory(owner_shapes, collision_mapper._targeting_state)

setups_array

var setups_array = extract_valid_test_setups(test_setups)

testing_indicator

var testing_indicator = create_testing_indicator(indicator_template, parent_node)

position_rules_map

var position_rules_map: Dictionary[Vector2i, Array] = {}

result

var result = PositionValidationResult.new()

setup

var setup = CollisionTestSetup2D.new(owner, Vector2(tile_size.x * 2.0, tile_size.y * 2.0))

valid_setups

var valid_setups: Array[CollisionTestSetup2D] = []

result

var result = PositionValidationResult.new()

validation_issues

var validation_issues = validate_setup_preconditions(test_object, tile_check_rules, collision_mapper)

owner_shapes

var owner_shapes: Dictionary[Node2D, Array] = {}

should_free_testing_indicator

var should_free_testing_indicator: bool = false

test_setups

var test_setups: Array[CollisionTestSetup2D] = []

setups_array

var setups_array = extract_valid_test_setups(test_setups)

position_rules_map

var position_rules_map: Dictionary[Vector2i, Array] = {}

normalized_map

var normalized_map: Dictionary[Vector2i, Array] = {}

map_layer

var map_layer: TileMapLayer = targeting_state.target_map

positioner_tile

var positioner_tile: Vector2i = map_layer.local_to_map(map_layer.to_local(targeting_state.positioner.global_position))

rel_off

var rel_off: Vector2i = abs_tile - positioner_tile

indicators

Result class for indicator setup operations

var indicators: Array[RuleCheckIndicator] = []

result

var result = PositionValidationResult.new()

indicator

var indicator = indicators[i]

expected_tile_pos

var expected_tile_pos = expected_positions[i]

actual_tile_pos

var actual_tile_pos = targeting_state.target_map.local_to_map(targeting_state.target_map.to_local(indicator.global_position))

issues

var issues: Array[String] = []

indicators

Result class for indicator setup operations

var indicators: Array[RuleCheckIndicator] = []

owner_shapes

var owner_shapes: Dictionary[Node2D, Array] = {}

position_rules_map

var position_rules_map: Dictionary[Vector2i, Array] = {}

test_setups

var test_setups: Array[CollisionTestSetup2D] = []

issues

var issues: Array[String] = []

is_valid

Result class for position validation operations

var is_valid: bool = true

size_mismatch

var size_mismatch: bool = false

expected_count

var expected_count: int = 0

actual_count

var actual_count: int = 0

position_mismatches

var position_mismatches: Array = []

Methods

create_testing_indicator

static func create_testing_indicator(indicator_template: PackedScene, parent_node: Node) -> RuleCheckIndicator:

Parameters

indicator_template
parent_node

Returns

calculate_indicator_count

static func calculate_indicator_count( test_object: Node2D,

setup_collision_mapper

static func setup_collision_mapper( collision_mapper: CollisionMapper,

gather_collision_shapes

static func gather_collision_shapes(test_object: Node2D) -> Dictionary:

Parameters

test_object

Returns

build_collision_test_setups

static func build_collision_test_setups( owner_shapes: Dictionary,

build_collision_test_setups_with_factory

static func build_collision_test_setups_with_factory( owner_shapes: Dictionary,

extract_valid_test_setups

static func extract_valid_test_setups(setups_dict: Dictionary) -> Array[CollisionTestSetup2D]:

Parameters

setups_dict

Returns

map_positions_to_rules

static func map_positions_to_rules( collision_mapper: CollisionMapper,

execute_indicator_setup

static func execute_indicator_setup( test_object: Node2D,

validate_indicator_positions

static func validate_indicator_positions( indicators: Array[RuleCheckIndicator],

validate_setup_preconditions

static func validate_setup_preconditions( test_object: Node2D,

has_issues

func has_issues() -> bool:

Returns

is_successful

func is_successful() -> bool:

Returns

get_mismatch_summary

func get_mismatch_summary() -> String:

Returns