26 lines
954 B
GDScript
26 lines
954 B
GDScript
class_name TaskGoCloseToCamp
|
|
extends Task
|
|
|
|
func run(blackboard: Dictionary) -> void:
|
|
var player: PlayerManager = blackboard["player"]
|
|
var world: World = blackboard["world"]
|
|
var navigation: TilemapNavigation = blackboard["navigation"]
|
|
|
|
# allow a radius of the player view distance / 1.5 to find a camp
|
|
var camp: Vector2i = world.camp_manager.camp
|
|
if TilemapNavigation.manhattan_distance(player.board_position, camp) < player.view_distance / 1.5:
|
|
blackboard["path"] = []
|
|
status = SUCCESS
|
|
status_reason = "Player is close to camp"
|
|
return
|
|
|
|
var path: Array[Vector2i] = navigation.cached_path_allow_neighbors(blackboard, "path_to_camp", camp, 99999999)
|
|
if path.size() > 0:
|
|
blackboard["path"] = path
|
|
status = FAILURE
|
|
status_reason = "Found path to camp"
|
|
return
|
|
|
|
status = FAILURE
|
|
status_reason = "No path found to camp " + str(camp)
|