class_name PlayerCoolerCapacity extends Node const PlayerWalletType = preload("res://economy/player_wallet.gd") const PlayerHomeStateType = preload("res://homes/player_home_state.gd") signal capacity_changed(level: int, capacity: int) ## Compatibility adapter for saves and systems that still refer to the old ## cooler-capacity object. Storage is now derived exclusively from the player's ## home tier; this object is not independently purchasable. const CAPACITIES: Array[int] = [9, 18, 27, 36, 45, 54, 63, 72] const EXPANSION_COSTS: Array[int] = [75, 175, 400, 850, 1500, 2500, 4000] const MAX_LEVEL: int = 7 const MAX_CAPACITY: int = 72 var _home_state: PlayerHomeStateType var _legacy_capacity_level: int = 0 func bind_home_state(home_state: PlayerHomeStateType) -> void: if _home_state == home_state: return if ( _home_state != null and _home_state.changed.is_connected(_on_home_changed) ): _home_state.changed.disconnect(_on_home_changed) _home_state = home_state if ( _home_state != null and not _home_state.changed.is_connected(_on_home_changed) ): _home_state.changed.connect(_on_home_changed) _on_home_changed() func get_level() -> int: return _legacy_capacity_level func get_capacity() -> int: if _home_state != null: # A new home upgrade grants its authored capacity. Older saves retain any # separately purchased storage level so reducing the first RV tier cannot # hide or discard items that were already placed in later slots. return maxi( _home_state.get_storage_capacity(), CAPACITIES[clampi(_legacy_capacity_level, 0, MAX_LEVEL)], ) return CAPACITIES[clampi(_legacy_capacity_level, 0, MAX_LEVEL)] func get_next_capacity() -> int: return -1 func get_next_cost() -> int: return -1 func can_purchase(_wallet: PlayerWalletType) -> bool: return false func purchase(_wallet: PlayerWalletType) -> bool: return false func restore_level(level: int) -> bool: var validated: int = clampi(level, 0, MAX_LEVEL) var changed: bool = _legacy_capacity_level != validated _legacy_capacity_level = validated if changed: capacity_changed.emit(get_level(), get_capacity()) return true func reset_to_defaults() -> void: restore_level(0) func to_save_data() -> Dictionary: return {"capacity_level": get_level()} func _on_home_changed() -> void: capacity_changed.emit(get_level(), get_capacity())