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); }
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}"); } }