Refactored to use Vector4i. Added Spider/Grasshopper. TODO: Ant
This commit is contained in:
parent
ff4aa93845
commit
11f8a71f52
19 changed files with 482 additions and 326 deletions
|
|
@ -1,4 +1,5 @@
|
|||
extends TextureButton
|
||||
class_name InsectButton
|
||||
|
||||
@onready var hex = $Hex
|
||||
@onready var tile_count_label = $Hex/TileCountLabel
|
||||
|
|
@ -45,30 +46,24 @@ func enable() -> void:
|
|||
|
||||
|
||||
func _on_placement_cancelled() -> void:
|
||||
selected = false
|
||||
refresh_state()
|
||||
|
||||
func _on_insect_placed(resource: TileResource, _is_black: bool, pos: Vector4i) -> void:
|
||||
refresh_state()
|
||||
|
||||
if not is_empty():
|
||||
enable()
|
||||
if insect_resource == resource and _is_black == is_black:
|
||||
decrement_tile_count()
|
||||
|
||||
if hovered and not is_empty():
|
||||
hover()
|
||||
else:
|
||||
unhover()
|
||||
|
||||
func _on_insect_placed(resource: TileResource, is_black: bool, pos: HexGrid.CubeCoordinates) -> void:
|
||||
func refresh_state() -> void:
|
||||
selected = false
|
||||
|
||||
if not is_empty():
|
||||
enable()
|
||||
|
||||
if hovered and not is_empty():
|
||||
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:
|
||||
|
|
@ -78,33 +73,40 @@ func _ready() -> void:
|
|||
update_tile_count_display()
|
||||
insect_icon.texture = insect_resource.ui_texture
|
||||
|
||||
if is_black != GameData.is_player_black:
|
||||
#disabled = true
|
||||
#return
|
||||
pass
|
||||
if is_black != GameData.is_player_black and not GameData.debug:
|
||||
disabled = true
|
||||
return
|
||||
|
||||
GameEvents.insect_selected.connect(_on_insect_selected)
|
||||
GameEvents.insect_placement_cancelled.connect(_on_placement_cancelled)
|
||||
GameEvents.insect_placed.connect(_on_insect_placed)
|
||||
GameEvents.insect_tile_selected.connect(_on_insect_tile_selected)
|
||||
GameEvents.insect_tile_moved.connect(_on_insect_tile_moved)
|
||||
GameEvents.insect_tile_deselected.connect(_on_insect_tile_deselected)
|
||||
|
||||
func _on_insect_tile_deselected(tile: InsectTile) -> void:
|
||||
refresh_state()
|
||||
|
||||
func _on_insect_selected(_resource: TileResource, _is_black: bool) -> void:
|
||||
if _resource != insect_resource:
|
||||
func _on_insect_tile_selected(tile: InsectTile) -> void:
|
||||
disable()
|
||||
|
||||
func _on_insect_tile_moved(tile: InsectTile, to: Vector4i) -> void:
|
||||
refresh_state()
|
||||
|
||||
func _on_insect_selected(button: InsectButton, _is_black: bool) -> void:
|
||||
if button != self:
|
||||
disable()
|
||||
|
||||
pass
|
||||
|
||||
func hover() -> void:
|
||||
if GameData.is_player_black != is_black:
|
||||
pass
|
||||
#return
|
||||
if GameData.is_player_black != is_black and not GameData.debug:
|
||||
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
|
||||
if GameData.is_player_black != is_black and not GameData.debug:
|
||||
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)
|
||||
|
|
@ -127,7 +129,7 @@ func _on_pressed():
|
|||
|
||||
selected = true
|
||||
|
||||
GameEvents.insect_selected.emit(insect_resource, is_black)
|
||||
GameEvents.insect_selected.emit(self, is_black)
|
||||
|
||||
release_focus()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue