Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }