コード例 #1
0
ファイル: HarvestVoxel.cs プロジェクト: zrisher/ARMS
        protected override AutopilotActionList.AutopilotAction Parse(VRage.Game.ModAPI.IMyCubeBlock autopilot, string command, out string message)
        {
            byte[] oreType;

            if (command.Equals("arvest", StringComparison.InvariantCultureIgnoreCase))
            {
                oreType = null;
            }
            else
            {
                if (string.IsNullOrWhiteSpace(command))
                {
                    message = "no ores specified";
                    return(null);
                }

                string[]    splitComma  = command.Split(',');
                List <byte> oreTypeList = new List <byte>();
                m_activeOres.Clear();

                foreach (string name in splitComma)
                {
                    string trimmed = name.Trim();
                    Ore    ore;
                    if (!TryGetOre(trimmed, out ore))
                    {
                        message = "Not ore: " + name;
                        return(null);
                    }
                    byte[] oreIds;
                    if (!OreDetector.TryGetMaterial(trimmed, out oreIds))
                    {
                        message = "Failed to get material index: " + name;
                        return(null);
                    }

                    m_activeOres.Add(ore);
                    oreTypeList.AddArray(oreIds);
                }
                oreType = oreTypeList.ToArray();
            }

            message = null;
            return(mover => new Miner(mover, oreType));
        }
コード例 #2
0
ファイル: HarvestVoxel.cs プロジェクト: zrisher/ARMS
            public Ore(string subtypeName, MyVoxelMaterialDefinition def)
            {
                SubtypeName = def.Id.SubtypeName;
                int index = SubtypeName.IndexOf('_');

                if (index >= 0)
                {
                    SubtypeName = SubtypeName.Substring(0, index);
                }
                SubtypeName = SubtypeName.Trim();

                MinedOre = def.MinedOre.Trim();

                if (SubtypeName == MinedOre)
                {
                    MinedOre = null;
                }

                if (OreDetector.GetChemicalSymbol(SubtypeName.ToLower(), out Symbol))
                {
                    Symbol = char.ToUpper(Symbol[0]) + Symbol.Substring(1);
                }
            }
コード例 #3
0
ファイル: UpdateManager.cs プロジェクト: zrisher/ARMS
        /// <summary>
        /// <para>Scripts that use UpdateManager and run on a server shall be added here.</para>
        /// </summary>
        private void RegisterScripts_Server()
        {
            #region Autopilot

            //RadarEquipment.Definition apRadar = new RadarEquipment.Definition()
            //{
            //	Radar = true,
            //	LineOfSight = false,
            //	MaxTargets_Tracking = 3,
            //	MaxPowerLevel = 1000
            //};

            Action <IMyCubeBlock> construct = block => {
                if (ShipAutopilot.IsAutopilotBlock(block))
                {
                    var sca = new ShipAutopilot(block);
                    RegisterForUpdates(ShipAutopilot.UpdateFrequency, sca.Update, block);
                    RegisterForUpdates(100, sca.m_block.NetworkNode.Update100, block);
                    //RadarEquipment r = new RadarEquipment(block, apRadar, block);
                    //RegisterForUpdates(100, r.Update100, block);
                }
            };

            RegisterForBlock(typeof(MyObjectBuilder_Cockpit), construct);
            if (ServerSettings.GetSetting <bool>(ServerSettings.SettingName.bUseRemoteControl))
            {
                RegisterForBlock(typeof(MyObjectBuilder_RemoteControl), construct);
            }

            #endregion

            #region Weapons

            if (ServerSettings.GetSetting <bool>(ServerSettings.SettingName.bAllowHacker))
            {
                RegisterForBlock(typeof(MyObjectBuilder_LandingGear), block => {
                    if (Hacker.IsHacker(block))
                    {
                        Hacker h = new Hacker(block);
                        RegisterForUpdates(10, h.Update10, block);
                    }
                });
            }
            else
            {
                Log.DebugLog("Hacker is disabled in settings");
            }

            #endregion

            #region Solar

            {
                SunProperties sun = new SunProperties();
                RegisterForUpdates(10, sun.Update10);
            }
            RegisterForBlock(typeof(MyObjectBuilder_OxygenFarm), (block) => {
                Solar s = new Solar(block);
                RegisterForUpdates(100, s.Update100, block);
            });
            RegisterForBlock(typeof(MyObjectBuilder_SolarPanel), (block) => {
                Solar s = new Solar(block);
                RegisterForUpdates(100, s.Update100, block);
            });

            #endregion

            RegisterForBlock(typeof(MyObjectBuilder_OreDetector), block => {
                var od = new OreDetector(block);
                RegisterForUpdates(1000, od.Update, block);
            });
        }