GodotComponentTest/scenes/Island.gd

44 lines
1.2 KiB
GDScript
Raw Normal View History

2022-09-15 12:32:45 +02:00
tool
extends Spatial
class_name Island
export var generate: bool = false setget do_generate
export var level_size: int = 10
signal island_tile_selected
signal island_tile_hover
func generate():
var hexgrid = preload("res://addons/gdhexgrid/HexGrid.gd").new()
var HexTile3D = preload("res://scenes/HexTile3D.tscn")
var tiles = $Tiles
for node in tiles.get_children():
tiles.remove_child(node)
node.queue_free()
for i in range(-level_size / 2, level_size / 2):
for j in range (-level_size / 2, level_size / 2):
var pos = hexgrid.get_hex_center_from_offset(Vector2(i, j))
var tile = HexTile3D.instance()
var height = (sin(pos.y * 0.3) * sin(pos.y * 0.8) * 0.8 + cos ((pos.x) * 0.9) * 1.24) * 0.5 + 0.4 + rand_range(-0.3, 0.3)
tile.transform.origin = Vector3(pos.x, height, pos.y)
tile.connect("tile_selected", self, "on_tile_selected")
tile.connect("tile_mouse_entered", self, "on_tile_hover")
tiles.add_child(tile)
print ("Generated island with " + str(tiles.get_child_count()) + " nodes")
func do_generate(flag: bool):
print ("Generating Level")
generate()
func on_tile_selected(tile):
emit_signal("island_tile_selected", self, tile)
func on_tile_hover(tile):
emit_signal("island_tile_hover", self, tile)