Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.76 KB | None | 0 0
  1.        
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using Sandbox.Game.Entities;
  6. using Sandbox.Game.Entities.Cube;
  7. using VRage;
  8. using VRage.Game.ModAPI;
  9. using System.Text;
  10. using VRage.Game.Entity;
  11. using Sandbox.Common.ObjectBuilders;
  12. using Sandbox.Game.EntityComponents;
  13. using Sandbox.ModAPI;
  14. using VRage.Game.Components;
  15. using System.Linq;
  16. using VRageMath;
  17. using ICWsys.Support;
  18. using ICWsys;
  19. using ICWsys.GridComponents;
  20.  
  21.     public class SubpartGroupManager
  22.         {
  23.  
  24.             internal List<string> Groups;
  25.             internal Dictionary<string, MyEntitySubpart[]> PartGroups = new Dictionary<string, MyEntitySubpart[]>();
  26.             internal readonly IMyCubeBlock Block;
  27.             internal SubpartGroupManager(IMyCubeBlock block)
  28.             {
  29.                 Block = block;
  30.             }
  31.  
  32.             private void GenerateSubpartGroup(string groupName ,string[] partNames)
  33.             {
  34.                 MyEntitySubpart[] partArray = new MyEntitySubpart[partNames.Length];
  35.                 var count = 0;
  36.                 foreach (var name in partNames)
  37.                 {
  38.                     Block.TryGetSubpart(name, out partArray[count]);
  39.                     if (partArray[count] != null)
  40.                     {
  41.                         Groups.Add(name);
  42.                         if (Session.Enforced.Debug >= 1) Log.Line($"Generateing Subpart: [Part({name})] - Part #:{count} - BlockId [{ Block.EntityId}]");
  43.                     }
  44.                     count++;
  45.                 }
  46.                 if(!Groups.Contains(groupName)) PartGroups.Add(groupName, partArray);
  47.                 else MyAPIGateway.Utilities.ShowNotification("Group with name "+ groupName +" Currently Exist's ", 5000, "Red");
  48.             }
  49.  
  50.             private void ClearSubparts(string group)
  51.             {
  52.                 foreach (var part in PartGroups[group])
  53.                 {
  54.                     if (part.Closed) part.Subparts.Clear();
  55.                 }
  56.             }
  57.  
  58.             private void ClearSubpart(string group, string partName)
  59.             {
  60.                 foreach(var part in PartGroups[group])
  61.                 {
  62.                     var name = part.Name;
  63.                     if (name.Equals(partName))
  64.                     {
  65.                         if (part.Closed) part.Subparts.Clear();
  66.                     }
  67.                 }
  68.             }
  69.  
  70.             private bool AllSubpartsClosed(string group)
  71.             {
  72.                 foreach (var subpart in PartGroups[group])
  73.                 {
  74.                     if (!subpart.Closed.Equals(true)) return false;
  75.                 }
  76.                 return true;
  77.             }
  78.  
  79.             private bool SubpartClosed(string group, string partName)
  80.             {
  81.                 foreach (var part in PartGroups[group])
  82.                 {
  83.                     if (part.Name.Equals(partName))
  84.                     {
  85.                         if (part.Closed.Equals(true)) return true;
  86.                         else return false;
  87.                     }
  88.                 }
  89.                 return false;
  90.             }
  91.  
  92.             private bool AllSubpartsNull(string group)
  93.             {
  94.                 foreach (var subpart in PartGroups[group])
  95.                 {
  96.                     if (subpart != null) return false;
  97.  
  98.                 }
  99.                 return true;
  100.             }
  101.  
  102.             private bool SubpartNull(string group, string partName)
  103.             {
  104.                 foreach (var part in PartGroups[group])
  105.                 {
  106.                     if (part.Name.Equals(partName))
  107.                     {
  108.                         if (part == null) return true;
  109.                         else return false;
  110.                     }
  111.                 }
  112.                 return false;
  113.             }
  114.  
  115.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement