Advertisement
Whiplash141

Whip's Group Renamer v2

Oct 2nd, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.13 KB | None | 0 0
  1. //Whip's Group Renamer v2 - 9/2/17
  2.  
  3. bool shouldNumber = false;
  4. bool useNumberOnFirstEntry = false;
  5.  
  6. void Main()
  7. {
  8.     ParseGroups();
  9. }
  10.  
  11. void ParseGroups()
  12. {
  13.     var groupList = new List<IMyBlockGroup>();
  14.     GridTerminalSystem.GetBlockGroups(groupList);
  15.  
  16.     var groupBlocks = new List<IMyTerminalBlock>();
  17.  
  18.     foreach (var group in groupList)
  19.     {
  20.         if (group.Name.ToLower().Contains("default"))
  21.         {
  22.             group.GetBlocks(groupBlocks);
  23.             RenameBlocksToDefault(groupBlocks, shouldNumber);
  24.         }
  25.         else if (group.Name.ToLower().Trim().StartsWith("prefix"))
  26.         {
  27.             var prefix = group.Name.Remove(0, 6).Trim();
  28.             group.GetBlocks(groupBlocks);
  29.             PrefixBlockName(groupBlocks, prefix);
  30.         }
  31.         else if (group.Name.ToLower().Trim().StartsWith("suffix"))
  32.         {
  33.             var suffix = group.Name.Remove(0, 6).Trim();
  34.             group.GetBlocks(groupBlocks);
  35.             SuffixBlockName(groupBlocks, suffix);
  36.         }
  37.         else if (group.Name.ToLower().Trim().StartsWith("rename"))
  38.         {
  39.             var name = group.Name.Remove(0, 6).Trim();
  40.             group.GetBlocks(groupBlocks);
  41.             RenameBlocks(groupBlocks, name, shouldNumber);
  42.         }
  43.     }
  44. }
  45.  
  46. Dictionary<string, int> blockNames = new Dictionary<string, int>();
  47. void RenameBlocksToDefault(List<IMyTerminalBlock> blocks, bool shouldNumber = true)
  48. {
  49.     blockNames.Clear();
  50.  
  51.     foreach(var block in blocks)
  52.     {
  53.         var baseName = block.DefinitionDisplayNameText;
  54.         var count = 1;
  55.         if (blockNames.TryGetValue(baseName, out count))
  56.         {
  57.             count++; //iterate our count
  58.             blockNames[baseName] = count;
  59.         }
  60.         else
  61.         {
  62.             blockNames.Add(baseName, 1);
  63.         }
  64.  
  65.         block.CustomName = shouldNumber ? count > 1 ? baseName + $" {count}" : baseName : baseName;
  66.     }
  67.  
  68.     Echo($"{blocks.Count} blocks renamed to default");
  69. }
  70.  
  71. void PrefixBlockName(List<IMyTerminalBlock> blocks, string prefixName)
  72. {
  73.     foreach (var block in blocks)
  74.     {
  75.         if (!block.CustomName.Trim().ToLower().StartsWith(prefixName.ToLower()))
  76.         {
  77.             block.CustomName = $"{prefixName} {block.CustomName}";
  78.         }
  79.     }
  80.  
  81.     Echo($"{blocks.Count} blocks prefixed with '{prefixName}'");
  82. }
  83.  
  84. void SuffixBlockName(List<IMyTerminalBlock> blocks, string suffixName)
  85. {
  86.     foreach (var block in blocks)
  87.     {
  88.         if (!block.CustomName.Trim().ToLower().EndsWith(suffixName.ToLower()))
  89.         {
  90.             block.CustomName = $"{block.CustomName} {suffixName}";
  91.         }
  92.     }
  93.  
  94.     Echo($"{blocks.Count} blocks suffixed with '{suffixName}'");
  95. }
  96.  
  97. void RenameBlocks(List<IMyTerminalBlock> blocks, string blockName, bool shouldNumber = true)
  98. {
  99.     for(int i = 0; i < blocks.Count; i++)
  100.     {
  101.         var block = blocks[i];
  102.         if (!block.CustomName.ToLower().Contains(blockName.ToLower()))
  103.         {
  104.             block.CustomName = shouldNumber ? i > 0 ? $"{blockName} {i + 1}" : blockName : blockName;
  105.         }
  106.     }
  107.  
  108.     Echo($"{blocks.Count} blocks renamed to '{blockName}'");
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement