BuildingSystem
Handles changes to build mode....
Handles changes to build mode. Cleans up build state and indicators when switching out of build mode.
Version: v5.0.0
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: Variantp_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: Variantp_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: Variantp_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: Variantp_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