private static FileSystemOrderItem AddFileTagItem(FileListFile originalFile, uint fileId) { //find tag item var publishInfo = PublishInfo.GetPublishInfo(originalFile.FileInfo); FileSystemTagItem tagItem; if (TagItems.ContainsKey(publishInfo)) { tagItem = TagItems[publishInfo]; } else { tagItem = new FileSystemTagItem { Tag = publishInfo.Tag }; TagItems.Add(publishInfo, tagItem); FileSystem.TagItems.Add(tagItem); } //find name item string resourceName = originalFile.ResourceName; if (tagItem != null) { var nameItems = tagItem.NameItems; var nameItem = nameItems.FirstOrDefault(resourceMapNameItem => resourceMapNameItem.Name == resourceName); if (nameItem == null) { nameItem = new FileSystemNameItem { Name = resourceName }; nameItems.Add(nameItem); } //find order item uint order = originalFile.Order; var orderItems = nameItem.OrderItems; var orderItem = orderItems.FirstOrDefault(resourceMapOrderItem => resourceMapOrderItem.Order == order); if (orderItem == null) { orderItem = new FileSystemOrderItem { Order = order, FileId = fileId }; orderItems.Add(orderItem); return(orderItem); } else { var prevItem = FileListGenerator.GetFileName(orderItem.FileId); Logger.LogAll("\tDuplicate tag item:{0} in {1} & {2}\r\n", resourceName, originalFile, prevItem); } } return(null); }
public static void TryUpdate(FileCacheItem item) { if (mFileSystem == null) { return; } var resourceName = FileListFile.GetResourceName(item.path); var resourceOrder = FileListFile.GetResourceOrder(item.path); FileSystemOrderItem orderItem = null; foreach (var tagItems in mFileSystem.TagItems) { foreach (var fileSystemNameItem in tagItems.NameItems) { if (fileSystemNameItem.Name == resourceName) { foreach (var fileSystemOrderItem in fileSystemNameItem.OrderItems) { if (fileSystemOrderItem.Order == resourceOrder) { if (orderItem == null) { orderItem = fileSystemOrderItem; } else { return; } } } } } } if (orderItem != null) { item.TextureRect = orderItem.TextureRect; item.Offset = orderItem.Offset; Logger.LogInfoLine("FileCache FileSystem Hit:{0}", item.path); } }