The_Dark_Side_of_Earth/grid.gd

44 lines
1.1 KiB
GDScript3
Raw Normal View History

2025-09-15 19:03:18 +02:00
class_name Grid extends Node2D
@export var ground_radius : float
@export var cell_height : float
@export var num_collumns : int
@export var debug : bool
2025-09-16 00:19:40 +02:00
var buildings : Array[Building] = []
2025-09-15 19:03:18 +02:00
func _draw() -> void:
if !debug:
return
for i in range(10):
draw_arc(Vector2.ZERO, ground_radius + i * cell_height, 0, TAU, 250, Color.SKY_BLUE, 1.0, true);
for i in range(num_collumns):
var angle = i * TAU / num_collumns;
draw_line(Vector2.ZERO, 10000 * Vector2.from_angle(angle), Color.SKY_BLUE);
2025-09-16 00:19:40 +02:00
func add_building_to_collumn(building : Building, collumn : int):
# find the height of the top building in the buildings list:
2025-09-16 11:44:16 +02:00
building.location = Vector2(collumn, -1)
var spot_clear : bool = false
while(!spot_clear):
building.location.y += 1
spot_clear = true
for other in buildings:
if other.overlaps(building):
spot_clear = false
2025-09-16 00:19:40 +02:00
2025-09-16 11:44:16 +02:00
add_child(building)
2025-09-16 00:19:40 +02:00
# for testing
func _ready() -> void:
var packed : PackedScene = preload("res://building.tscn")
2025-09-16 11:44:16 +02:00
for i in range(100):
var test_building = packed.instantiate()
var collumn = randi() % 60
add_building_to_collumn(test_building, collumn)