Swarm/HexOutline.gd

70 lines
1.6 KiB
GDScript3
Raw Permalink Normal View History

extends Area3D
var hovered: bool = false
var coordinates: Vector4i
var insect_resource: TileResource
var is_black: bool = false
var insect_tile: InsectTile
var tile: Node3D
var is_moving: bool = false
var map_reference: HexGrid
var is_active: bool = true
2025-06-10 01:32:17 +02:00
const BUILD_GHOST: PackedScene = preload("res://InsectTiles/BuildGhost.tscn")
# Called when the node enters the scene tree for the first time.
func _ready():
if insect_resource == null:
#print("Should not happen!")
return
if is_moving:
GameEvents.insect_tile_moved.connect(_on_insect_tile_moved)
else:
GameEvents.insect_placed.connect(_on_insect_placed)
2025-06-10 01:32:17 +02:00
tile = BUILD_GHOST.instantiate()
tile.resource = insect_resource
tile.is_black = is_black
tile.map_reference = map_reference
add_child(tile)
tile.visible = false
func _on_insect_tile_moved(tile: InsectTile, to: Vector4i) -> void:
is_active = false
queue_free()
func _on_insect_placed(resource: TileResource, is_black: bool, pos: Vector4i) -> void:
is_active = false
queue_free()
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
2025-06-10 01:32:17 +02:00
func _on_mouse_entered():
hovered = true
tile.visible = true
func _on_input_event(camera, event, position, normal, shape_idx):
if Input.is_action_just_pressed("place_tile") and is_active:
if hovered:
if is_moving:
GameEvents.insect_tile_moved.emit(insect_tile, coordinates)
else:
GameEvents.insect_placed.emit(insect_resource, is_black, coordinates)
func _on_mouse_exited():
hovered = false
2025-06-10 01:32:17 +02:00
tile.visible = false
#if tile:
#tile.queue_free()
#tile = null