import { Point } from "@devexpress/utils/lib/geometry/point"; import { IAStarContext } from "./AStarContext"; export class AStarCalculator { static calculate(context: IAStarContext): void { if(context) { let callBack: (context: IAStarContext) => any = this.start(context); while(callBack) callBack = callBack(context); } } private static start(context: IAStarContext) { context.start(); return context.shouldStartContinue ? AStarCalculator.startContinue : AStarCalculator.finishWithPath; } private static startContinue(context: IAStarContext) { context.startContinue(); return context.shouldFinish ? AStarCalculator.finishWithPath : AStarCalculator.endContinue; } private static endContinue(context: IAStarContext) { context.endContinue(); return context.shouldStartContinue ? AStarCalculator.startContinue : AStarCalculator.finishWithoutPath; } private static finishWithPath(context: IAStarContext) { context.finishWithPath(); } private static finishWithoutPath(context: IAStarContext) { context.finishWithoutPath(); } }