internal void TransferAccessoriesHandler(AccessoryTransferEventArgs e) { if (!HairAccessories.ContainsKey(CurrentCoordinateIndex)) { return; } if (HairAccessories[CurrentCoordinateIndex].TryGetValue(e.SourceSlotIndex, out var hairAccessoryInfo)) { //copy hair accessory info to the destination slot var newHairAccessoryInfo = new HairAccessoryInfo(); newHairAccessoryInfo.ColorMatch = hairAccessoryInfo.ColorMatch; newHairAccessoryInfo.HairGloss = hairAccessoryInfo.HairGloss; newHairAccessoryInfo.OutlineColor = hairAccessoryInfo.OutlineColor; newHairAccessoryInfo.AccessoryColor = hairAccessoryInfo.AccessoryColor; newHairAccessoryInfo.HairLength = hairAccessoryInfo.HairLength; HairAccessories[CurrentCoordinateIndex][e.DestinationSlotIndex] = newHairAccessoryInfo; if (AccessoriesApi.SelectedMakerAccSlot == e.DestinationSlotIndex) { InitCurrentSlot(this, true); } } else { //not a hair accessory, remove hair accessory info from the destination slot HairAccessories[CurrentCoordinateIndex].Remove(e.DestinationSlotIndex); InitCurrentSlot(this, false); } UpdateAccessories(); }
internal void CopyAccessoriesHandler(AccessoryCopyEventArgs e) { if (!HairAccessories.ContainsKey((int)e.CopySource)) { HairAccessories[(int)e.CopySource] = new Dictionary <int, HairAccessoryInfo>(); } if (!HairAccessories.ContainsKey((int)e.CopyDestination)) { HairAccessories[(int)e.CopyDestination] = new Dictionary <int, HairAccessoryInfo>(); } foreach (int x in e.CopiedSlotIndexes) { if (HairAccessories[(int)e.CopySource].TryGetValue(x, out var hairAccessoryInfo)) { //copy hair accessory info to the destination coordinate and slot var newHairAccessoryInfo = new HairAccessoryInfo(); newHairAccessoryInfo.ColorMatch = hairAccessoryInfo.ColorMatch; newHairAccessoryInfo.HairGloss = hairAccessoryInfo.HairGloss; newHairAccessoryInfo.OutlineColor = hairAccessoryInfo.OutlineColor; newHairAccessoryInfo.AccessoryColor = hairAccessoryInfo.AccessoryColor; newHairAccessoryInfo.HairLength = hairAccessoryInfo.HairLength; HairAccessories[(int)e.CopyDestination][x] = newHairAccessoryInfo; } else { //not a hair accessory, remove hair accessory info from the destination slot HairAccessories[(int)e.CopyDestination].Remove(x); } } }
/// <summary> /// Initializes the HairAccessoryInfo for the slot if it is a hair accessory, or removes it if it is not. /// </summary> /// <returns>True if HairAccessoryInfo was initialized</returns> public bool InitHairAccessoryInfo(int slot) { if (IsHairAccessory(slot)) { if (!HairAccessories.ContainsKey(CurrentCoordinateIndex)) { HairAccessories[CurrentCoordinateIndex] = new Dictionary <int, HairAccessoryInfo>(); } if (!HairAccessories[CurrentCoordinateIndex].ContainsKey(slot)) { HairAccessories[CurrentCoordinateIndex][slot] = new HairAccessoryInfo(); return(true); } return(false); } RemoveHairAccessoryInfo(slot); return(false); }
internal static void StoreSetting(ChaControl chaCtrl, object pluginCtrl, int slot) { if (!Installed) { return; } if (IsHairAccessory(chaCtrl, slot)) { HairAccessoryInfos[slot] = new HairAccessoryInfo() { HairGloss = Traverse.Create(pluginCtrl).Method("GetHairGloss", new object[] { slot }).GetValue <bool>(), ColorMatch = Traverse.Create(pluginCtrl).Method("GetColorMatch", new object[] { slot }).GetValue <bool>(), OutlineColor = Traverse.Create(pluginCtrl).Method("GetOutlineColor", new object[] { slot }).GetValue <Color>(), AccessoryColor = Traverse.Create(pluginCtrl).Method("GetAccessoryColor", new object[] { slot }).GetValue <Color>(), HairLength = Traverse.Create(pluginCtrl).Method("GetHairLength", new object[] { slot }).GetValue <float>() }; } RemoveSetting(pluginCtrl, slot); }