class_name CassetteText extends Resource @export var target_type: Array[Data.TargetType] @export var energy_type: Data.EnergyType @export var attributes: Dictionary[String, float] @export var features: Array[Feature] @export_multiline var text: String func get_attribute(attribute: String) -> float: if attributes.has(attribute): return attributes[attribute] return 0.0 func set_attribute(attribute: String, value: float) -> void: attributes[attribute] = value func get_duplicate() -> CassetteText: var cassette_text: CassetteText = self.duplicate() cassette_text.target_type = target_type.duplicate() cassette_text.attributes = attributes.duplicate() cassette_text.features = features.duplicate() return cassette_text func tower_features_applied() -> CassetteText: var cassette_text: CassetteText = get_duplicate() for feature: Feature in features: feature.attach_to_tower(cassette_text) return cassette_text func weapon_features_applied() -> CassetteText: var cassette_text: CassetteText = get_duplicate() for feature: Feature in features: feature.attach_to_weapon(cassette_text) return cassette_text