81 lines
2.2 KiB
GDScript
81 lines
2.2 KiB
GDScript
extends Control
|
|
|
|
@onready var tabs = [
|
|
$HBoxContainer/BuildingTab, $HBoxContainer/BuildingTab2, $HBoxContainer/BuildingTab3
|
|
]
|
|
|
|
@onready var building_data = Data.data.buildings
|
|
@onready var buildings = building_data.keys()
|
|
|
|
|
|
@onready var v_box_container: HBoxContainer = $Buildings/VBoxContainer
|
|
|
|
@onready var icons = [
|
|
$Buildings/VBoxContainer/BuildingIcon,
|
|
$Buildings/VBoxContainer/BuildingIcon2,
|
|
$Buildings/VBoxContainer/BuildingIcon3,
|
|
$Buildings/VBoxContainer/BuildingIcon4
|
|
]
|
|
|
|
@onready var spacers = [
|
|
$Buildings/VBoxContainer/Spacer,
|
|
$Buildings/VBoxContainer/Spacer2,
|
|
$Buildings/VBoxContainer/Spacer3
|
|
]
|
|
|
|
|
|
func _ready() -> void:
|
|
swap_to_tab(0)
|
|
Triggerer.listen("stone", _trigger_check)
|
|
Triggerer.listen("wood", _trigger_check)
|
|
|
|
|
|
func swap_to_tab(index):
|
|
for i in range(0, tabs.size()):
|
|
if i == index:
|
|
tabs[i].select()
|
|
else:
|
|
tabs[i].unselect()
|
|
|
|
var filtered_buildings = buildings.filter(func(building): return building_data[building].has("type") and building_data[building].type == tabs[index].key and (not building_data[building].has("disabled") or not building_data[building].disabled))
|
|
|
|
for i in range(0, icons.size()):
|
|
if i < filtered_buildings.size():
|
|
icons[i].visible = true
|
|
icons[i].key = filtered_buildings[i]
|
|
icons[i].texture_rect.texture = Data.data.images[filtered_buildings[i]]
|
|
icons[i]._created()
|
|
|
|
if i > 0:
|
|
spacers[i - 1].visible = true
|
|
else:
|
|
icons[i].visible = false
|
|
|
|
if i > 0:
|
|
spacers[i - 1].visible = false
|
|
|
|
_update_icons()
|
|
|
|
func _trigger_check(_data):
|
|
_update_icons()
|
|
|
|
func _update_icons():
|
|
for i in range(0, icons.size()):
|
|
if icons[i].visible:
|
|
var key = icons[i].key
|
|
var build_data = Data.data.buildings[key]
|
|
if (build_data.cost.has("stone") and Persister.get_value("stone", PersisterEnums.Scope.UNKNOWN, 0) < int(build_data.cost.stone)) or (build_data.cost.has("wood") and Persister.get_value("wood", PersisterEnums.Scope.UNKNOWN, 0) < int(build_data.cost.wood)):
|
|
icons[i].modulate = Color(1, 0.5, 0.5, 1)
|
|
else:
|
|
icons[i].modulate = Color(1, 1, 1, 1)
|
|
|
|
func _on_building_tab_clicked() -> void:
|
|
swap_to_tab(0)
|
|
|
|
|
|
func _on_building_tab_2_clicked() -> void:
|
|
swap_to_tab(1)
|
|
|
|
|
|
func _on_building_tab_3_clicked() -> void:
|
|
swap_to_tab(2)
|