internal IEnumerable <IScenario> Convert(string mapFilepath, string scenFilepath, int maxScenario = int.MaxValue) { var scenarioList = new List <Scenario>(); if (!File.Exists(mapFilepath) || !File.Exists(scenFilepath)) { return(scenarioList); } using var streamReader = new StreamReader(new FileStream(scenFilepath, FileMode.Open)); string line = streamReader.ReadLine(); //skip first line of scenario file as useless. var scenarioParams = new ScenarioParams() { FilePath = mapFilepath, MapType = MapTypes.Grid }; for (int i = 0; i < maxScenario && !streamReader.EndOfStream; i++) { var fileScenario = new FileScenario(streamReader.ReadLine().Split('\t')); scenarioParams.ScenarioName = i.ToString(); scenarioParams.Start = new GridNode(fileScenario.StartX, fileScenario.StartY); scenarioParams.End = new GridNode(fileScenario.EndX, fileScenario.EndY); scenarioParams.ExpectedLength = fileScenario.ExpectedLength; var scen = new Scenario(); scen.TrySetScenario(scenarioParams); scenarioList.Add(scen); } return(scenarioList); }
public virtual MethodResult TrySetScenario(ScenarioParams @params) { IsSet = false; _params = @params; Map = MapSingleton.Instance.GetMap(_params.FilePath, _params.MapType); if (Map is EmptyMapWithError) { return(new MethodResult(false, Map.ToString())); } if (!Map.IsValidInMap(Start)) { return(new MethodResult(false, "Invalid Start Point. Is either on a position which it cannot be or out of the map")); } if (!Map.IsValidInMap(End)) { return(new MethodResult(false, "Invalid Stop Point. Is either on a position which it cannot be or out of the map")); } IsSet = true; return(MethodResult.WithSuccess); }