fix gathering finding nearest item

This commit is contained in:
2024-10-21 16:35:56 +10:00
parent cd1bfd101c
commit 04337f7563

View File

@@ -132,8 +132,9 @@ func _get_nth_pile_pos(n: int) -> Vector3:
func _pick_up() -> void: func _pick_up() -> void:
if _target == null or _target.carried: if _target == null or _target.carried:
state = State.WAITING_FOR_NEW_ITEMS state = State.WAITING_FOR_NEW_ITEMS
if _nearby_items.size() > 0: var nearest_item := _find_nearest(_nearby_items.values())
_go_pick_up(_find_nearest(_nearby_items.values())) if nearest_item != null:
_go_pick_up(nearest_item)
elif _carrying_items.size() > 0: elif _carrying_items.size() > 0:
_go_deposit() _go_deposit()
return return
@@ -147,11 +148,12 @@ func _pick_up() -> void:
audio_player.play_sound(SoundManager.pop()) audio_player.play_sound(SoundManager.pop())
await get_tree().create_timer(_pickup_interval).timeout await get_tree().create_timer(_pickup_interval).timeout
if _carrying_items.size() == _max_carrying or _nearby_items.size() == 0: var nearest := _find_nearest(_nearby_items.values())
if _carrying_items.size() == _max_carrying or nearest == null:
_go_deposit() _go_deposit()
return return
_go_pick_up(_find_nearest(_nearby_items.values())) _go_pick_up(nearest)
func _deposit() -> void: func _deposit() -> void:
@@ -176,12 +178,13 @@ func _deposit() -> void:
_unit.anthill.deposit_honeydew(1) _unit.anthill.deposit_honeydew(1)
await get_tree().create_timer(_drop_interval).timeout await get_tree().create_timer(_drop_interval).timeout
if _nearby_items.size() == 0: var nearest := _find_nearest(_nearby_items.values())
if nearest == null:
state = State.WAITING_FOR_NEW_ITEMS state = State.WAITING_FOR_NEW_ITEMS
_unit.navigate(gathering_center) _unit.navigate(gathering_center)
return return
_go_pick_up(_find_nearest(_nearby_items.values())) _go_pick_up(nearest)
func _find_nearest(items: Array) -> Honeydew: func _find_nearest(items: Array) -> Honeydew:
@@ -248,14 +251,15 @@ func _on_anthill_buy_ant() -> void:
if state != State.WAITING_FOR_MORE_SPACE: if state != State.WAITING_FOR_MORE_SPACE:
return return
var nearest := _find_nearest(_nearby_items.values())
if ( if (
_carrying_items.size() == _max_carrying _carrying_items.size() == _max_carrying
or (_carrying_items.size() > 0 and _nearby_items.size() == 0) or (_carrying_items.size() > 0 and nearest == null)
): ):
_go_deposit() _go_deposit()
return return
if _nearby_items.size() > 0: if nearest != null:
_go_pick_up(_find_nearest(_nearby_items.values())) _go_pick_up(nearest)
else: else:
state = State.WAITING_FOR_NEW_ITEMS state = State.WAITING_FOR_NEW_ITEMS