extends CanvasLayer signal build(building: Building) var groups_visible: Array[BuildingGroup] = [] var buildings_visible: Array[Building] = [] var selected_building: Building const ADVANCED_BUILDING_GROUP = preload("res://data/buildings/advanced/advanced_building_group.tres") const BASIC_BUILDING_GROUP = preload("res://data/buildings/basic/basic_building_group.tres") @onready var building_groups: ItemList = $MarginContainer/PanelContainer/HBoxContainer/ScrollContainer/VBoxContainer/BuildingGroups @onready var buildings: ItemList = $MarginContainer/PanelContainer/HBoxContainer/ScrollContainer2/VBoxContainer/Buildings @onready var title: Label = $MarginContainer/PanelContainer/HBoxContainer/DetailsContainer/Title @onready var description: Label = $MarginContainer/PanelContainer/HBoxContainer/DetailsContainer/Description @onready var build_materials: GridContainer = $MarginContainer/PanelContainer/HBoxContainer/DetailsContainer/BuildMaterials @onready var build_buttons_container: HBoxContainer = $MarginContainer/PanelContainer/HBoxContainer/DetailsContainer/BuildButtonsContainer func _ready() -> void: _add_building_group(BASIC_BUILDING_GROUP) _add_building_group(ADVANCED_BUILDING_GROUP) #building_groups.set_focus() func _add_building_group(group: BuildingGroup) -> void: building_groups.add_item(group.name, group.atlas_texture) groups_visible.append(group) func _on_building_groups_item_selected(index: int) -> void: buildings.clear() buildings_visible.clear() for building in groups_visible[index].buildings: buildings_visible.append(building) buildings.add_item(building.name, building.atlas_texture) description.hide() build_materials.hide() build_buttons_container.hide() selected_building = null func _on_buildings_item_selected(index: int) -> void: selected_building = buildings_visible[index] title.text = selected_building.name description.text = selected_building.description for child in build_materials.get_children(): child.queue_free() for res: GameResource in selected_building.cost.keys(): var image = TextureRect.new() var texture = AtlasTexture.new() texture.atlas = preload("res://assets/scifi_tilesheet@2.png") texture.region = Rect2(64 * res.atlas_location, Vector2(64, 64)) image.texture = texture build_materials.add_child(image) var label = Label.new() label.text = str(selected_building.cost[res]) if not ResourceManager.has_amount(res, selected_building.cost[res]): label.add_theme_color_override("font_color", Color.RED) build_materials.add_child(label) description.show() build_materials.show() build_buttons_container.show() func _on_build_button_pressed() -> void: if selected_building: build.emit(selected_building) queue_free()