initial commit...
Map, TileSet, Terrains.
This commit is contained in:
45
tile_map_layer.gd
Normal file
45
tile_map_layer.gd
Normal file
@@ -0,0 +1,45 @@
|
||||
extends Node
|
||||
|
||||
const CHUNK_SIZE: int = 12;
|
||||
const CHUNK_DOUBLE: int = CHUNK_SIZE*2;
|
||||
|
||||
func _get_player_position() -> Vector2i:
|
||||
return Vector2i(1, 1)
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _on_exited_chunk():
|
||||
$VisibleOnScreenNotifier2D.global_position = (get_tree().get_first_node_in_group("Player").global_position)
|
||||
|
||||
var thread: Thread = Thread.new()
|
||||
thread.start(func(): _populate_terrain())
|
||||
thread.wait_to_finish()
|
||||
|
||||
func _populate_terrain():
|
||||
var player_position: Vector2i = _get_player_position()
|
||||
|
||||
for i in range(-CHUNK_DOUBLE, CHUNK_DOUBLE):
|
||||
for j in range(-CHUNK_DOUBLE, CHUNK_DOUBLE):
|
||||
var pos: Vector2i = player_position + Vector2i(i, j)
|
||||
if _is_empty(pos):
|
||||
_populate_cell(pos, _pick_random_tile())
|
||||
|
||||
|
||||
func _populate_cell(pos: Vector2i, tile: Vector2i) -> void:
|
||||
$Ground.set_cell.call_deferet(pos, 1, tile, 0)
|
||||
|
||||
func _pick_random_tile() -> Vector2i:
|
||||
# Make all Tiles green
|
||||
return Vector2i(1, 1)
|
||||
|
||||
func _is_empty(pos: Vector2i) -> bool:
|
||||
# Check if the cell is empty (source_id is -1)
|
||||
return true if $Ground.get_cell_source_id(pos) == -1 else false;
|
||||
Reference in New Issue
Block a user