Map generation fully working

This commit is contained in:
gdz
2025-12-07 21:55:28 +01:00
parent dd50a00cfa
commit c57076cd52
4 changed files with 18 additions and 29 deletions

View File

@@ -1,13 +1,17 @@
extends Node extends Node
@onready var _Map = $Map @onready var _Map: Node = $Map
#@onready var _Player = $Player #@onready var _Player = $Player
#@onready var _Camera = $WorldCamera #@onready var _Camera = $WorldCamera
@export var mapSize: int = 15
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: 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. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:

View File

@@ -8,6 +8,7 @@
[node name="Main" type="Node"] [node name="Main" type="Node"]
script = ExtResource("1_qw60k") script = ExtResource("1_qw60k")
mapSize = 100
[node name="Map" parent="." instance=ExtResource("1_1r6ip")] [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"] [node name="Sprite2D" type="Sprite2D" parent="CameraController"]
texture = ExtResource("5_2a143") texture = ExtResource("5_2a143")
[editable path="Map"]

View File

@@ -20,7 +20,6 @@ const GREEN_TILE: Vector2i = Vector2i(1, 1)
var tilemap: TileMap; var tilemap: TileMap;
@onready var Player = $Player/AnimatedSprite2D
@onready var GroundLayer: TileMapLayer = $Ground @onready var GroundLayer: TileMapLayer = $Ground
func _get_player_position() -> Vector2i: func _get_player_position() -> Vector2i:
@@ -43,21 +42,20 @@ func _ready() -> void:
func _process(delta: float) -> void: func _process(delta: float) -> void:
pass 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): func populate_terrain(startPos: Vector2i):
for i in range(-CHUNK_DOUBLE, CHUNK_DOUBLE): for i in range(-CHUNK_DOUBLE, CHUNK_DOUBLE):
for j in range(-CHUNK_DOUBLE, CHUNK_DOUBLE): for j in range(-CHUNK_DOUBLE, CHUNK_DOUBLE):
var pos: Vector2i = startPos + Vector2i(i, j) var pos: Vector2i = startPos + Vector2i(i, j)
if _is_empty(pos): if _is_empty(pos):
_populate_cell(pos, 1, _pick_random_tile()) _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(): func _populate_terrain():
var player_position: Vector2i = _get_player_position() var player_position: Vector2i = _get_player_position()

View File

@@ -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="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="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"] [node name="Map" type="Node"]
script = ExtResource("1_anho1") script = ExtResource("1_anho1")
@@ -24,16 +21,3 @@ metadata/_edit_lock_ = true
[node name="Details" type="TileMapLayer" parent="."] [node name="Details" type="TileMapLayer" parent="."]
tile_set = ExtResource("2_fyo8k") tile_set = ExtResource("2_fyo8k")
metadata/_edit_lock_ = true 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"]