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)); }
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); } }
/// <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); }); }