static void HSceneEnd(HScene __instance, ChaControl[] ___chaFemales, ChaControl[] ___chaMales) { try { #if DEBUG AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo("HScene End Event"); #endif foreach (ChaControl female in ___chaFemales) { if (female == null) { continue; } AdditionalAccessoryControlsController aacController = female.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(hend: true); } foreach (ChaControl male in ___chaMales) { if (male == null) { continue; } AdditionalAccessoryControlsController aacController = male.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(hend: true); } } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Visibility Updates Not Thrown. {e.Message} {e.StackTrace}"); } }
static void OnCoordSavePostfix(ChaFileCoordinate __instance) { try { ChaControl owner = null; foreach (KeyValuePair <int, ChaControl> pair in Character.Instance.dictEntryChara) { if (pair.Value.nowCoordinate == __instance || pair.Value.chaFile.coordinate == __instance) { owner = pair.Value; break; } } if (owner == null) { AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo($"Unidentified Coordinate being saved: {__instance?.coordinateName} - {__instance?.coordinateFileName}"); return; } // Find Controller AdditionalAccessoryControlsController aacController = owner.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.RestoreCharacterAccessoriesForSave(__instance); } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Character Accessories may not be restored after this save. {e.Message} {e.StackTrace}"); } }
private void ClearAndResyncSlot() { if (!MakerAPI.InsideAndLoaded) { return; } AdditionalAccessoryControlsController aacController = MakerAPI.GetCharacterControl().gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.ClearAndResyncSlot(AccessoriesApi.SelectedMakerAccSlot); }
public static void ChangingClothes(ChaControl __instance, int kind) { try { AdditionalAccessoryControlsController aacController = __instance.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(clothes: true); } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Visibility Updates Not Thrown. {e.Message} {e.StackTrace}"); } }
public static void ShowAccessory(ChaControl __instance, int slotNo) { try { AdditionalAccessoryControlsController aacController = __instance.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(accessory: true, sourceSlot: slotNo); } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Visibility Updates Not Thrown. {e.Message} {e.StackTrace}"); } }
static void beforeCoordinateCapture() { try { ChaControl chaCtrl = Singleton <CustomBase> .Instance.chaCtrl; AdditionalAccessoryControlsController aacController = chaCtrl.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HideCharacterAccessories(); } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Character accessories may not have been hidden prior to save. {e.Message} {e.StackTrace}"); } }
private void ReloadCustomInterface(object sender, EventArgs eventArgs) { AdditionalAccessoryControlsController aacController = MakerAPI.GetCharacterControl().gameObject.GetComponent <AdditionalAccessoryControlsController>(); int currentSlot = AccessoriesApi.SelectedMakerAccSlot; if (currentSlot != -1 && aacController != null) { advancedParentLabel.Text = $"Adv Parent: {aacController.SlotData[currentSlot].AdvancedParentShort}"; } else { advancedParentLabel.Text = "Adv Parent: None"; } }
// Open/Close the Visibility Rules UI private void VisibilityRulesListener() { if (!MakerAPI.InsideAndLoaded) { return; } if (AdditionalAccessoryUI.Instance.enabled) { AdditionalAccessoryUI.Hide(); return; } int currentSlot = AccessoriesApi.SelectedMakerAccSlot; if (currentSlot != -1) { AdditionalAccessoryControlsController aacController = MakerAPI.GetCharacterControl().gameObject.GetComponent <AdditionalAccessoryControlsController>(); if (currentSlot >= aacController.SlotData.Length) { #if DEBUG Log.LogInfo("Invalid Slot (Beyond current length)"); #endif AdditionalAccessoryUI.Hide(); } else if (aacController.SlotData[currentSlot] != null && !aacController.SlotData[currentSlot].IsEmpty) { #if DEBUG Log.LogInfo($"Showing Rules for {MakerAPI.GetCharacterControl()?.chaFile?.parameter?.fullname}"); #endif AdditionalAccessoryUI.Show(aacController.SlotData[currentSlot], MakerAPI.GetCharacterControl()); } else { #if DEBUG Log.LogInfo("No Acc Slot Data and/or Empty"); #endif AdditionalAccessoryUI.Hide(); } } else { #if DEBUG Log.LogInfo("No Slot Selected"); #endif AdditionalAccessoryUI.Hide(); } }
static void HSceneStartPost(HScene __instance, ChaControl[] ___chaFemales, ChaControl[] ___chaMales) { try { if (HStartInit) { HStartInit = false; foreach (ChaControl female in ___chaFemales) { if (female != null) { #if DEBUG AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo($"Sending event for: {female?.fileParam?.fullname}"); #endif AdditionalAccessoryControlsController aacController = female.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(hstart: true); } } foreach (ChaControl male in ___chaMales) { if (male != null) { #if DEBUG AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo($"Sending event for: {male?.fileParam?.fullname}"); #endif AdditionalAccessoryControlsController aacController = male.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(hstart: true); } } } foreach (ChaControl control in dirtyChars) { #if DEBUG AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo($"Sending event for: {control?.fileParam?.fullname}"); #endif AdditionalAccessoryControlsController aacController = control.gameObject.GetComponent <AdditionalAccessoryControlsController>(); aacController.HandleVisibilityRules(hstart: true); } dirtyChars.Clear(); } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Visibility Updates Not Thrown. {e.Message} {e.StackTrace}"); } }
private void AdvancedParent() { if (!MakerAPI.InsideAndLoaded) { return; } if (AdditionalAccessoryAdvancedParentUI.Instance.enabled) { AdditionalAccessoryAdvancedParentUI.Hide(); } else { int currentSlot = AccessoriesApi.SelectedMakerAccSlot; AdditionalAccessoryControlsController aacController = MakerAPI.GetCharacterControl().gameObject.GetComponent <AdditionalAccessoryControlsController>(); AdditionalAccessoryAdvancedParentUI.Show(aacController.SlotData[currentSlot], MakerAPI.GetCharacterControl()); } }
static void OnStudioCoordLoadPrefix(OCIChar __instance) { try { #if DEBUG AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo($"Saving Coord Preload Snapshots"); #endif // Find Controller AdditionalAccessoryControlsController aacController = __instance.charInfo.gameObject.GetComponent <AdditionalAccessoryControlsController>(); if (aacController != null) { aacController.MaterialEditorHelper.UpdateOnCoordinateLoadSnapshot(); aacController.DBHelper.UpdateOnCoordinateLoadSnapshot(); } } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Character Accessories may not be restored after this load. {e.Message} {e.StackTrace}"); } }
static void OnCoordLoadPrefix(ChaFileCoordinate __instance) { try { ChaControl owner = null; if (Character.Instance == null || Character.Instance.dictEntryChara == null) { return; } foreach (KeyValuePair <int, ChaControl> pair in Character.Instance.dictEntryChara) { if (pair.Value.nowCoordinate == __instance || pair.Value.chaFile.coordinate == __instance) { owner = pair.Value; break; } } if (owner == null) { return; } #if DEBUG AdditionalAccessoryControlsPlugin.Instance.Log.LogInfo($"Saving Coord Preload Snapshots"); #endif // Find Controller AdditionalAccessoryControlsController aacController = owner.gameObject.GetComponent <AdditionalAccessoryControlsController>(); if (aacController != null) { aacController.MaterialEditorHelper.UpdateOnCoordinateLoadSnapshot(); aacController.DBHelper.UpdateOnCoordinateLoadSnapshot(); } } catch (Exception e) { AdditionalAccessoryControlsPlugin.Instance.Log.LogWarning($"Exception in AACP Hook, Character Accessories may not be restored after this load. {e.Message} {e.StackTrace}"); } }
// Handle Maker Acc Slot Change private void UpdateUI(object sender, AccessorySlotEventArgs args) { if (args.SlotIndex >= 0) { #if DEBUG Log.LogInfo($"Changing Displayed Slot to {args.SlotIndex}"); #endif AdditionalAccessoryControlsController aacController = MakerAPI.GetCharacterControl().gameObject.GetComponent <AdditionalAccessoryControlsController>(); if (args.SlotIndex >= aacController.SlotData.Length) { #if DEBUG Log.LogInfo($"New Slot Added: {args.SlotIndex}"); #endif aacController.AddOrUpdateSlot(args.SlotIndex, AdditionalAccessorySlotData.EmptySlot(args.SlotIndex)); } if (aacController.SlotData[args.SlotIndex] != null && !aacController.SlotData[args.SlotIndex].IsEmpty) { #if DEBUG Log.LogInfo($"New Slot Set: {aacController.SlotData[args.SlotIndex]}"); #endif AdditionalAccessoryUI.Change(aacController.SlotData[args.SlotIndex], aacController.ChaControl); advancedParentLabel.Text = $"Adv Parent: {aacController.SlotData[args.SlotIndex].AdvancedParentShort}"; AdditionalAccessoryAdvancedParentUI.Change(aacController.SlotData[args.SlotIndex], aacController.ChaControl); } else { #if DEBUG Log.LogInfo("No Slot Data or Slot Empty."); #endif advancedParentLabel.Text = "Adv Parent: None"; AdditionalAccessoryUI.Hide(); AdditionalAccessoryAdvancedParentUI.Hide(); } } }
private string[] AvailableSlotsNums() { AdditionalAccessoryControlsController aacController = Controller.gameObject.GetComponent <AdditionalAccessoryControlsController>(); return(aacController.SlotData.Where <AdditionalAccessorySlotData>(slot => !slot.IsEmpty && slot.SlotNumber != CurrentSlot.SlotNumber).Select <AdditionalAccessorySlotData, string>(slot => (slot.SlotNumber).ToString("00")).ToArray()); }
private void OnDestroy() { Controller = null; CurrentSlot = null; }