Example #1
0
 private static MyObjectBuilder_CubeBlock ProcessWeaponBlock(MyObjectBuilder_CubeBlock block, Options options, MyCubeSize size)
 {         // LargeTurretBase
     try
     {
         MyWeaponBlockDefinition  myWeaponBlock      = (MyWeaponBlockDefinition)MyDefinitionManager.Static.GetCubeBlockDefinition(block.GetId());
         List <BlockSideEnum>     mountPoints        = myWeaponBlock.MountPoints.Select(myMountPoint => myMountPoint.GetObjectBuilder(myMountPoint.Normal).Side).ToList();
         List <WeaponInformation> replacementOptions = LargeGridWeaponBlocks.FindAll(x =>
                                                                                     //x.ModName != "Vanilla" &&
                                                                                     x.SubtypeId != block.SubtypeId &&
                                                                                     x.MountPoints.Intersect(mountPoints).Any() &&
                                                                                     x.SizeX == myWeaponBlock.Size.X &&
                                                                                     x.SizeY == myWeaponBlock.Size.Y &&
                                                                                     x.SizeZ <= myWeaponBlock.Size.Z //+ 1
                                                                                     );
         if (replacementOptions.Count == 0)
         {
             return(block);
         }
         block = CreateReplacementWeaponBlock(replacementOptions[Core.Random.Next(0, replacementOptions.Count)], block, size, myWeaponBlock);
     }
     catch (Exception e)
     {
         Core.GeneralLog.WriteToLog("WeaponSwapper-ProcessWeaponBlock", $"Exception!\t{e}");
     }
     return(block);
 }
Example #2
0
 private static void ProcessWeaponBlock(MyDefinitionBase myDefinition)
 {
     try
     {
         if (WeaponIgnoreList.Contains(myDefinition.Id.SubtypeId) || !myDefinition.Public)
         {
             return;
         }
         //MyCubeBlockDefinition myCubeBlock = MyDefinitionManager.Static.GetCubeBlockDefinition(myDefinition.Id);
         MyWeaponBlockDefinition myWeaponBlock       = (MyWeaponBlockDefinition)MyDefinitionManager.Static.GetCubeBlockDefinition(myDefinition.Id);
         List <BlockSideEnum>    mountPoints         = myWeaponBlock.MountPoints.Select(myMountPoint => myMountPoint.GetObjectBuilder(myMountPoint.Normal).Side).ToList();
         WeaponInformation       myWeaponInformation = new WeaponInformation(
             mountPoints,
             myWeaponBlock.CubeSize,
             myWeaponBlock.Size.X,
             myWeaponBlock.Size.Y,
             myWeaponBlock.Size.Z,
             myDefinition.Id.SubtypeId,
             myDefinition.Id.SubtypeName,
             myDefinition.Id.TypeId,
             myDefinition.Context?.ModName ?? "Vanilla",
             myDefinition.Id.ToString(),
             myWeaponBlock
             );
         if (myWeaponBlock.CubeSize == MyCubeSize.Large)
         {
             LargeGridWeaponBlocks.Add(myWeaponInformation);
         }
         else
         {
             SmallGridWeaponBlocks.Add(myWeaponInformation);
         }
         //Core.GeneralLog.WriteToLog("ProcessWeaponBlock", myWeaponInformation.ToString());
     }
     catch (Exception e)
     {
         Core.GeneralLog.WriteToLog("ProcessWeaponBlock", $"Exception! {e}");
     }
 }