24 lines
668 B
GDScript3
24 lines
668 B
GDScript3
|
|
@tool
|
||
|
|
extends Resource
|
||
|
|
class_name TowerListResource
|
||
|
|
|
||
|
|
@export var towers : Array[TowerResource] : set = towersHasChanged
|
||
|
|
|
||
|
|
func getTowerSceneById(towerType : Tower.TYPES) -> PackedScene :
|
||
|
|
var towerIndex := towers.find_custom(func(towerResource): return towerResource.towerType == towerType)
|
||
|
|
return towers[towerIndex].towerScene
|
||
|
|
|
||
|
|
|
||
|
|
func towersHasChanged(value : Array) -> void:
|
||
|
|
if not Engine.is_editor_hint():
|
||
|
|
return
|
||
|
|
|
||
|
|
if value.back() == null:
|
||
|
|
value.pop_back()
|
||
|
|
value.append(TowerResource.new())
|
||
|
|
towers = value
|
||
|
|
for towerResource in towers:
|
||
|
|
if not towerResource.changed.is_connected(emit_changed):
|
||
|
|
towerResource.changed.connect(emit_changed)
|
||
|
|
emit_changed()
|