コード例 #1
0
ファイル: Maker.cs プロジェクト: Madevil/MaterialRouter
            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();
            }
コード例 #2
0
ファイル: Maker.cs プロジェクト: Madevil/MaterialRouter
            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));
            }
コード例 #3
0
ファイル: Maker.cs プロジェクト: Madevil/MaterialRouter
            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));
                }
            }
コード例 #4
0
ファイル: Maker.cs プロジェクト: Madevil/MaterialRouter
            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();
            }