internal void CheckOutfitTriggerInfoCount(int CoordinateIndex) { if (!MakerAPI.InsideMaker) { return; } bool Current = (CoordinateIndex == CurrentCoordinateIndex); int InfoCount = CharaTriggerInfo[CoordinateIndex].Parts.Count(); int PartCount = MoreAccessories_Support.GetCoordinatePartsInfo(ChaControl, CoordinateIndex).Count(); if (InfoCount > PartCount) // shit happend { CharaTriggerInfo[CoordinateIndex].Parts = CharaTriggerInfo[CoordinateIndex].Parts.Take(PartCount).ToList(); Logger.LogError($"[CheckOutfitTriggerInfoCount][{ChaControl.chaFile.parameter?.fullname}] CharaTriggerInfo[{CoordinateIndex}].Parts removed: {InfoCount} -> {PartCount}"); } if (InfoCount < PartCount) { for (int i = InfoCount; i < PartCount; i++) { CharaTriggerInfo[CoordinateIndex].Parts.Add(new AccTriggerInfo(i)); } Logger.Log(DebugLogLevel, $"[CheckOutfitTriggerInfoCount][{ChaControl.chaFile.parameter?.fullname}] CharaTriggerInfo[{CoordinateIndex}].Parts {InfoCount} -> {PartCount}"); } if (Current) { CurOutfitTriggerInfo = CharaTriggerInfo[CoordinateIndex]; } }
internal void SyncOutfitTriggerInfo(int CoordinateIndex) { if (!TriggerEnabled) { Logger.Log(DebugLogLevel, $"[SyncOutfitTriggerInfo][{ChaControl.chaFile.parameter?.fullname}] TriggerEnabled false"); return; } List <ChaFileAccessory.PartsInfo> PartsInfo = MoreAccessories_Support.GetCoordinatePartsInfo(ChaControl, CoordinateIndex); OutfitTriggerInfo OutfitTriggerInfo = CharaTriggerInfo.ElementAtOrDefault(CoordinateIndex); Logger.Log(DebugLogLevel, $"[SyncOutfitTriggerInfo][{ChaControl.chaFile.parameter?.fullname}]Process OutfitTriggerInfo for Coordinate {CoordinateIndex}"); List <AccTriggerInfo> TriggerParts = OutfitTriggerInfo.Parts; int PartsInfoCount = PartsInfo.Count(); int TriggerPartsCount = TriggerParts.Count(); Logger.Log(DebugLogLevel, $"[SyncOutfitTriggerInfo][{ChaControl.chaFile.parameter?.fullname}][{CoordinateIndex}] Count {TriggerPartsCount} : {PartsInfoCount}"); if (TriggerPartsCount > PartsInfoCount) { CharaTriggerInfo[CoordinateIndex].Parts = CharaTriggerInfo[CoordinateIndex].Parts.Take(PartsInfoCount).ToList(); Logger.LogWarning($"[SyncOutfitTriggerInfo][{ChaControl.chaFile.parameter?.fullname}] AccTriggerInfo for Coordinate {CoordinateIndex} Slot {TriggerPartsCount} -> {PartsInfoCount}"); } else if (TriggerPartsCount < PartsInfoCount) { for (int j = TriggerPartsCount; j < PartsInfoCount; j++) { CharaTriggerInfo[CoordinateIndex].Parts.Add(new AccTriggerInfo(j)); } Logger.Log(DebugLogLevel, $"[SyncOutfitTriggerInfo][{ChaControl.chaFile.parameter?.fullname}] AccTriggerInfo for Coordinate {CoordinateIndex} Slot {TriggerPartsCount} -> {PartsInfoCount - 1}"); } for (int i = 0; i < PartsInfoCount; i++) { AccTriggerInfo TriggerPart = TriggerParts.ElementAtOrDefault(i); if ((TriggerPart.Kind != -1) && (PartsInfo[i].type == 120)) { CharaTriggerInfo[CoordinateIndex].Parts[i] = new AccTriggerInfo(i); Logger.LogMessage($"AccTriggerInfo for Coordinate {CoordinateIndex} Slot {i + 1:00} has been reset"); } else { if (TriggerPart.Kind == -1) { CharaTriggerInfo[CoordinateIndex].Parts[i] = new AccTriggerInfo(i); } else if (MathfEx.RangeEqualOn(0, TriggerPart.Kind, 7)) { CharaTriggerInfo[CoordinateIndex].Parts[i].Group = ""; } else if (TriggerPart.Kind == 9) { CharaTriggerInfo[CoordinateIndex].Parts[i].Group = PartsInfo[i].parentKey; } else if (TriggerPart.Kind > 9) { CharaTriggerInfo[CoordinateIndex].Parts[i].Group = "custom_" + (TriggerPart.Kind - 9).ToString(); } } } }