Map generation fully working
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
@@ -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,14 +42,6 @@ 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):
|
||||||
@@ -58,6 +49,13 @@ func populate_terrain(startPos: Vector2i):
|
|||||||
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()
|
||||||
|
|
||||||
|
|||||||
@@ -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"]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user