extends Sprite signal positionReached var Route signal pathAnimationCompleted var isSelected = false var isMoving = false var boardUnitsIndex onready var region = get_parent().get_parent().get_parent() func on_ready():#this connects the unit to the main node using signals connect("pathAnimationCompleted",region, "_on_pathAnimationCompleted") snapToPosition() if region.boardUnits[boardUnitsIndex].faction == "enemyFaction": modulate = Color(1,0,0,1) if region.boardUnits[boardUnitsIndex].faction == "allyFaction": modulate = Color(0,1,0,1) # emit_signal("pathAnimationCompleted") func snapToPosition(): self.position = get_parent().get_parent().map_to_world(region.boardUnits[boardUnitsIndex].coords) var undertiles = [] undertiles.append(Vector2(region.boardUnits[boardUnitsIndex].coords.x,region.boardUnits[boardUnitsIndex].coords.y)) undertiles.append(Vector2(region.boardUnits[boardUnitsIndex].coords.x,region.boardUnits[boardUnitsIndex].coords.y+1)) undertiles.append(Vector2(region.boardUnits[boardUnitsIndex].coords.x+1,region.boardUnits[boardUnitsIndex].coords.y)) undertiles.append(Vector2(region.boardUnits[boardUnitsIndex].coords.x+1,region.boardUnits[boardUnitsIndex].coords.y+1)) # unitCurrentUndertiles = undertiles pass func moveOnPath(route:Array):#this coordinates the movement/animation isMoving=true var indexPosition = 0 for coords in route: if route[0] == coords: var t = Transform2D() t.origin = coords else: moveTo(route[indexPosition],coords) yield(self,"positionReached") indexPosition+=1 emit_signal("pathAnimationCompleted") isMoving = false var speed =4 onready var motion = Vector2(0,0) func moveTo(start:Vector2, destination:Vector2):#this does a step of the movement/animation. coordinated by moveOnPath var travel = destination-start motion = travel*speed yield(get_tree().create_timer(travel.length()/motion.length()), "timeout") motion= Vector2(0,0) var t = Transform2D() t.origin = destination transform = t emit_signal("positionReached") # unitCurrentPosition=GlobalTileMap.world_to_map(destination) snapToPosition() func _physics_process(delta): position += motion*delta