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
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: