Table of Contents

Class IndicatorService

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

Properties

p

var p = new_ind.get_parent()

targeting_state

var targeting_state = container.get_targeting_state()

logger

var logger = container.get_logger()

template

var template = container.get_templates().rule_check_indicator

manager

var manager = IndicatorService.new(parent, targeting_state, template, logger)

issues

var issues: Array[String] = []

collision_mapper_injected

var collision_mapper_injected: bool = _collision_mapper.resolve_placement_dependencies(container)

issues

var issues: Array[String] = []

p

var p = new_ind.get_parent()

cleanup_parents

var cleanup_parents: Array = []

children

var children = cleanup_parent.get_children()

p

var p = new_ind.get_parent()

info

var info = {

report

var report = IndicatorSetupReport.new(p_tile_check_rules, _targeting_state, _indicator_template)

testing_indicator

var testing_indicator = get_or_create_testing_indicator(_indicators_parent)

setup_result

var setup_result = IndicatorSetupUtils.execute_indicator_setup(

testing_parent

var testing_parent = testing_indicator.get_parent()

test_setups

var test_setups: Array[CollisionTestSetup2D] = setup_result.test_setups

reconciled

var reconciled: Array[RuleCheckIndicator] = _reconcile_indicators(setup_result.indicators)

colliding_indicators

var colliding_indicators: Array[RuleCheckIndicator] = []

use_cache

var use_cache = false

is_col

var is_col: bool = indicator.cached_is_colliding if use_cache else indicator.is_colliding()

colliding_nodes

var colliding_nodes: Array[Node2D] = []

use_cache

var use_cache = false

is_col

var is_col: bool = indicator.cached_is_colliding if use_cache else indicator.is_colliding()

colliders

var colliders: Array[Node] = []

count

var count: int = indicator.get_collision_count()

collider

var collider = indicator.get_collider(i)

indicators_to_free

var indicators_to_free = to_free.duplicate()

parent

var parent = indicator.get_parent()

min_x

var min_x = tile_pos.x

max_x

var max_x = tile_pos.x

min_y

var min_y = tile_pos.y

max_y

var max_y = tile_pos.y

map

var map = _targeting_state.target_map

indicator_tile

var indicator_tile = map.local_to_map(map.to_local(indicator.global_position))

is_left

var is_left = (tile_pos.x == min_x)

is_right

var is_right = (tile_pos.x == max_x)

is_top

var is_top = (tile_pos.y == min_y)

is_bottom

var is_bottom = (tile_pos.y == max_y)

map_layer

var map_layer = _targeting_state.target_map if _targeting_state else null

final_indicators

var final_indicators: Array[RuleCheckIndicator] = []

existing_by_pos

var existing_by_pos = {}

pos

var pos = _get_indicator_tile_pos(ind)

reused_existing

var reused_existing = []

new_pos

var new_pos = _get_indicator_tile_pos(new_ind)

used

var used: RuleCheckIndicator = null

p

var p = new_ind.get_parent()

leftover

var leftover = existing_by_pos[pos_key]

p2

var p2 = leftover.get_parent()

Methods

create_with_injection

static func create_with_injection(container: PlacementContainer, parent: Node) -> IndicatorService:

Parameters

container
parent

Returns

resolve_placement_dependencies

func resolve_placement_dependencies(container: PlacementContainer) -> bool:

Parameters

container

Returns

force_update

func force_update() -> void:

Returns

get_runtime_issues

func get_runtime_issues() -> Array[String]:

Returns

reset

func reset(parent_node: Node = null) -> void:

Parameters

parent_node

Returns

is_service_ready

func is_service_ready() -> bool:

Returns

get_indicators

func get_indicators() -> Array[RuleCheckIndicator]:

Returns

get_diagnostic_info

func get_diagnostic_info() -> Dictionary:

Returns

get_collision_mapper

func get_collision_mapper() -> CollisionMapper:

Returns

set_indicators

func set_indicators(value: Array[RuleCheckIndicator]) -> void:

Parameters

value

Returns

setup_indicators

func setup_indicators(p_test_object: Node2D, p_tile_check_rules: Array[TileCheckRule]) -> IndicatorSetupReport:

Parameters

p_test_object
p_tile_check_rules

Returns

calculate_indicator_count

func calculate_indicator_count(p_test_object: Node2D, p_tile_check_rules: Array[TileCheckRule]) -> int:

Parameters

p_test_object
p_tile_check_rules

Returns

build_collision_test_setups

func build_collision_test_setups(owner_shapes: Dictionary, tile_size: Vector2i) -> Dictionary:

Parameters

owner_shapes
tile_size

Returns

build_collision_test_setups_with_targeting_state

func build_collision_test_setups_with_targeting_state(owner_shapes: Dictionary) -> Dictionary:

Parameters

owner_shapes

Returns

gather_collision_shapes

func gather_collision_shapes(test_object: Node2D) -> Dictionary:

Parameters

test_object

Returns

validate_indicator_positions

func validate_indicator_positions(indicators: Array[RuleCheckIndicator], expected_positions: Array[Vector2i]) -> IndicatorSetupUtils.PositionValidationResult:

Parameters

indicators
expected_positions

Returns

validate_setup_preconditions

func validate_setup_preconditions(test_object: Node2D, tile_check_rules: Array[TileCheckRule]) -> Array[String]:

Parameters

test_object
tile_check_rules

Returns

get_or_create_testing_indicator

func get_or_create_testing_indicator(parent_node: Node) -> RuleCheckIndicator:

Parameters

parent_node

Returns

get_colliding_indicators

func get_colliding_indicators() -> Array[RuleCheckIndicator]:

Returns

get_colliding_nodes

func get_colliding_nodes() -> Array[Node2D]:

Returns

add_indicators

func add_indicators(new_indicators: Array[RuleCheckIndicator]) -> void:

Parameters

new_indicators

Returns

free_indicators

func free_indicators(to_free: Array[RuleCheckIndicator]) -> void:

Parameters

to_free

Returns

clear_indicators

func clear_indicators() -> void:

Returns

Events

indicators_changed

signal indicators_changed(_indicators: Array[RuleCheckIndicator])