Files
romants/entities/ants/worker_ant.gd
2024-10-07 23:50:50 +02:00

66 lines
1.9 KiB
GDScript

class_name WorkerAnt extends Ant
var capacity:=0
var target:Node3D
var source_target:CollectableResource
func _enter_tree() -> void:
Game.instance.score += 1
func _process(delta: float) -> void:
if Player.instance.selected_unit == self:
$image.visible = true
else:
$image.visible = false
$base_ant/AnimationTree.set("parameters/blend_position", velocity.length()/speed)
func on_interact(object:CollisionObject3D, point:Vector3)->void:
target = null
source_target = null
if object is Terrain:
go_to(point)
elif object is CollectableResource:
var resource := object as CollectableResource
target = resource
source_target = resource
go_to(target.global_position)
func _on_target_reached() -> void:
if target is CollectableResource:
var resource := target as CollectableResource
capacity = resource.collect(5)
target = PlayerCamp.instance
go_to(target.global_position)
elif target is PlayerCamp:
var camp := target as PlayerCamp
match source_target.type:
CollectableResource.ResourceType.FOOD:
camp.food_capacity += capacity
CollectableResource.ResourceType.WOOD:
camp.wood_capacity += capacity
CollectableResource.ResourceType.STONE:
camp.stone_capacity += capacity
capacity = 0
target = source_target
go_to(target.global_position)
func _on_area_3d_area_entered(area: Area3D) -> void:
if area.get_parent() is CollectableResource:
var resource := area.get_parent() as CollectableResource
capacity = resource.collect(5)
target = PlayerCamp.instance
go_to(target.global_position)
elif area.get_parent() is PlayerCamp:
var camp := area.get_parent() as PlayerCamp
match source_target.type:
CollectableResource.ResourceType.FOOD:
camp.food_capacity += capacity
CollectableResource.ResourceType.WOOD:
camp.wood_capacity += capacity
CollectableResource.ResourceType.STONE:
camp.stone_capacity += capacity
capacity = 0
target = source_target
go_to(target.global_position)