예제 #1
0
            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();
            }
예제 #2
0
            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);
                    }
                }
            }
예제 #3
0
            /// <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);
            }