extends TextureButton @onready var hex = $Hex @onready var tile_count_label = $Hex/TileCountLabel @onready var insect_icon = $Hex/InsectIcon @export var insect_resource: TileResource = preload("res://Tile/Prefabs/Bee.tres") const HEX_BLACK = preload("res://InsectTiles/Assets/UI/hex_black.svg") const HEX_WHITE = preload("res://InsectTiles/Assets/UI/hex_white.svg") @export var is_black: bool = false var tile_count: int = 1 var selected: bool = false var hovered: bool = false var deactivated: bool = false func is_empty() -> bool: return tile_count <= 0 func update_tile_count_display() -> void: tile_count_label.text = str(tile_count) if is_empty(): disable() func decrement_tile_count() -> void: tile_count -= 1 update_tile_count_display() func disable() -> void: disabled = true deactivated = true var tween = get_tree().create_tween() tween.tween_property(self, "modulate", Color.DIM_GRAY, 0.15) func enable() -> void: disabled = false deactivated = false var tween = get_tree().create_tween() tween.tween_property(self, "modulate", Color.WHITE, 0.15) func _on_placement_cancelled() -> void: selected = false if not is_empty(): enable() if hovered and not is_empty(): hover() else: unhover() func _on_insect_placed(resource: TileResource, is_black: bool, pos: HexGrid.CubeCoordinates) -> void: selected = false if not is_empty(): enable() if hovered and not is_empty(): hover() else: unhover() if insect_resource == resource: decrement_tile_count() # Called when the node enters the scene tree for the first time. func _ready() -> void: if is_black: hex.texture = HEX_BLACK update_tile_count_display() insect_icon.texture = insect_resource.ui_texture if is_black != GameData.is_player_black: #disabled = true #return pass GameEvents.insect_selected.connect(_on_insect_selected) GameEvents.insect_placement_cancelled.connect(_on_placement_cancelled) GameEvents.insect_placed.connect(_on_insect_placed) func _on_insect_selected(_resource: TileResource, _is_black: bool) -> void: if _resource != insect_resource: disable() pass func hover() -> void: if GameData.is_player_black != is_black: pass #return var tween = get_tree().create_tween() tween.tween_property(hex, "position", Vector2(0, -16), 0.1).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_SPRING) func unhover() -> void: if GameData.is_player_black != is_black: pass #return var tween = get_tree().create_tween() tween.tween_property(hex, "position", Vector2(0, 0), 0.25).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_SPRING) func _on_mouse_entered(): hovered = true if not deactivated: hover() func _on_mouse_exited(): hovered = false if not selected: unhover() func _on_pressed(): if is_empty(): return selected = true GameEvents.insect_selected.emit(insect_resource, is_black) release_focus() func _input(event): if Input.is_action_just_pressed("ui_accept"): release_focus() return