private static LoadPosition FindNextAfterError(string next, out bool fin) { LoadPosition pos = LoadPosition.Start; fin = false; while (next != EOF) { switch (next) { case "<General>": pos = LoadPosition.General; break; case "<JoystickSettings>": pos = LoadPosition.JoystickSettings; break; case "<JoystickButtonSettings>": pos = LoadPosition.JoystickButtonSettings; break; case "<IndexSettings>": pos = LoadPosition.IndexSettings; break; case "<IndexStats>": pos = LoadPosition.IndexStats; break; case "<GraphicSettings>": pos = LoadPosition.GraphicSettings; break; case "<ToolboxSettings>": pos = LoadPosition.ToolboxSettings; break; case "</Settings>": pos = LoadPosition.Settings; fin = true; break; } if (pos != LoadPosition.Start) { break; } next = reader.ReadNext(); } return(pos); }
public List<LoadPosition> GetLoadPositions(SearchZone zone) { List<LoadPosition> loadPositions = new List<LoadPosition>(); int deltaFrom = zone.DEFrom > 0 ? 1 : 0; int deltaTo = zone.DETo > 0 ? 1 : 0; int fromZone = Math.Max(1, (int)(zone.DEFrom * 5) + 90 * 5 + deltaFrom); int toZone = Math.Min(900, (int)(zone.DETo * 5) + 90 * 5 + deltaTo); for (int zoneId = fromZone; zoneId <= toZone; zoneId++) { LoadPosition loadPos = new LoadPosition(); loadPos.ZoneId = zoneId; loadPos.FirstStarNoInBin = 0; int raFrom = Math.Max(0, (int)Math.Floor(zone.RAFrom)); int raTo = Math.Min(360, (int)Math.Ceiling(zone.RATo) + 1); loadPos.FromRecordId = (uint)ZoneIndex[zoneId - 1].RAStartPositions[raFrom]; if (raTo == 360) loadPos.ToRecordId = (uint)ZoneIndex[zoneId - 1].TotalStarsInZone; else loadPos.ToRecordId = (uint)ZoneIndex[zoneId - 1].RAStartPositions[raTo]; loadPositions.Add(loadPos); } return loadPositions; }
private static void _Load() { if (!reader.FindFileFromPath()) { throw new FileNotFoundException(); } LoadPosition pos = LoadPosition.Start; bool fin = false; bool temp = true; // The file exists, read it and insert the read data into settings while (!reader.IsEmpty() && !fin) { //Console.WriteLine(reader.ReadNext()); string next = reader.ReadNext(); switch (pos) { case LoadPosition.Start: if (next == "<Settings>") { pos = LoadPosition.Settings; } else { throw new Exception("Did not find root tag '<Settings>'."); } break; case LoadPosition.Settings: switch (next) { case "<General>": pos = LoadPosition.General; break; case "<JoystickSettings>": pos = LoadPosition.JoystickSettings; break; case "<JoystickButtonSettings>": pos = LoadPosition.JoystickButtonSettings; break; case "<IndexSettings>": pos = LoadPosition.IndexSettings; break; case "<IndexStats>": pos = LoadPosition.IndexStats; break; case "<GraphicSettings>": pos = LoadPosition.GraphicSettings; dataHolder.cur_graphicSetting = new DataHolder.graphics_Object(); dataHolder.cur_graphicSetting.image = ""; // will make the image never be loaded with empty path break; case "<ToolboxSettings>": pos = LoadPosition.ToolboxSettings; break; case "</Settings>": fin = true; break; default: pos = LoadPosition.GraphicSettings; dataHolder.cur_graphicSetting = new DataHolder.graphics_Object(); break; } break; case LoadPosition.General: switch (next) { case "<DllPath>": pos = LoadPosition.GeneralDllPath; temp = true; break; case "<GraphicPath>": pos = LoadPosition.GeneralGraphicPath; temp = true; break; case "</General>": pos = LoadPosition.Settings; break; default: FindNextAfterError(next, out fin); break; } break; case LoadPosition.GeneralDllPath: if (next == "</DllPath>") { pos = LoadPosition.General; if (temp) { dataHolder.generalDllPath = ""; } } else if (temp) { dataHolder.generalDllPath = next; temp = false; } else { FindNextAfterError(next, out fin); } break; case LoadPosition.GeneralGraphicPath: if (next == "</GraphicPath>") { pos = LoadPosition.General; if (temp) { dataHolder.generalGraphicPath = ""; } } else if (temp) { dataHolder.generalGraphicPath = next; temp = false; } else { FindNextAfterError(next, out fin); } break; case LoadPosition.JoystickSettings: switch (next) { case "</JoystickSettings>": pos = LoadPosition.Settings; break; case "<Setting>": pos = LoadPosition.JoystickSettingsChild; dataHolder.cur_joystickSetting = new DataHolder.joystickSettings_Setting(); break; default: dataHolder.joystickSettings = null; pos = FindNextAfterError(next, out fin); break; } break; case LoadPosition.JoystickSettingsChild: string sj = dataHolder.cur_joystickSetting.NextData(); if (sj == EOF) { // If a new object needs to be created dataHolder.joystickSettings.Add(dataHolder.cur_joystickSetting); //dataHolder.cur_indexSetting = null; pos = LoadPosition.JoystickSettings; } else if (sj == "") { // If a value needs to be inserted into dataholder dataHolder.cur_joystickSetting.Insert(next); } else { // If a tag is needed to be compared if (sj != next) { dataHolder.joystickSettings = null; pos = FindNextAfterError(next, out fin); } } break; case LoadPosition.JoystickButtonSettings: switch (next) { case "</JoystickButtonSettings>": pos = LoadPosition.Settings; break; case "<Setting>": pos = LoadPosition.JoystickButtonSettingsChild; dataHolder.cur_joystickButtonSetting = new DataHolder.joystickButtonSettings_Setting(); break; default: dataHolder.joystickButtonSettings = null; pos = FindNextAfterError(next, out fin); break; } break; case LoadPosition.JoystickButtonSettingsChild: string sb = dataHolder.cur_joystickButtonSetting.NextData(); if (sb == EOF) { // If a new object needs to be created dataHolder.joystickButtonSettings.Add(dataHolder.cur_joystickButtonSetting); //dataHolder.cur_indexSetting = null; pos = LoadPosition.JoystickButtonSettings; } else if (sb == "") { // If a value needs to be inserted into dataholder dataHolder.cur_joystickButtonSetting.Insert(next); } else { // If a tag is needed to be compared if (sb != next) { dataHolder.joystickButtonSettings = null; pos = FindNextAfterError(next, out fin); } } break; case LoadPosition.IndexSettings: switch (next) { case "</IndexSettings>": pos = LoadPosition.Settings; break; case "<Setting>": pos = LoadPosition.IndexSettingsChild; dataHolder.cur_indexSetting = new DataHolder.indexSettings_Setting(); break; default: dataHolder.indexSettings = null; pos = FindNextAfterError(next, out fin); break; } break; case LoadPosition.IndexSettingsChild: string s = dataHolder.cur_indexSetting.NextData(); if (s == EOF) { // If a new object needs to be created dataHolder.indexSettings.Add(dataHolder.cur_indexSetting); //dataHolder.cur_indexSetting = null; pos = LoadPosition.IndexSettings; } else if (s == "") { // If a value needs to be inserted into dataholder dataHolder.cur_indexSetting.Insert(next); } else { // If a tag is needed to be compared if (s != next) { dataHolder.indexSettings = null; pos = FindNextAfterError(next, out fin); } } break; case LoadPosition.IndexStats: switch (next) { case "</IndexStats>": pos = LoadPosition.Settings; break; case "<Stats>": pos = LoadPosition.IndexStatsChild; break; default: dataHolder.indexStats = null; pos = FindNextAfterError(next, out fin); break; } break; case LoadPosition.IndexStatsChild: dataHolder.indexStats.Add(int.Parse(next)); if ((next = reader.ReadNext()) != "</Stats>") { dataHolder.indexStats = null; pos = FindNextAfterError(next, out fin); break; } pos = LoadPosition.IndexStats; break; case LoadPosition.GraphicSettings: switch (next) { case "<Index>": pos = LoadPosition.GraphicSettingsChild; dataHolder.cur_graphicSetting.Insert(next); break; case "<Index hidden>": pos = LoadPosition.GraphicSettingsChild; dataHolder.cur_graphicSetting.Insert(next); break; case "</GraphicSettings>": pos = LoadPosition.Settings; break; default: dataHolder.cur_graphicSetting = null; pos = FindNextAfterError(next, out fin); break; } break; case LoadPosition.GraphicSettingsChild: dataHolder.cur_graphicSetting.Insert(next); if (next == "</Index>") { pos = LoadPosition.GraphicSettings; } break; case LoadPosition.ToolboxSettings: switch (next) { case "<SimpleButton>": dataHolder.cur_toolboxSetting = new DataHolder.toolboxSettings_Control(DataHolder.toolboxSettings_Control.controltype.SimpleButton, false); pos = LoadPosition.ToolboxSettingsChild; break; case "<OnOffButton>": dataHolder.cur_toolboxSetting = new DataHolder.toolboxSettings_Control(DataHolder.toolboxSettings_Control.controltype.OnOffButton, false); pos = LoadPosition.ToolboxSettingsChild; break; case "<OnOffButton Delay>": dataHolder.cur_toolboxSetting = new DataHolder.toolboxSettings_Control(DataHolder.toolboxSettings_Control.controltype.OnOffButton, true); pos = LoadPosition.ToolboxSettingsChild; break; case "<Slider>": dataHolder.cur_toolboxSetting = new DataHolder.toolboxSettings_Control(DataHolder.toolboxSettings_Control.controltype.Slider, false); pos = LoadPosition.ToolboxSettingsChild; break; case "<Slider Cont>": dataHolder.cur_toolboxSetting = new DataHolder.toolboxSettings_Control(DataHolder.toolboxSettings_Control.controltype.Slider, true); pos = LoadPosition.ToolboxSettingsChild; break; case "</ToolboxSettings>": pos = LoadPosition.Settings; break; default: dataHolder.toolboxSettings = null; pos = FindNextAfterError(next, out fin); break; } break; case LoadPosition.ToolboxSettingsChild: switch (next) { case "</SimpleButton>": dataHolder.toolboxSettings.Add(dataHolder.cur_toolboxSetting); pos = LoadPosition.ToolboxSettings; break; case "</OnOffButton>": dataHolder.toolboxSettings.Add(dataHolder.cur_toolboxSetting); pos = LoadPosition.ToolboxSettings; break; case "</Slider>": dataHolder.toolboxSettings.Add(dataHolder.cur_toolboxSetting); pos = LoadPosition.ToolboxSettings; break; default: dataHolder.cur_toolboxSetting.Insert(next); break; } break; } } }