public NaniteOreDetector(IMyFunctionalBlock entity)
        {
            m_block             = entity as IMyOreDetector;
            m_lastUpdate        = DateTime.MinValue;
            m_scanStart         = DateTime.MinValue;
            m_scanEnd           = DateTime.MinValue;
            m_lock              = new FastResourceLock();
            m_oreListCache      = new StringBuilder();
            m_detectorState     = DetectorStates.Disabled;
            m_lastDetectorState = DetectorStates.Disabled;

            m_block.Components.TryGet(out Sink);
            ResourceInfo = new MyResourceSinkInfo()
            {
                ResourceTypeId    = MyResourceDistributorComponent.ElectricityId,
                MaxRequiredInput  = 0f,
                RequiredInputFunc = () => (m_block.Enabled && m_block.IsFunctional) ? _power : 0f
            };
            Sink.RemoveType(ref ResourceInfo.ResourceTypeId);
            Sink.Init(MyStringHash.GetOrCompute("Utility"), ResourceInfo);
            Sink.AddType(ref ResourceInfo);

            m_effects.Add(new OreDetectorEffect((MyCubeBlock)m_block));

            if (!NaniteConstructionManager.OreDetectors.ContainsKey(entity.EntityId))
            {
                NaniteConstructionManager.OreDetectors.Add(entity.EntityId, this);
            }
        }
Exemplo n.º 2
0
            public VoxelData(IMyOreDetector oreDetector, IMyVoxelBase voxel, float maxRange)
            {
                this.m_oreDetector = oreDetector;
                this.m_voxel       = voxel;
                this.m_storage.Resize(new Vector3I(QUERY_STEP, QUERY_STEP, QUERY_STEP));
                this.m_maxRange = maxRange;
                (this.m_voxel as MyVoxelBase).RangeChanged += m_voxel_RangeChanged;
                this.NeedsUpdate = true;

                Log.DebugLog("Created for voxel at " + voxel.PositionLeftBottomCorner);
            }
Exemplo n.º 3
0
        bool FuncTest(IMyOreDetector block)
        {
            //Ore Detector
            //Interace name: IMyOreDetector
            //Parent: IMyFunctionalBlock
            //Fields:
            float Range = block.Range;
            bool  BroadcastUsingAntennas = block.BroadcastUsingAntennas;

            return(true);
        }
        public Program()
        {
            var detectors = new List <IMyOreDetector>();

            GridTerminalSystem.GetBlocksOfType(detectors);
            detector                = detectors.First();
            surface                 = Me.GetSurface(0);
            surface.ContentType     = ContentType.TEXT_AND_IMAGE;
            surface.FontSize        = 3;
            Runtime.UpdateFrequency = UpdateFrequency.Update100 | UpdateFrequency.Update10 | UpdateFrequency.Update1;
            Test();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create an OreDetector for the given block.
        /// </summary>
        /// <param name="oreDetector">The ore detector block.</param>
        public OreDetector(IMyCubeBlock oreDetector)
        {
            this.Block         = oreDetector;
            this.m_oreDetector = oreDetector as IMyOreDetector;
            this.m_netClient   = new RelayClient(oreDetector);

            float maxrange = ((MyOreDetectorDefinition)((MyCubeBlock)m_oreDetector).BlockDefinition).MaximumRange;

            m_maxRange = maxrange;

            Registrar.Add(Block, this);
        }
        public void Main(string argument, UpdateType updateSource)
        {
            List <IMyOreDetector> oresList = new List <IMyOreDetector>();

            GridTerminalSystem.GetBlocksOfType <IMyOreDetector>(oresList);
            if (oresList.Count() > 0)
            {
                IMyOreDetector detector      = oresList[0];
                StringBuilder  stringBuilder = new StringBuilder();
                stringBuilder.Append("Range: ").Append(detector.Range);
                stringBuilder.Append("\nBroadcastUsingAntennas: ").Append(detector.BroadcastUsingAntennas);

                // Range: 50
                // BroadcastUsingAntennas: True
                string data = stringBuilder.ToString();
                detector.CustomData = data;
                Me.GetSurface(0).WriteText(data);
            }
            else
            {
                Me.GetSurface(0).WriteText("ore ZERO");
            }
        }