Code: Select all
boat_coords = (2176,289)
def SearchTrees():
tree_tiles = range(3203,3331)
trees = []
x,y = boat_coords
for tile in tree_tiles:
trees += GetStaticTilesArray(x-20,y-20,x+20,y+20,WorldNum(), tile)
return trees
def SortTrees(trees):
""" @param trees List of tuples(tile,x,y,z) """
trees_by_distance = {}
ordered_trees_list = []
prev_last_tree = (0,boat_coords[0],boat_coords[1])
def TreeDist(tree1,tree2):
return Dist(tree1[1],tree1[2],tree2[1],tree2[2])
for tree in trees:
td = TreeDist(tree, prev_last_tree)
if td % 2 == 0:
td-=1
trees_group = trees_by_distance.get(td, [])
trees_group.append(tree)
trees_by_distance[td] = trees_group
for current_distance in trees_by_distance:
trees = trees_by_distance[current_distance]
first_tree = last_tree = trees[0]
for tree1 in trees:
for tree2 in trees:
if(TreeDist(tree1, tree2) > TreeDist(first_tree,last_tree)):
first_tree, last_tree = tree1, tree2
if(TreeDist(prev_last_tree,last_tree) < TreeDist(prev_last_tree, first_tree)):
first_tree, last_tree = last_tree, first_tree
trees.sort(key=lambda tree: TreeDist(tree,first_tree))
ordered_trees_list += trees
prev_last_tree = last_tree
return ordered_trees_list
ordered_trees_list = SortTrees(SearchTrees())
for tree in ordered_trees_list:
tile,x,y,z = tree
newMoveXY(x,y,True,1,False)