public void InitializeStorage()
        {
            Echo("Setting up storage..");
            if (useCustomData == true)
            {
                MyIniParseResult iniResult;
                if (!config.TryParse(Me.CustomData, out iniResult))
                {
                    Echo("Try setting useCustomData to false.");
                    throw new Exception(iniResult.ToString());
                }
            }
            else
            {
                config.TryParse(Storage);
            }

            double __RWYHDG = config.Get("LocalizerData", "RWYHDG").ToDouble(-1);

            if (__RWYHDG.Equals(-1))
            {
                config.Set("LocalizerData", "RWYHDG", 0);
                config.Set("LocalizerData", "GPS", "N/A");
                config.Set("GlideSlopeData", "GPS", "N/A");

                if (useCustomData == true)
                {
                    Me.CustomData = config.ToString();
                }
                else
                {
                    Storage = config.ToString();
                }
            }
        }
        public void Main(string argument, UpdateType updateSource)
        {
            bool RecalculateRunwayHeadings = false;

            if (argument == "recalculate")
            {
                RecalculateRunwayHeadings = true;
            }

            if (!SetupComplete)
            {
                Setup();
            }

            // Init storage
            InitializeStorage();


            // Set default data if
            if (!IsDataFormatValid())
            {
                SetDefaultData();
                return;
            }


            // Validate GPS strings.
            bool IsTouchdownZoneAValid = ValidateGPSFormat(config.Get("TouchdownZone", "GPSA").ToString());
            bool IsTouchdownZoneBValid = ValidateGPSFormat(config.Get("TouchdownZone", "GPSB").ToString());

            if (!IsTouchdownZoneAValid || !IsTouchdownZoneBValid)
            {
                throw new Exception("Please enter the runway data or see the guide for help.");
            }

            int RunwayHDGA = config.Get("Runway", "HeadingA").ToInt16();
            int RunwayHDGB = config.Get("Runway", "HeadingB").ToInt16();

            if (RunwayHDGA == -1 || RunwayHDGB == -1 || RecalculateRunwayHeadings)
            {
                FindCockpitBlock();
                DetectRunwayHeadings();
                return;
            }


            // Construct & send message.
            string message = config.ToString();

            IGC.SendBroadcastMessage(antennaChannel, message);
        }
Example #3
0
            public void Save(bool prepare = false)
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("LCD", "filter", lcd_filter);

                MyIni.Set("Limit", "default", limit_default);
                if (prepare)
                {
                    MyIni.Set("Limit", "Cobalt", "1000");
                    MyIni.Set("Limit", "Iron", "100000");
                    MyIni.Set("Limit", "Gold", "1000");
                    MyIni.Set("Limit", "Platinum", "1000");
                    MyIni.Set("Limit", "Silver", "1000");
                }
                MyIni.Set("Color", "default", color_default);
                if (prepare)
                {
                    MyIni.Set("Color", "Cobalt", "000,080,080,255");
                    MyIni.Set("Color", "Gold", "255,153,000,255");
                    MyIni.Set("Color", "Ice", "040,130,130,255");
                    MyIni.Set("Color", "Iron", "040,040,040,255");
                    MyIni.Set("Color", "Nickel", "110,080,080,255");
                    MyIni.Set("Color", "Platinum", "120,150,120,255");
                    MyIni.Set("Color", "Silicon", "150,150,150,255");
                    MyIni.Set("Color", "Silver", "120,120,150,255");
                    MyIni.Set("Color", "Stone", "120,040,000,200");
                    MyIni.Set("Color", "Uranium", "040,130,000,200");
                }
                program.Me.CustomData = MyIni.ToString();
            }
Example #4
0
        public void Save()
        {
            var ini = new MyIni();

            m_instance.onSave(ini);
            Storage = ini.ToString();
        }
Example #5
0
 public void Save()
 {
     ini.Set("General", "AbortDistance", AbortDistance);
     ini.Set("General", "ScanningDistance", ScanningDistance);
     ini.Set("General", "MaxSpeed", MaxSpeed);
     ini.Set("General", "ActionTimeout", ActionTimeout);
     ini.Set("General", "TransmitTag", TransmitTag);
     ini.Set("General", "Dock", DockLocation.ToString());
     ini.Set("General", "DockApproach", DockApproachVector.ToString());
     ini.Set("General", "GrinderGroup", GrinderGroup);
     if (Vector3D.IsZero(GrinderApproach))
     {
         ini.Delete("General", "GrinderLocation");
         ini.Delete("General", "GrinderApproach");
     }
     else
     {
         ini.Set("General", "GrinderLocation", GrinderLocation.ToString());
         ini.Set("General", "GrinderApproach", GrinderApproach.ToString());
     }
     foreach (var kv in Approaches)
     {
         string data = string.Join("\n", kv.Value.Select <Vector3D, string>((v) => $"GPS:waypoint:{v.X:F3}:{v.Y:F3}:{v.Z:F3}:"));
         ini.Set("Approach", kv.Key, data);
     }
     ini.Set("Runtime", "CurrentState", State_Machine?.CurrentState ?? "");
     ini.Set("Runtime", "TargetLocation", TargetLocation.ToString());
     ini.Set("Runtime", "ChosenApproach", ChosenApproach);
     ini.Set("Runtime", "ApproachIndex", ApproachIndex);
     ini.Set("Runtime", "TargetEntityID", TargetEntityID);
     Storage = ini.ToString();
 }
Example #6
0
        public void SaveToCustomData()
        {
            MyIniParseResult result;

            if (!customData.TryParse(Me.CustomData, out result))
            {
                throw new Exception(result.ToString());
            }

            customData.Set("3DPrinter", "maxX", maxX);
            customData.SetComment("3DPrinter", "maxX", " Work area dimentions:");
            customData.Set("3DPrinter", "maxY", maxY);
            customData.Set("3DPrinter", "maxZ", maxZ);
            customData.Set("3DPrinter", "minX", minX);
            customData.Set("3DPrinter", "minY", minY);
            customData.Set("3DPrinter", "minZ", minZ);
            customData.Set("3DPrinter", "mode", mode.ToString());
            customData.SetComment("3DPrinter", "mode", " Mode: grinding or welding");
            customData.Set("3DPrinter", "toolLength", toolLength);
            customData.SetComment("3DPrinter", "toolLength", " Tool Length in number of blocks(default:10)");
            customData.Set("3DPrinter", "returnAfterDone", returnAfterDone);
            customData.SetComment("3DPrinter", "returnAfterDone", " Return to home position after completion?");
            customData.Set("3DPrinter", "maxMovementSpeed", maxMovementSpeed);
            customData.SetComment("3DPrinter", "maxMovementSpeed", " Fastest pistons can move (0.0-5.0)");
            customData.Set("3DPrinter", "grindingSpeed", grindingSpeed);
            customData.SetComment("3DPrinter", "grindingSpeed", " Max piston speed while grinding (default:0.5)");
            customData.Set("3DPrinter", "weldingSpeed", weldingSpeed);
            customData.SetComment("3DPrinter", "weldingSpeed", " Max piston speed while welding (default:0.2)");

            Me.CustomData = customData.ToString();
        }
Example #7
0
        public void Save()
        {
            ini.Clear();
            ini.Set("3DPrinter", "xtar", xTar);
            ini.Set("3DPrinter", "ytar", yTar);
            ini.Set("3DPrinter", "ztar", zTar);
            ini.Set("3DPrinter", "xpos", xPos);
            ini.Set("3DPrinter", "ypos", yPos);
            ini.Set("3DPrinter", "zpos", zPos);
            ini.Set("3DPrinter", "xposmerge", xPosMerge);
            ini.Set("3DPrinter", "xdir", xDir.ToString());
            ini.Set("3DPrinter", "ydir", yDir.ToString());
            ini.Set("3DPrinter", "zdir", zDir.ToString());
            ini.Set("3DPrinter", "maxX", maxX);
            ini.Set("3DPrinter", "maxY", maxY);
            ini.Set("3DPrinter", "maxZ", maxZ);
            ini.Set("3DPrinter", "minX", minX);
            ini.Set("3DPrinter", "minY", minY);
            ini.Set("3DPrinter", "minZ", minZ);
            ini.Set("3DPrinter", "returnAfterDone", returnAfterDone);
            ini.Set("3DPrinter", "maxMovementSpeed", maxMovementSpeed);
            ini.Set("3DPrinter", "grindingSpeed", grindingSpeed);
            ini.Set("3DPrinter", "weldingSpeed", weldingSpeed);
            ini.Set("3DPrinter", "toolLength", toolLength);
            ini.Set("3DPrinter", "mode", mode.ToString());
            ini.Set("3DPrinter", "autoMode", autoMode);
            ini.Set("3DPrinter", "firstrun", firstRun);
            ini.Set("3DPrinter", "manualMove", manualMove);
            ini.Set("3DPrinter", "moveReady", moveReady);

            Storage = ini.ToString();
        }
Example #8
0
    void ParseRotorIni(IMyMotorStator r)
    {
        _ini.Clear();
        float?       restAngle    = null;
        const string defaultValue = "none";

        if (_ini.TryParse(r.CustomData))
        {
            string angleStr = _ini.Get(IniSectionRotor, IniKeyRestAngle).ToString(defaultValue);
            float  temp;
            if (float.TryParse(angleStr, out temp))
            {
                restAngle = temp;
            }
        }
        else if (!string.IsNullOrWhiteSpace(r.CustomData))
        {
            _ini.EndContent = r.CustomData;
        }

        _ini.Set(IniSectionRotor, IniKeyRestAngle, restAngle.HasValue ? restAngle.Value.ToString() : defaultValue);

        string output = _ini.ToString();

        if (output != r.CustomData)
        {
            r.CustomData = output;
        }

        _restAngles[r] = restAngle.HasValue ? MathHelper.ToRadians(restAngle.Value) : restAngle;
    }
            public string GetSavedString()
            {
                var ini = new MyIni();

                this.onSave(ini);
                return(ini.ToString());
            }
Example #10
0
 public void Save()
 {
     foreach (var handler in SaveHandlers)
     {
         handler(_SaveIni);
     }
     Storage = _SaveIni.ToString();
 }
Example #11
0
 public void Save()
 {
     _ini.Clear();
     _ini.Set("Basis", "A", _basisVecA.ToString());
     _ini.Set("Basis", "B", _basisVecB.ToString());
     _ini.Set("Basis", "Up", _basisVecUp.ToString());
     _ini.Set("Basis", "Origin", _origin.ToString());
     Storage = _ini.ToString();
 }
Example #12
0
 public void SaveState()
 {
     SavedState.Clear();
     if (DoSave)
     {
         Saving?.Invoke(SavedState);
     }
     PB.SetStorage(SavedState.ToString()); //using mix-in method
 }
Example #13
0
 public void Write()
 {
     // Initialize the configuration if it does not exist.
     if (String.IsNullOrEmpty(program.Me.CustomData))
     {
         _program._logger.SysLog <Configuration>("writing default configuration.");
         _program.Me.CustomData = _ini.ToString();
     }
 }
Example #14
0
            void save()
            {
                var ini = new MyIni();

                foreach (APWaypoint wp in this.waypoints.Values)
                {
                    wp.Save(ini);
                }
                this.remote.CustomData = ini.ToString();
                this.prevData          = this.remote.CustomData;
            }
Example #15
0
            private void CreateConfig()
            {
                if (MyIni.HasSection(_program.Me.CustomData, _scriptName))
                {
                    return;
                }

                _ini.Clear();
                _config.SetupDefaults();
                _program.Me.CustomData = _ini.ToString();
            }
        public void Main(string argument, UpdateType updateSource)
        {
            // Init storage
            InitializeStorage();


            // Set default data if
            if (!IsDataFormatValid() || argument == "reset")
            {
                SetDefaultData();
                return;
            }


            // Construct & send message.
            string message = config.ToString();

            IGC.SendBroadcastMessage(AntennaChannel, message);

            Echo("Broadcasting on \"" + AntennaChannel + "\"..");
        }
Example #17
0
            public string write()
            {
                MyIni ini = new MyIni();

                ini.AddSection(name);

                foreach (var kv in config)
                {
                    ini.Set(name, kv.Key, kv.Value);
                }

                return(ini.ToString());
            }
Example #18
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Common", "Name", Name);
                MyIni.Set("Latitude", "Speed", Lat_Speed);
                MyIni.Set("Latitude", "Delta", Lat_Delta);
                program.Me.CustomData = MyIni.ToString();
            }
Example #19
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Search", "Rotor", Search_Rotor);
                MyIni.Set("Search", "PistonUp", Search_Piston_Up);
                MyIni.Set("Search", "PistonDown", Search_Piston_Down);
                MyIni.Set("Search", "PistonRayon", Search_Piston_Rayon);
                program.Me.CustomData = MyIni.ToString();
            }
Example #20
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Refinery", "filter", refinery_filter);
                MyIni.Set("Refinery", "rotation", refinery_rotation);
                MyIni.Set("Refinery", "priority", refinery_priority);
                MyIni.Set("Lcd", "filter", lcd_filter);
                program.Me.CustomData = MyIni.ToString();
            }
Example #21
0
 public void Save()
 {
     if (VectorsValid())
     {
         _ini.Clear();
         _ini.Set("Basis", "A", _basis[0].ToString());
         _basis[1] = -_basis[0];
         _ini.Set("Basis", "B", _basis[2].ToString());
         _basis[3] = -_basis[2];
         _ini.Set("Basis", "Up", _basis[4].ToString());
         _basis[5] = -_basis[4];
         _ini.Set("Location", "Origin", _origin.ToString());
         Storage = _ini.ToString();
     }
 }
Example #22
0
        void ProcessAssemblerConfig(Dictionary <MyDefinitionId, VRage.MyFixedPoint> assemblerBalance)
        {
            DisassembleConfig = new Dictionary <MyDefinitionId, VRage.MyFixedPoint>();
            AssembleConfig    = new Dictionary <MyDefinitionId, VRage.MyFixedPoint>();

            MyIni ini = new MyIni();

            //1. Parse ini in CustomData of the programmable block

            if (ini.TryParse(Me.CustomData))
            {
                if (ini.ContainsSection(MinHeader))
                {
                    ReadIniSection(ini, MinHeader, AssembleConfig);
                }

                if (ini.ContainsSection(MaxHeader))
                {
                    ReadIniSection(ini, MaxHeader, DisassembleConfig);
                }
            }

            //2. Write the config back to custom data, adding every known component
            //   in the system so that the user doesn't have to know their names.

            List <MyDefinitionId> combined   = AssembleConfig.Keys.Union(assemblerBalance.Keys).ToList();         //Combine lists, removing dupes
            List <MyDefinitionId> components = combined.OrderBy(o => o.SubtypeId.ToString()).ToList();            //Sort alphabetically

            foreach (var definitionId in components)
            {
                WriteIniEntry(ini, MinHeader, definitionId, AssembleConfig);
                WriteIniEntry(ini, MaxHeader, definitionId, DisassembleConfig);
            }

            //Set section headers if they exist. Can't do it earlier becasue there can be no sections without data.
            if (ini.ContainsSection(MinHeader))
            {
                ini.SetSectionComment(MinHeader, " BIM Auto Assembly\n----------------------------------------------------------------------------------------------\n Requires Assembler set to assemble!\n \n Change these values to automatically craft new components once\n you run low. Recompile the script if you've made changes.\n \n Is the list missing an item? Craft one manually, then recompile the\n script. It only knows about items present in BIM:Components containers.\n----------------------------------------------------------------------------------------------");
            }
            if (ini.ContainsSection(MaxHeader))
            {
                ini.SetSectionComment(MaxHeader, " BIM Auto Disassembly\n----------------------------------------------------------------------------------------------\n Requires Assembler set to disassemble!\n \n Change these values for automatic dissassembling of components when\n you have too many. Recompile the script if you've made changes.\n \n Set value to -1 to ignore.\n----------------------------------------------------------------------------------------------");
            }

            Me.CustomData = ini.ToString();
        }
Example #23
0
        private void SaveConfig(bool firstTime)
        {
            if (firstTime)
            {
                isLeakManagementOn     = true;
                isProductionOn         = true;
                minimumOxygenInTanks   = 30;
                maximumOxygenInTanks   = 70;
                minimumHydrogenInTanks = 30;
                maximumHydrogenInTanks = 70;

                _ini.Set("Production Management", "Start Oxigen Production When Below", minimumOxygenInTanks);
                _ini.Set("Production Management", "Stop Oxygen Production When Over", maximumOxygenInTanks);
                _ini.Set("Production Management", "Start Hydrogen Production When Below", minimumHydrogenInTanks);
                _ini.Set("Production Management", "Stop Hydrogen Production When Over", maximumHydrogenInTanks);

                _ini.Set("Do Not Modify", "LeakStatus", isLeakManagementOn);
                _ini.Set("Do Not Modify", "ProductionStatus", isProductionOn);
            }
            else
            {
                MyIniParseResult result;
                if (!_ini.TryParse(Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }

                minimumOxygenInTanks   = _ini.Get("Production Management", "Start Oxigen Production When Below").ToDouble();
                maximumOxygenInTanks   = _ini.Get("Production Management", "Stop Oxygen Production When Over").ToDouble();
                minimumHydrogenInTanks = _ini.Get("Production Management", "Start Hydrogen Production When Below").ToDouble();
                maximumHydrogenInTanks = _ini.Get("Production Management", "Stop Hydrogen Production When Over").ToDouble();

                _ini.Set("Production Management", "Start Oxigen Production When Below", minimumOxygenInTanks);
                _ini.Set("Production Management", "Stop Oxygen Production When Over", maximumOxygenInTanks);
                _ini.Set("Production Management", "Start Hydrogen Production When Below", minimumHydrogenInTanks);
                _ini.Set("Production Management", "Stop Hydrogen Production When Over", maximumHydrogenInTanks);

                _ini.Set("Do Not Modify", "LeakStatus", isLeakManagementOn);
                _ini.Set("Do Not Modify", "ProductionStatus", isProductionOn);
            }

            Me.CustomData = _ini.ToString();
        }
        void printIniToCustomData()
        {
            //loading the current state of the machine in the Custom Data field for editing.
            ini.Set(limitSection, "sizeDrillhead", sizeDrillhead);
            ini.Set(limitSection, "depthLimit", depthLimit);
            ini.Set(limitSection, "maxRadiusLimit", maxRadiusLimit);
            ini.Set(limitSection, "minRadiusLimit", minRadiusLimit);
            ini.Set(limitSection, "lowerAngleLimit", lowerAngleLimit);
            ini.Set(limitSection, "upperAngleLimit", upperAngleLimit);
            ini.SetSectionComment(limitSection, "This is the only section you should touch unless you *really* know what you are doing.");

            ini.Set(stateSection, "direction", direction);
            //ini.Set(stateSection, "isPaused", isPaused);  This would not make sense in the ini, as it will be set the very moment the ini is loaded
            ini.Set(stateSection, "state", state);
            ini.Set(stateSection, "angle", angle);
            ini.Set(stateSection, "radius", radius);
            ini.SetSectionComment(stateSection, "Do not touch this section unless you *really* know what you are doing.");

            Me.CustomData = ini.ToString();
        }
Example #25
0
        void SaveSettings()
        {
            if (Settings == null)
            {
                Settings = new MyIni();
            }

            Settings.Set(SettingsHeader, SettingsTargetSpeed, targetSpeed);
            Settings.Set(SettingsHeader, SettingsSelectedThrusters, (int)thrustDirection);
            Settings.Set(SettingsHeader, SettingsTargetAltAscending, targetAltAscending);
            Settings.Set(SettingsHeader, SettingsTargetAltDescending, targetAltDescending);
            Settings.Set(SettingsHeader, SettingsDisableCruiseExitingGravity, disableCruiseExitingGravity);
            Settings.Set(SettingsHeader, SettingsDisableAlignExitingGravity, disableAlignExitingGravity);
            Settings.Set(SettingsHeader, SettingsUseSeaLevel, useSeaLevel);
            Settings.Set(SettingsHeader, SettingsCruiseEnabled, (Cruise == null ? false : Cruise.Enabled));
            Settings.Set(SettingsHeader, SettingsAlignEnabled, (Align == null ? false : Align.Enabled));
            Settings.Set(SettingsHeader, SettingsWorldTopSpeed, worldTopSpeed);

            Storage = Settings.ToString();
        }
Example #26
0
        public void Save()
        {
            ini.Clear();

            ini.Set("save", "password", password);
            ini.Set("save", "linkedConnectorName", linkedConnectorName);
            ini.Set("save", "groupName", groupName);

            ini.Set("save", "dockingConnectorPos", dockingConnectorPos.ToString());
            ini.Set("save", "dockingDir", dockingDir.ToString());

            for (var i = 0; i < globalPath.Count; i++)
            {
                ini.Set("save", "globalPath_" + i, globalPath[i].ToString());
            }

            ini.Set("save", "mode", mode);

            Storage = ini.ToString();
        }
Example #27
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Elevator", "position_max", elevator_position_max);
                MyIni.Set("Elevator", "position_min", elevator_position_min);
                MyIni.Set("Elevator", "velocity_max", elevator_velocity_max);
                MyIni.Set("Elevator", "velocity_medium", elevator_velocity_medium);
                MyIni.Set("Elevator", "velocity_min", elevator_velocity_min);

                MyIni.Set("Locker", "velocity", locker_velocity);
                MyIni.Set("Locker", "position_min", locker_position_min);
                MyIni.Set("Locker", "position_max", locker_position_max);

                program.Me.CustomData = MyIni.ToString();
            }
        public void Activate()
        {
            Reset();
            Active = true;
            if (Subsystems.ContainsKey("docking"))
            {
                Subsystems["docking"].Command(TimeSpan.Zero, "dock", null);
            }

            MyIni Parser = new MyIni();

            if (!Parser.TryParse(Context.Reference.CustomData))
            {
                return;
            }

            Parser.Delete("Manager", "StartActive");
            Context.Reference.CustomData          = Parser.ToString();
            Context.Reference.CubeGrid.CustomName = myName;
        }
Example #29
0
        bool WicoLocalInit()
        {
            if (bInitDone)
            {
                return(true);
            }

            // must come late as the above inits may add handlers
            wicoBlockMaster.LocalBlocksInit();

            bInitDone = true;

            // last thing after init is done
            wicoControl.ModeAfterInit(_SaveIni);

            // Save it now so that any defaults are set after an initial run
            Me.CustomData = _CustomDataIni.ToString();

            return(bInitDone);
        }
Example #30
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Airlock", "filter", filter);
                MyIni.Set("Airlock", "timer", timer / 6);
                MyIni.Set("Airlock", "blink_length", blink_length);
                MyIni.Set("Airlock", "blink_interval_seconds", blink_interval_seconds);
                MyIni.Set("Airlock", "pressurised_color", pressurised_color);
                MyIni.Set("Airlock", "running_color", running_color);
                MyIni.Set("Airlock", "depressurised_color", depressurised_color);

                MyIni.Set("Sound", "timer", sound_timer / 6);

                program.Me.CustomData = MyIni.ToString();
            }