class_name World extends Node2D @export var game_resources: Array[GameResource] const PLAYER = preload("res://scene/player.tscn") var terrain_noise := FastNoiseLite.new() #var resource_noise: Noise = FastNoiseLite.new() var temp_size = 150 var temp_noise_val = [] var temp_noise_reg = [] var noise_regions := [-999,0,999] var atlas_regions := [Vector2i(0,1),Vector2i(0,0)] @onready var world_grid: TileMap = $world_grid func get_noise_value(x: int, y: int): return terrain_noise.get_noise_2d(x,y) * 500 #func is_resource_tile(x: int, y: int) -> GameResource: #var dist = sqrt(x ^ 2 + y ^ 2) #for res: GameResource in game_resources: #var noise = resource_noise.get_noise_2d(x, y) #if res.distance_probability(dist) > (noise + 1.0) / 2.0: #return res #return null func get_noise_region(x,y): var noise_val = get_noise_value(x,y) for i in range(noise_regions.size()): if noise_regions[i] <= noise_val and noise_val < noise_regions[i+1]: return i func _ready(): Grid.init(world_grid) terrain_noise.seed = randi() #resource_noise.seed = randi() for x in range(-temp_size, temp_size): for y in range(-temp_size, temp_size): Grid.change_location_data(Vector2i(x,y), Constants.TilemapLayers.GROUND, atlas_regions[get_noise_region(x,y)]) #var tile_res := is_resource_tile(x,y) #if tile_res: #change_location_resource(Vector2i(x,y), tile_res) #if not tile_res.gained_resource.is_connected(resource_manager._on_gained_resource): #tile_res.gained_resource.connect(resource_manager._on_gained_resource) temp_noise_val.append(get_noise_value(x,y)) temp_noise_reg.append(get_noise_region(x,y)) prints(temp_noise_val.min(), temp_noise_val.max()) for region in noise_regions.size(): prints(region, noise_regions[region], temp_noise_reg.count(region)) var player = PLAYER.instantiate() add_child(player) add_resources_to_map() func corrupt_location(loc: Vector2i): if Grid.corrupt_location(loc): var corrupted_cells := Grid.get_corrupted_cells() world_grid.set_cells_terrain_connect(Constants.TilemapLayers.CORRUPTION, corrupted_cells, 0, 0) func add_resources_to_map() -> void: for res: GameResource in game_resources: #res.gained_resource.connect(ResourceManager._on_gained_resource) var spawns = res.get_spawn_locations() for spawn in spawns: Grid.change_location_resource(spawn, res)