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 GBConfig resource to the container. The config contains the user-visible settings, templates, rules, and runtime checks used by the systems. - Create and assign a GBLevelContext and a GBOwner in your scene, then ensure they are wired into the container's contexts (usually via the injector). The GBLevelContext provides tilemap / tilelayer lookup and spatial context required for placement and targeting. The GBOwner 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 GBLevelContext and a GBOwner instance are created and assigned to the container's contexts. 2. The GBInjectorSystem 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 (GBInjectorSystem) handles both dependency injection and automatic validation. No manual validation calls are required in most cases.

class PlacementContainer extends GBResource
PlacementContainer

Properties

config

Main configuration resource for the grid building system.

@export var config: GBConfig

owner_context

var owner_context: PlacementOwnerProvider = get_contexts().owner

debug_settings

var debug_settings = _get_debug_settings_for_logger()

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() -> GBContexts:

Returns

get_states

func get_states() -> GBStates:

Returns

get_logger

func get_logger() -> GBLogger:

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_settings

func get_settings() -> GBSettings:

Returns

get_placement_rules

func get_placement_rules() -> Array[PlacementRule]:

Returns

get_visual_settings

func get_visual_settings() -> GBVisualSettings:

Returns

get_systems_context

func get_systems_context() -> GBSystemsContext:

Returns

get_manipulation_settings

func get_manipulation_settings() -> ManipulationSettings:

Returns

get_runtime_checks

func get_runtime_checks() -> GBRuntimeChecks:

Returns

get_templates

func get_templates() -> GBTemplates:

Returns

get_indicator_context

func get_indicator_context() -> IndicatorContext:

Returns

get_actions

func get_actions() -> GBActions:

Returns

get_debug_settings

func get_debug_settings() -> GBDebugSettings:

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