Example #1
0
    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);
    }
Example #2
0
        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;
        }
Example #3
0
    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;
            }
        }
    }