66 lines
1.5 KiB
GDScript
66 lines
1.5 KiB
GDScript
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
|