Swarm/HexOutline.gd

67 lines
1.5 KiB
GDScript3
Raw 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
const BUILD_GHOST = 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)
func _on_insect_tile_moved(tile: InsectTile, to: Vector4i) -> void:
queue_free()
func _on_insect_placed(resource: TileResource, is_black: bool, pos: Vector4i) -> void:
queue_free()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if Input.is_action_just_pressed("place_tile"):
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_entered():
hovered = true
tile = BUILD_GHOST.instantiate()
tile.resource = insect_resource
tile.is_black = is_black
tile.map_reference = map_reference
add_child(tile)
func _on_input_event(camera, event, position, normal, shape_idx):
pass # Replace with function body.
func _on_mouse_exited():
hovered = false
if tile:
tile.queue_free()
tile = null