41 lines
1.1 KiB
GDScript
41 lines
1.1 KiB
GDScript
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
|