class_name StreamingTargetPlan
extends RefCounted

## Immutable result of one runtime or editor target-planning operation.
## Tile-key sets use the streamer's existing `<tile_x>_<tile_y>` representation.

var focus_tile: AdtTileCoordinate:
	get:
		return _focus_tile

var _focus_tile: AdtTileCoordinate
var _wanted_tile_keys: Dictionary
var _retained_tile_keys: Dictionary


## Takes ownership of planner-created sets and freezes them. The planner creates
## these dictionaries independently from its catalog input, so no copy is needed.
func _init(
		focus_tile_value: AdtTileCoordinate,
		wanted_tile_keys_value: Dictionary,
		retained_tile_keys_value: Dictionary
) -> void:
	_focus_tile = focus_tile_value
	_wanted_tile_keys = wanted_tile_keys_value
	_retained_tile_keys = retained_tile_keys_value
	_wanted_tile_keys.make_read_only()
	_retained_tile_keys.make_read_only()


## Returns the immutable wanted tile-key set.
func wanted_tile_keys() -> Dictionary:
	return _wanted_tile_keys


## Returns the immutable retained tile-key set.
func retained_tile_keys() -> Dictionary:
	return _retained_tile_keys
