43 lines
1.3 KiB
GDScript3
43 lines
1.3 KiB
GDScript3
|
# https://youtu.be/dclc8w6JW7Y?si=QSu2dwSILyatO_oa
|
||
|
|
||
|
extends TileMap
|
||
|
|
||
|
const source_atlas_blue_pos = Vector2i(0, 0)
|
||
|
const source_atlas_red_pos = Vector2i(1, 0)
|
||
|
const source_atlas_green_pos = Vector2i(2, 0)
|
||
|
const source_atlas_orange_pos = Vector2i(6, 0)
|
||
|
|
||
|
const source_atlas = 0
|
||
|
|
||
|
#used by the "procgen"
|
||
|
const source_atlas_array = [
|
||
|
source_atlas_blue_pos,
|
||
|
source_atlas_green_pos,
|
||
|
source_atlas_green_pos, # duplicate entry to tweak the generator
|
||
|
]
|
||
|
|
||
|
enum Layers {
|
||
|
layer0 = 0,
|
||
|
layer1 = 1,
|
||
|
layer2 = 2,
|
||
|
}
|
||
|
|
||
|
func _ready() -> void:
|
||
|
#for "procgen"
|
||
|
var rng: RandomNumberGenerator = RandomNumberGenerator.new()
|
||
|
rng.randomize()
|
||
|
|
||
|
for i in range(10):
|
||
|
for j in range(10):
|
||
|
var rand_tile = rng.randf_range(0, source_atlas_array.size())
|
||
|
set_cell(Layers.layer0, Vector2i(i + 30, j + 0), source_atlas, source_atlas_array[rand_tile], 0)
|
||
|
|
||
|
func _input(event) -> void:
|
||
|
if event is InputEventMouseButton:
|
||
|
if event.button_index == MOUSE_BUTTON_LEFT && event.is_pressed():
|
||
|
var clicked_pos = local_to_map(to_local(event.position))
|
||
|
|
||
|
#place a "house" prefab
|
||
|
set_cell(Layers.layer1, Vector2i(clicked_pos.x - 1, clicked_pos.y - 1), source_atlas, source_atlas_red_pos, 0)
|
||
|
set_cell(Layers.layer2, Vector2i(clicked_pos.x - 2, clicked_pos.y - 2), source_atlas, source_atlas_orange_pos, 0)
|