コード例 #1
0
 public void RegisterWorkStarted(ILaserToolKernel Tool)
 {
     if (!CurrentlyWorkingTools.Contains(Tool))
     {
         CurrentlyWorkingTools.Add(Tool);
     }
 }
コード例 #2
0
        private StringBuilder PrintToolVerboseStatus(ILaserToolKernel Tool)
        {
            StringBuilder info = new StringBuilder();

            info.AppendLine($"{Tool.Block.CustomName}: {ReadableLaserToolStatus(Tool.Responder.ToolStatus, false)}");
            info.AppendLine($"Mode: {(Tool.TermControls.ToolMode ? "Welder" : "Grinder")}");
            info.AppendLine($"Powered: {Math.Round(Tool.PowerModule.PowerRatio * 100)}%");
            //info.AppendLine($"Req. input: {Math.Round(Tool.PowerModule.RequiredInput, 3)}u");
            if (Tool.Responder.ToolStatusReport.Length > 0)
            {
                info.Append(Tool.Responder.ToolStatusReport.ToString());
                info.AppendLine();
            }
            info.AppendLine($"Support inventories: {Tool.Inventory.InventoryOwners.Count}");
            if (MyKernel.Session.Settings.Debug)
            {
                foreach (var Owner in Tool.Inventory.InventoryOwners)
                {
                    info.AppendLine(Owner.CustomName);
                }
            }
            info.AppendLine();

            return(info);
        }
コード例 #3
0
 public bool CanStartWork(ILaserToolKernel Tool)
 {
     if (!ToolsPendingWorkStart.Contains(Tool))
     {
         return(false);
     }
     if (CurrentlyWorkingTools.Contains(Tool))
     {
         return(false);
     }
     if (ToolsPendingWorkStart.Peek() == Tool)
     {
         int MaxConcurrentTools = MySessionKernel.Settings.MaxToolUpdatePerTick;
         if (CurrentlyWorkingTools.Count < MaxConcurrentTools)
         {
             ToolsPendingWorkStart.Dequeue();
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
コード例 #4
0
 public void AddToStartWorkQueue(ILaserToolKernel Tool)
 {
     if (!ToolsPendingWorkStart.Contains(Tool))
     {
         ToolsPendingWorkStart.Enqueue(Tool);
     }
 }
コード例 #5
0
 public void RegisterWorkFinished(ILaserToolKernel Tool)
 {
     if (CurrentlyWorkingTools.Contains(Tool))
     {
         CurrentlyWorkingTools.Remove(Tool);
     }
 }
コード例 #6
0
        public void RemoveFromStartWorkQueue(ILaserToolKernel Tool)
        {
            if (!ToolsPendingWorkStart.Contains(Tool))
            {
                return;
            }

            var list = ToolsPendingWorkStart.ToList();

            list.Remove(Tool);
            ToolsPendingWorkStart.Clear();

            foreach (ILaserToolKernel tool in list)
            {
                ToolsPendingWorkStart.Enqueue(tool);
            }
        }
コード例 #7
0
        public void GetInventoriesForTool(ILaserToolKernel LaserTool, ref List <IMyTerminalBlock> SupportInventories)
        {
            if (MyKernel.Multigridder?.BiggestGrid?.InventorySystem == null)
            {
                return;
            }
            InventorySystemModule BiggestGridInventorySystem = (MyKernel.Multigridder.BiggestGrid.InventorySystem as InventorySystemModule);

            if (BiggestGridInventorySystem.InventoriesPerTool.ContainsKey(LaserTool))
            {
                SupportInventories.AddRange(BiggestGridInventorySystem.InventoriesPerTool[LaserTool]);
            }
            else
            {
                if (MyKernel.Session.Settings.Debug)
                {
                    WriteToLog(nameof(GetInventoriesForTool), $"No entries were found for tool {LaserTool.Block.CustomName} on grid {LaserTool.Block.CubeGrid.CustomName}. Biggest grid's InventoriesPerTool: {BiggestGridInventorySystem.InventoriesPerTool.Count}, biggest grid's Inventory Owners: {BiggestGridInventorySystem.InventoryOwners.Count}");
                }
            }
        }
コード例 #8
0
 public void Unsubscribe(ILaserToolKernel laserTool)
 {
     SubscribedLaserTools.Remove(laserTool.Block.EntityId);
 }
コード例 #9
0
 public void Subscribe(ILaserToolKernel laserTool)
 {
     SubscribedLaserTools.Add(laserTool.Block.EntityId, laserTool);
 }