Table of Contents

Class PlacementContainer

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

Dependency injection root for context-specific Grid Building setup.\n\nThe PlacementContainer is the canonical composition root for a runtime Grid Building context. Typical usage: - Create one container per player or active simulation instance (for multiplayer or local split-screen projects each player can have their own isolated composition container). - Assign a PlacementConfig resource to the container. The config contains the user-visible settings, templates, rules, and runtime checks used by the systems. - Create and assign a PlacementLevelContext and a PlacementOwner in your scene, then ensure they are wired into the container's contexts (usually via the injector). The PlacementLevelContext provides tilemap / tilelayer lookup and spatial context required for placement and targeting. The PlacementOwner identifies who is responsible for performing operations (a player or simulated actor) and is required by many systems.\n\nValidation workflow: 1. Ensure the level is loaded and the PlacementLevelContext and a PlacementOwner instance are created and assigned to the container's contexts. 2. The PlacementInjectorSystem automatically validates the complete setup after dependency injection is complete. Any issues are logged via the container's logger system. 3. For manual validation, call composition_container.get_runtime_issues() to collect diagnostics, or composition_container.validate_runtime() to get a boolean result.\n\nNote: The injector (PlacementInjectorSystem) handles both dependency injection and automatic validation. No manual validation calls are required in most cases.

class PlacementContainer extends PlacementResource
PlacementContainer

Properties

session

Optional [PlacementSession] — the primary composition-root SSOT. When set, [method get_states], [method get_contexts], [method get_logger], and [method get_settings] delegate through the session instead of creating their own. When null, the container maintains its existing lazy-creation behavior for backward compatibility.

@export var session: PlacementSession

config

Main configuration resource for the grid building system.

@export var config: PlacementConfig

owner_context

var owner_context: PlacementOwnerProvider = get_contexts().owner

debug_settings

var debug_settings = _get_debug_settings_for_logger()

building_state

var building_state = get_building_state()

manipulation_state_ref

var manipulation_state_ref = get_manipulation_state()

settings

var settings = get_settings()

logger

var logger = get_logger()

settings

var settings = get_settings()

rules

var rules: Array[PlacementRule] = settings.placement_rules

rule

var rule: PlacementRule = rules[i]

logger

var logger = get_logger()

header

var header = "get_placement_rules: returning %d rules from settings" % [rules.size()]

rule

var rule: PlacementRule = rules[i]

cls

var cls: String = str(rule.get_class()) if rule != null else "null"

is_pr

var is_pr: bool = rule != null and (rule is PlacementRule)

rule

var rule: PlacementRule = rules[i]

cls

var cls: String = str(rule.get_class()) if rule != null else "null"

is_pr

var is_pr: bool = rule != null and (rule is PlacementRule)

settings

var settings = get_settings()

settings

var settings = get_settings()

issues

var issues = get_runtime_issues()

logger

var logger = get_logger()

Methods

get_contexts

func get_contexts() -> PlacementContexts:

Returns

get_states

func get_states() -> PlacementStates:

Returns

get_logger

func get_logger() -> PlacementLogger:

Returns

set_logger

func set_logger(p_logger: PlacementLogger) -> void:

Parameters

p_logger

Returns

set_states

func set_states(p_states: PlacementStates) -> void:

Parameters

p_states

Returns

get_mode_state

func get_mode_state() -> ModeState:

Returns

get_targeting_state

func get_targeting_state() -> GridTargetingState:

Returns

get_building_state

func get_building_state() -> PlacementState:

Returns

get_manipulation_state

func get_manipulation_state() -> ManipulationState:

Returns

get_action_history

func get_action_history() -> PlacementActionHistory:

Returns

dump_action_history

func dump_action_history() -> Error:

Returns

get_settings

func get_settings() -> GridPlacementSettings:

Returns

get_placement_rules

func get_placement_rules() -> Array[PlacementRule]:

Returns

get_visual_settings

func get_visual_settings() -> PlacementVisualSettings:

Returns

get_systems_context

func get_systems_context() -> PlacementSystemsContext:

Returns

get_manipulation_settings

func get_manipulation_settings() -> ManipulationSettings:

Returns

get_runtime_checks

func get_runtime_checks() -> PlacementRuntimeChecks:

Returns

get_templates

func get_templates() -> PlacementTemplates:

Returns

get_indicator_context

func get_indicator_context() -> IndicatorContext:

Returns

get_actions

func get_actions() -> PlacementActions:

Returns

get_debug_settings

func get_debug_settings() -> PlacementDebugSettings:

Returns

get_editor_issues

func get_editor_issues() -> Array[String]:

Returns

get_runtime_issues

func get_runtime_issues() -> Array[String]:

Returns

log_runtime_issues

func log_runtime_issues() -> Array[String]:

Returns

validate_editor

func validate_editor() -> bool:

Returns

validate_runtime

func validate_runtime() -> bool:

Returns