Пример #1
0
        private static bool TryCreateExactNamespaceTexture(UpperString name, ResourceNamespace resourceNamespace,
                                                           out Texture texture)
        {
            if (loadedImages.TryGetValue(name, resourceNamespace, out RgbaImage loadedImage))
            {
                texture = CreateAndTrackTexture(name, resourceNamespace, loadedImage);
                return(true);
            }

            if (TextureDefinitionManager.TryGetExact(name, resourceNamespace, out TextureDefinition definition))
            {
                RgbaImage compiledImage = TextureDefinitionToImage(definition);
                loadedImages.Add(name, resourceNamespace, compiledImage);
                texture = CreateAndTrackTexture(name, resourceNamespace, compiledImage);
                return(true);
            }

            if (Data.TryFindExact(name, resourceNamespace, out IEntry entry))
            {
                if (TryReadImageEntry(entry, resourceNamespace, out RgbaImage newImage))
                {
                    loadedImages.Add(name, resourceNamespace, newImage);
                    texture = CreateAndTrackTexture(name, resourceNamespace, newImage);
                    return(true);
                }
            }

            texture = null;
            return(false);
        }
 internal static void CompileAnyNewVanillaDefinitions()
 {
     foreach (TextureDefinition definition in vanillaTextureTracker.CompileDefinitions())
     {
         textureDefinitions.Add(definition.Name, definition.Namespace, definition);
     }
 }
Пример #3
0
        public static bool TryGetTexture(UpperString name, ResourceNamespace priorityNamespace,
                                         out Texture texture)
        {
            if (textures.TryGetValue(name, priorityNamespace, out texture))
            {
                return(true);
            }

            // This is a heuristic to make failed lookups less expensive, as
            // there is a lot of work done to create the texture if it does
            // not exist after this.
            if (missingTextureNames.Contains(name))
            {
                texture = NullTexture;
                return(false);
            }

            if (TryCreateExactNamespaceTexture(name, priorityNamespace, out texture))
            {
                textures.Add(name, priorityNamespace, texture);
                return(true);
            }

            if (textures.TryGetAnyValue(name, out texture, out _))
            {
                return(true);
            }

            if (TryCreateAnyNamespaceTexture(name, out texture, out ResourceNamespace newNamespace))
            {
                textures.Add(name, newNamespace, texture);
                return(true);
            }

            missingTextureNames.Add(name);

            texture = NullTexture;
            return(false);
        }
Пример #4
0
        public static string ScriptInclude(this AjaxHelper helper, params string[] url)
        {
            var tracker = new ResourceTracker(helper.ViewContext.HttpContext);

            var sb = new StringBuilder();
            foreach (var item in url)
            {
                if (!tracker.Contains(item))
                {
                    tracker.Add(item);
                    sb.AppendFormat("<script type='text/javascript' src='{0}'></script>", item);
                    sb.AppendLine();
                }
            }
            return sb.ToString();
        }