internal void AccessoryCopyEvent(AccessoryCopyEventArgs ev) { int srcIdx = (int)ev.CopySource; int dstIdx = (int)ev.CopyDestination; List <int> copySlots = ev.CopiedSlotIndexes.ToList(); if (!OutfitTriggers.ContainsKey(srcIdx)) { OutfitTriggers[srcIdx] = new List <RouteRule>(); } if (!OutfitTriggers.ContainsKey(dstIdx)) { OutfitTriggers[dstIdx] = new List <RouteRule>(); } foreach (int slot in copySlots) { string name = $"/ca_slot{slot:00}/"; OutfitTriggers[dstIdx].RemoveAll(x => x.GameObjectPath.Contains(name)); List <RouteRule> rules = OutfitTriggers[srcIdx].Where(x => x.GameObjectPath.Contains(name)).ToList(); if (rules?.Count > 0) { OutfitTriggers[dstIdx].AddRange(rules); } } BuildCheckList(); }
internal void RemoveAccSlotInfo(int CoordinateIndex, int SlotIndex) { if (!OutfitTriggers.ContainsKey(CoordinateIndex) || OutfitTriggers[CoordinateIndex]?.Count == 0) { return; } string slotName = $"/ca_slot{SlotIndex:00}/"; OutfitTriggers[CoordinateIndex].RemoveAll(x => x.GameObjectPath.Contains(slotName)); }
internal void TransferAccSlotInfo(int CoordinateIndex, AccessoryTransferEventArgs ev) { if (!OutfitTriggers.ContainsKey(CoordinateIndex)) { OutfitTriggers[CoordinateIndex] = new List <RouteRule>(); } int srcIdx = ev.SourceSlotIndex; int dstIdx = ev.DestinationSlotIndex; string srcName = $"/ca_slot{srcIdx:00}/"; string dstName = $"/ca_slot{dstIdx:00}/"; OutfitTriggers[CoordinateIndex].RemoveAll(x => x.GameObjectPath.Contains(dstName)); var rules = OutfitTriggers[CoordinateIndex].Where(x => x.GameObjectPath.Contains(srcName)); if (rules?.Count() > 0) { byte[] data = MessagePackSerializer.Serialize(rules.ToList()); OutfitTriggers[CoordinateIndex].ForEach(x => x.GameObjectPath = x.GameObjectPath.Replace(srcName, dstName)); OutfitTriggers[CoordinateIndex].AddRange(MessagePackSerializer.Deserialize <List <RouteRule> >(data)); } }
internal void ClothingCopiedEvent(int srcIdx, int dstIdx, List <int> copySlots) { if (!OutfitTriggers.ContainsKey(srcIdx)) { OutfitTriggers[srcIdx] = new List <RouteRule>(); } if (!OutfitTriggers.ContainsKey(dstIdx)) { OutfitTriggers[dstIdx] = new List <RouteRule>(); } foreach (int slot in copySlots) { string name = $"/{objClothesNames[slot]}/"; OutfitTriggers[dstIdx].RemoveAll(x => x.GameObjectPath.Contains(name)); List <RouteRule> rules = OutfitTriggers[srcIdx].Where(x => x.GameObjectPath.Contains(name))?.ToList(); if (rules?.Count > 0) { OutfitTriggers[dstIdx].AddRange(rules); } } BuildCheckList(); }