From c57076cd522691ee86c0fceb8eadfc71e4a408ac Mon Sep 17 00:00:00 2001 From: gdz Date: Sun, 7 Dec 2025 21:55:28 +0100 Subject: [PATCH] Map generation fully working --- Scenes/Main/main.gd | 8 ++++++-- Scenes/Main/main.tscn | 3 +++ Scenes/Map/Map.gd | 18 ++++++++---------- Scenes/Map/map.tscn | 18 +----------------- 4 files changed, 18 insertions(+), 29 deletions(-) diff --git a/Scenes/Main/main.gd b/Scenes/Main/main.gd index fb69b4b..c136bd5 100644 --- a/Scenes/Main/main.gd +++ b/Scenes/Main/main.gd @@ -1,13 +1,17 @@ extends Node -@onready var _Map = $Map +@onready var _Map: Node = $Map #@onready var _Player = $Player #@onready var _Camera = $WorldCamera +@export var mapSize: int = 15 + # Called when the node enters the scene tree for the first time. func _ready() -> void: - _Map.populate_terrain($CameraController.global_position) + var thread: Thread = Thread.new() + thread.start(func(): _Map.generate_map(mapSize)) + thread.wait_to_finish() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: diff --git a/Scenes/Main/main.tscn b/Scenes/Main/main.tscn index 32a7a5b..f005741 100644 --- a/Scenes/Main/main.tscn +++ b/Scenes/Main/main.tscn @@ -8,6 +8,7 @@ [node name="Main" type="Node"] script = ExtResource("1_qw60k") +mapSize = 100 [node name="Map" parent="." instance=ExtResource("1_1r6ip")] @@ -22,3 +23,5 @@ metadata/_custom_type_script = "uid://xrddv2epi3ty" [node name="Sprite2D" type="Sprite2D" parent="CameraController"] texture = ExtResource("5_2a143") + +[editable path="Map"] diff --git a/Scenes/Map/Map.gd b/Scenes/Map/Map.gd index 847b527..dba4d3a 100644 --- a/Scenes/Map/Map.gd +++ b/Scenes/Map/Map.gd @@ -20,7 +20,6 @@ const GREEN_TILE: Vector2i = Vector2i(1, 1) var tilemap: TileMap; -@onready var Player = $Player/AnimatedSprite2D @onready var GroundLayer: TileMapLayer = $Ground func _get_player_position() -> Vector2i: @@ -43,21 +42,20 @@ func _ready() -> void: func _process(delta: float) -> void: pass -func _on_exited_chunk(): - print("Chunk exited...") - $VisibleOnScreenNotifier2D.global_position = Player.global_position - - var thread: Thread = Thread.new() - thread.start(func(): _populate_terrain()) - thread.wait_to_finish() - func populate_terrain(startPos: Vector2i): for i in range(-CHUNK_DOUBLE, CHUNK_DOUBLE): for j in range(-CHUNK_DOUBLE, CHUNK_DOUBLE): var pos: Vector2i = startPos + Vector2i(i, j) if _is_empty(pos): _populate_cell(pos, 1, _pick_random_tile()) - + +func generate_map(mapSize: int): + print_debug("Generating map") + for x in range(-mapSize, mapSize): + for y in range(-mapSize, mapSize): + var pos: Vector2i = Vector2i(x, y) + _populate_cell(pos, 1, _pick_random_tile()) + func _populate_terrain(): var player_position: Vector2i = _get_player_position() diff --git a/Scenes/Map/map.tscn b/Scenes/Map/map.tscn index a9e708b..8ab65e1 100644 --- a/Scenes/Map/map.tscn +++ b/Scenes/Map/map.tscn @@ -1,10 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://cywuuce71rmgb"] +[gd_scene load_steps=3 format=3 uid="uid://cywuuce71rmgb"] [ext_resource type="Script" uid="uid://dneqmqsd8yj4p" path="res://Scenes/Map/Map.gd" id="1_anho1"] [ext_resource type="TileSet" uid="uid://duodt2t14xjc8" path="res://Resource/UrbanKitTileMap.tres" id="2_fyo8k"] -[ext_resource type="Script" uid="uid://bapvlrx6dm7gu" path="res://Scenes/Map/visible_on_screen_notifier_2d.gd" id="3_eu35m"] - -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_vjcy3"] [node name="Map" type="Node"] script = ExtResource("1_anho1") @@ -24,16 +21,3 @@ metadata/_edit_lock_ = true [node name="Details" type="TileMapLayer" parent="."] tile_set = ExtResource("2_fyo8k") metadata/_edit_lock_ = true - -[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] -rect = Rect2(0, 0, 100, 100) -script = ExtResource("3_eu35m") -metadata/_edit_lock_ = true -metadata/_edit_group_ = true - -[node name="Sprite2D" type="Sprite2D" parent="VisibleOnScreenNotifier2D"] -position = Vector2(50, 50) -scale = Vector2(10, 10) -texture = SubResource("PlaceholderTexture2D_vjcy3") - -[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_exited_chunk"]