BuildingSystem

Handles changes to build mode....

sort Weight: 10

Handles changes to build mode. Cleans up build state and indicators when switching out of build mode.

Version: v5.0.0

STABLE

Inherits: GBSystem
Source: building_system.gd
Parsing: AST-based for maximum accuracy with symbol typing


Constants

WARNING_INVALID_PLACEABLE

Value: "Invalid placeable resource. Can't instantiate. [%s]"


WARNING_NO_PREVIEW

Value: "No preview instance created to instantiate yet. Returning null."


Variables

_building_instantiator: BuildingInstantiator

Instantiates building objects for placement.

Type: BuildingInstantiator


placement_polygons:

Collision polygons for placement indicators.


preview_layer:

Preview layer index for buildable/unbuildable tiles.


selected_placeable:

Currently selected placeable resource.


indicators_group:

Parent node for collision indicators.


_building_settings: BuildingSettings

Settings for grid building system operation.

Type: BuildingSettings


_states: GBStates

Shared states for plugin systems.

Type: GBStates


_systems_context: GBSystemsContext

Context for resolving references to current objects.

Type: GBSystemsContext


_indicator_context: IndicatorContext

Placement management and rules context.

Type: IndicatorContext


_actions: GBActions

Type: GBActions


_logger: GBLogger

Type: GBLogger


_container:

Keep a reference to the container for lazy component creation


_preview_builder: PreviewBuilder

Type: PreviewBuilder


_report: PlacementReport

The report of the active ongoing placement

Type: PlacementReport


_build_drag_event:

Updated as the user drags to new tiles during multi-build mode.


Methods

create_with_injection

Signature: static create_with_injection(container: GBCompositionContainer) -> BuildingSystem

Creates a BuildingSystem with injected dependencies from the container.

Returns: BuildingSystem

Static: true

Parameters:

  • container: GBCompositionContainer

get_building_state

Signature: get_building_state() -> void

legacy accessors expected in some validator/integration tests

Returns: void


get_targeting_state

Signature: get_targeting_state() -> void

Returns: void


is_ready_to_place

Signature: is_ready_to_place() -> bool

Returns true if all build requirements are met and no issues are found.

Returns: bool


is_in_build_mode

Signature: is_in_build_mode() -> bool

Checks the current mode state to determine if build mode is active.

Returns: bool


exit_build_mode

Signature: exit_build_mode() -> void

Sets the mode to OFF, clears the preview, and tears down indicators.

Returns: void


resolve_gb_dependencies

Signature: resolve_gb_dependencies(p_container : GBCompositionContainer: Variant) -> void

Returns: void

Parameters:

  • p_container : GBCompositionContainer: Variant

try_build

Signature: try_build(p_build_type: GBEnums.BuildType = GBEnums.BuildType.SINGLE: Variant) -> PlacementReport

[param p_build_type] Type of build operation (SINGLE, DRAG, or AREA). Defaults to SINGLE.

Returns: PlacementReport

Parameters:

  • p_build_type: GBEnums.BuildType = GBEnums.BuildType.SINGLE: Variant

try_build_at_position

Signature: try_build_at_position(p_global_position: Vector2) -> PlacementReport

Temporarily moves the targeting system to the position, attempts placement, then restores position

Returns: PlacementReport

Parameters:

  • p_global_position: Vector2

enter_build_mode

Signature: enter_build_mode(p_placeable: Placeable) -> PlacementReport

p_placeable: Placeable - Placeable resource to create preview for

Returns: PlacementReport

Parameters:

  • p_placeable: Placeable

clear_preview

Signature: clear_preview() -> void

Called when exiting build mode or clearing preview.

Returns: void


_exit_build_cleanup

Signature: _exit_build_cleanup() -> void

Called when exiting build mode or switching modes.

Returns: void


_unhandled_input

Signature: _unhandled_input(event: InputEvent) -> void

Processes input based on current build mode and user actions.

Returns: void

Parameters:

  • event: InputEvent

instance_preview

Signature: instance_preview(p_placeable: Placeable) -> Node2D

p_placeable: Placeable - Placeable resource to create preview instance for

Returns: Node2D

Parameters:

  • p_placeable: Placeable

get_runtime_issues

Signature: get_runtime_issues() -> Array

Returns list of validation issues (empty if valid).

Returns: Array


get_builder_owner

Signature: get_builder_owner() -> GBOwner

that is assigned to the BuildingState

Returns: GBOwner


report_built

Signature: report_built(p_report : PlacementReport: Variant, p_build_type: GBEnums.BuildType = GBEnums.BuildType.SINGLE: Variant) -> void

[param p_build_type] Type of build operation (SINGLE, DRAG, or AREA)

Returns: void

Parameters:

  • p_report : PlacementReport: Variant
  • p_build_type: GBEnums.BuildType = GBEnums.BuildType.SINGLE: Variant

report_failure

Signature: report_failure(p_report : PlacementReport: Variant, p_build_type: GBEnums.BuildType = GBEnums.BuildType.SINGLE: Variant) -> void

[param p_build_type] Type of build operation (SINGLE, DRAG, or AREA)

Returns: void

Parameters:

  • p_report : PlacementReport: Variant
  • p_build_type: GBEnums.BuildType = GBEnums.BuildType.SINGLE: Variant

_get_lazy_building_instantiator

Signature: _get_lazy_building_instantiator() -> BuildingInstantiator

return: BuildingInstantiator - The building instantiator instance

Returns: BuildingInstantiator


_get_lazy_preview_builder

Signature: _get_lazy_preview_builder() -> PreviewBuilder

return: PreviewBuilder - The preview builder instance

Returns: PreviewBuilder


_try_setup

Signature: _try_setup(p_preview_instance : Node: Variant, p_placeable_rules : Array[PlacementRule]: Variant) -> PlacementReport

Returns: PlacementReport

Parameters:

  • p_preview_instance : Node: Variant
  • p_placeable_rules : Array[PlacementRule]: Variant

_build_instance

Signature: _build_instance(p_placeable : Placeable: Variant, p_attach_placeable_instance : bool: Variant) -> Node2D

p_attach_placeable_instance: bool - Whether to attach PlaceableInstance component

Returns: Node2D

Parameters:

  • p_placeable : Placeable: Variant
  • p_attach_placeable_instance : bool: Variant

_validate_build_ready

Signature: _validate_build_ready() -> bool

Validates if the building system is ready for placement.

Returns: bool


_align_preview_to_grid

Signature: _align_preview_to_grid(collision_shape_global_position: Vector2) -> void

Used to snap preview to grid tiles for accurate placement feedback.

Returns: void

Parameters:

  • collision_shape_global_position: Vector2

_on_mode_changed

Signature: _on_mode_changed(p_mode: GBEnums.Mode: Variant) -> void

Handles changes to build mode. Cleans up build state and indicators when switching out of build mode.

Returns: void

Parameters:

  • p_mode: GBEnums.Mode: Variant