Iron-Throne/Scripts/iso_tileset.gd

45 lines
1.3 KiB
GDScript3
Raw Permalink Normal View History

2024-07-07 13:39:03 +10:00
# mapped to iso_tileset.png
2024-07-07 12:33:46 +10:00
# 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)