hadean-godot/Scripts/BuildMenu.gd

35 lines
967 B
GDScript

extends VBoxContainer
class_name BuildMenu
@export var grid_input: GridInput
@export var grid: Grid
func build_button_pressed(button: BuildButton):
grid_input.request_area(
button.building,
request_confirmed,
request_cancelled,
GridInput.Style.Build,
button.building.area_type,
false
)
func tile_is_valid_at_location(building: BuildingData, tile_pos: Vector2i) -> bool:
for requirement in building.field_requirements:
if !requirement.is_satisfied_at_position(self.grid, tile_pos):
return false
return true
func request_confirmed(building: BuildingData, area: Rect2i) -> void:
for x in range(area.position.x, area.position.x + area.size.x):
for y in range(area.position.y, area.position.y + area.size.y):
if !tile_is_valid_at_location(building, Vector2i(x, y)): continue
var new_tile = Building.new(Vector2i(x, y), Vector2i.ONE, building)
grid.add_child(new_tile)
func request_cancelled(building: BuildingData) -> void:
pass