Пример #1
0
 public AssetProvider(Checksum solutionChecksum, SolutionAssetCache assetCache, IAssetSource assetSource, ISerializerService serializerService)
 {
     _solutionChecksum  = solutionChecksum;
     _assetCache        = assetCache;
     _assetSource       = assetSource;
     _serializerService = serializerService;
 }
Пример #2
0
        public static IEnumerable <TAsset> List <TAsset>(string path, IAssetSource filter = null) where TAsset : class, IAsset
        {
            var type = LookupType(typeof(TAsset));

            if (type != null)
            {
                if (type.Compound)
                {
                    // Find the asset in the compound list
                    foreach (var asset in s_loadedCompoundAssets.Values)
                    {
                        if (asset.Asset is TAsset &&
                            AssetPath.GetDirectoryName(asset.Path) == path &&
                            (filter == null || asset.Sources.Contains(filter)))
                        {
                            yield return((TAsset)asset.Asset);
                        }
                    }
                }
                else
                {
                    // Find the asset in the basic list
                    foreach (var asset in s_loadedBasicAssets.Values)
                    {
                        if (asset.Asset is TAsset &&
                            AssetPath.GetDirectoryName(asset.Path) == path &&
                            (filter == null || asset.Source == filter))
                        {
                            yield return((TAsset)asset.Asset);
                        }
                    }
                }
            }
        }
Пример #3
0
 public AssetProvider(int scopeId, SolutionAssetCache assetCache, IAssetSource assetSource, ISerializerService serializerService)
 {
     _scopeId           = scopeId;
     _assetCache        = assetCache;
     _assetSource       = assetSource;
     _serializerService = serializerService;
 }
Пример #4
0
        public static void Main(string[] args)
        {
            // Create localizer
            IAssetBuilder       builder   = new AssetBuilder.OneBuildInstance();
            IAsset              asset     = builder.Build();
            StringLocalizerRoot localizer = new StringLocalizerRoot(asset, new CulturePolicy());

            // Install TutorialLibrary's IAssetSources
            Assembly library = typeof(MyClass).Assembly;

            builder.AddLibraryAssetSources(library).Build();

            #region Snippet
            // Install additional localization that was not available in the TutorialLibrary.
            IAssetSource assetSource = XmlLinesReader.Default.FileAssetSource("TutorialLibrary2-fi.xml");
            builder.AddSource(assetSource).Build();
            #endregion Snippet

            // Create class
            ILine <MyClass> classLocalizer = localizer.Type <MyClass>();
            MyClassB        myClass        = new MyClassB(classLocalizer);

            // Use the culture that was provided with the class library (AssetSources)
            CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("de");
            Console.WriteLine(myClass.Do());

            // Use the culture that was supplied above
            CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fi");
            Console.WriteLine(myClass.Do());
        }
Пример #5
0
        private static AssetLoadTask BuildLoadAllTask(bool reloadIfSourceUnchanged, IAssetSource forceReloadSource)
        {
            var result    = new AssetLoadTask();
            var pathsSeen = new HashSet <string>();

            for (int i = s_assetSources.Count - 1; i >= 0; --i)
            {
                var source = s_assetSources[i];
                foreach (var path in source.AllLoadablePaths)
                {
                    if (!pathsSeen.Contains(path))
                    {
                        var existing = LookupBasic(path);
                        if (existing == null ||
                            existing.Source != source ||
                            reloadIfSourceUnchanged ||
                            source == forceReloadSource)
                        {
                            result.AddPath(path);
                        }
                        pathsSeen.Add(path);
                    }
                }
            }
            return(result);
        }
Пример #6
0
        public static IEnumerable <TAsset> Find <TAsset>(string path, IAssetSource filter = null) where TAsset : class, IAsset
        {
            var pathWithSlash = (path != "") ? path + "/" : "";
            var type          = LookupType(typeof(TAsset));

            if (type != null)
            {
                if (type.Compound)
                {
                    // Find the asset in the compound list
                    foreach (var asset in s_loadedCompoundAssets.Values)
                    {
                        if (asset.Asset is TAsset &&
                            asset.Path.StartsWith(pathWithSlash, StringComparison.InvariantCulture) &&
                            (filter == null || asset.Sources.Contains(filter)))
                        {
                            yield return((TAsset)asset.Asset);
                        }
                    }
                }
                else
                {
                    // Find the asset in the basic list
                    foreach (var asset in s_loadedBasicAssets.Values)
                    {
                        if (asset.Asset is TAsset &&
                            asset.Path.StartsWith(pathWithSlash, StringComparison.InvariantCulture) &&
                            (filter == null || asset.Source == filter))
                        {
                            yield return((TAsset)asset.Asset);
                        }
                    }
                }
            }
        }
Пример #7
0
 public static void RemoveSource(IAssetSource source)
 {
     if (s_assetSources.Contains(source))
     {
         App.Log("Removing {0} assets", source.Name);
         s_assetSources.Remove(source);
     }
 }
Пример #8
0
 public static void AddSource(IAssetSource source)
 {
     if (!s_assetSources.Contains(source))
     {
         App.Log("Adding {0} assets", source.Name);
         s_assetSources.Add(source);
     }
 }
        /// <summary>
        /// Create observer for one file.
        /// </summary>
        /// <param name="assetSource"></param>
        /// <param name="fileProvider"></param>
        /// <param name="observer"></param>
        /// <param name="filePath"></param>
        public FileProviderObserver(IAssetSource assetSource, IFileProvider fileProvider, IObserver <IAssetSourceEvent> observer, string filePath)
        {
            this.assetSource  = assetSource ?? throw new ArgumentNullException(nameof(assetSource));
            this.observer     = observer ?? throw new ArgumentNullException(nameof(observer));
            this.FilePath     = filePath ?? throw new ArgumentNullException(nameof(filePath));
            this.fileProvider = fileProvider ?? throw new ArgumentNullException(nameof(fileProvider));
            existed           = fileProvider.GetFileInfo(filePath).Exists ? 1 : 0;
            IChangeToken changeToken = fileProvider.Watch(filePath);

            watcher = changeToken.RegisterChangeCallback(OnEvent, this);
        }
Пример #10
0
        public static TAsset[] LoadAll <TAsset>(this IAssetSource source, string dir) where TAsset : IBasicAsset
        {
            var paths   = source.ListAll <TAsset>(dir).ToArray();
            var results = new TAsset[paths.Length];

            for (int i = 0; i < paths.Length; ++i)
            {
                var path = paths[i];
                results[i] = source.Load <TAsset>(path);
            }
            return(results);
        }
Пример #11
0
        public static TAsset Load <TAsset>(this IAssetSource source, string path) where TAsset : IBasicAsset
        {
            var asset = source.LoadBasic(path);

            if (asset is TAsset)
            {
                return((TAsset)asset);
            }
            else
            {
                asset.Dispose();
                throw new AssetLoadException(path, "Asset is of incorrect type");
            }
        }
Пример #12
0
        /// <summary>
        /// Create observer for one file.
        /// </summary>
        /// <param name="assetSource"></param>
        /// <param name="observer"></param>
        /// <param name="filePath"></param>
        public FileObserver(IAssetSource assetSource, IObserver <IAssetSourceEvent> observer, string filePath)
        {
            this.AssetSource = assetSource ?? throw new ArgumentNullException(nameof(assetSource));
            Observer         = observer ?? throw new ArgumentNullException(nameof(observer));
            FilePath         = filePath ?? throw new ArgumentNullException(nameof(filePath));
            FileInfo fi = new FileInfo(filePath);

            watcher = new FileSystemWatcher(fi.Directory.FullName, fi.Name);
            watcher.NotifyFilter          = NotifyFilters.LastWrite | NotifyFilters.CreationTime | NotifyFilters.FileName;
            watcher.IncludeSubdirectories = false;
            watcher.Changed += OnEvent;
            watcher.Created += OnEvent;
            watcher.Deleted += OnEvent;
        }
Пример #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AssetManager"/> class
        /// with a <see cref="IAssetSource"/>.
        /// </summary>
        /// <param name="assetSource"></param>
        public AssetManager(IAssetSource assetSource)
        {
            if (assetSource == null)
            {
                throw new NullReferenceException(nameof(assetSource));
            }

            _assetSource  = assetSource;
            _loadedAssets = new MultiValueDicionary <string, object>(
                new ConcurrentDictionary <string, ICollection <object> >(StringComparer.OrdinalIgnoreCase),
                () => new ConcurrentList <object>());
            _disposableAssets = new ConcurrentList <IDisposable>();
            _disposed         = false;
        }
Пример #14
0
        public AssetProvider CreateAssetProvider(
            PinnedSolutionInfo solutionInfo,
            SolutionAssetCache assetCache,
            IAssetSource assetSource
            )
        {
            var serializerService = Services.GetRequiredService <ISerializerService>();

            return(new AssetProvider(
                       solutionInfo.ScopeId,
                       assetCache,
                       assetSource,
                       serializerService
                       ));
        }
Пример #15
0
        public static IEnumerable <string> ListAll <TAsset>(this IAssetSource source, string dir) where TAsset : IBasicAsset
        {
            var extension = Assets.GetExtension <TAsset>();

            if (extension != null)
            {
                foreach (var path in source.AllLoadablePaths)
                {
                    if (AssetPath.GetDirectoryName(path) == dir &&
                        AssetPath.GetExtension(path) == extension)
                    {
                        yield return(path);
                    }
                }
            }
        }
Пример #16
0
        private static void LoadBasicAsset(string path, IAssetSource source, bool reloadIfSourceUnchanged)
        {
            var existingBasic = LookupBasic(path);

            if (existingBasic != null)
            {
                // Reload an existing asset
                if (reloadIfSourceUnchanged || existingBasic.Source != source)
                {
                    source.ReloadBasic(existingBasic.Asset);
                    existingBasic.Source = source;
                }
            }
            else
            {
                // Create a new asset
                var asset       = source.LoadBasic(path);
                var loadedAsset = new LoadedBasicAsset(path, asset);
                loadedAsset.Source = source;
                s_loadedBasicAssets.Add(path, loadedAsset);
            }
        }
Пример #17
0
        public async Task LoadAssets(IAssetSource assetSource)
        {
            var shaderFileName = assetSource.GetAbsolutePath(ShaderFilename);
            var shaderFilenameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(shaderFileName);
            var compiledShadersExist           = new string[] {
                $"{shaderFilenameWithoutExtension}.vs.spirv",
                $"{shaderFilenameWithoutExtension}.fs.spirv"
            }.Aggregate(true, (shadersExist, fileName) =>
                        shadersExist && assetSource.Exists(assetSource.GetAbsolutePath(fileName))
                        );

            var isVulkan = Game.Services.Resolve <Services.GraphicsDeviceFeatures>().BackendType == GraphicsBackend.Vulkan;

            if ((!_isWindows || isVulkan) && compiledShadersExist)
            {
                // TODO: Wait for https://github.com/mellinoe/veldrid-spirv/pull/2 and remove this? Or keep em for mobile?
                _vertexShaderSource = await ShaderImporter.Instance.Import(assetSource.Load(
                                                                               AssetType.Shader,
                                                                               assetSource.GetAbsolutePath($"{shaderFilenameWithoutExtension}.vs.spirv")
                                                                               ));

                _fragmentShaderSource = await ShaderImporter.Instance.Import(assetSource.Load(
                                                                                 AssetType.Shader,
                                                                                 assetSource.GetAbsolutePath($"{shaderFilenameWithoutExtension}.fs.spirv")
                                                                                 ));
            }
            else if (assetSource.Exists(shaderFileName))
            {
                var shaderSource = await ShaderImporter.Instance.Import(
                    assetSource.Load(AssetType.Shader, shaderFileName)
                    );

                _vertexShaderSource = _fragmentShaderSource = shaderSource;
            }
            else
            {
                throw new FileNotFoundException($"Shader not found: {ShaderFilename}");
            }
        }
Пример #18
0
        public static void ReloadSource(IAssetSource source)
        {
            var task = BuildLoadAllTask(false, source);

            task.LoadAll();
        }
Пример #19
0
        public static void Main(string[] args)
        {
            // 1. Line
            {
                #region Snippet_1a
                ILine key = LineRoot.Global.PluralRules("Unicode.CLDR35").Key("Key").Format("Hello, {0}");
                #endregion Snippet_1a
            }

            {
                #region Snippet_1b
                ILineRoot root       = new LineRoot();
                ILine     hint1      = root.PluralRules("Unicode.CLDR35");
                ILine     section1   = hint1.Section("Section2");
                ILine     section1_1 = hint1.Section("Section1.1");
                ILine     key1_1_1   = section1_1.Key("Key1");
                ILine     key1_1_2   = section1_1.Key("Key2");
                ILine     value1_1_1 = key1_1_1.Format("Hello, {0}");
                // ...
                #endregion Snippet_1b
            }

            // 2. Parts
            {
                #region Snippet_2a
                IAsset resourceAsset = new ResourceDictionary(new Dictionary <ILine, byte[]>());
                ILine  line          = LineRoot.Global.Asset(resourceAsset);
                #endregion Snippet_2a
            }
            {
                #region Snippet_2b
                ILine line = LineRoot.Global.Logger(Console.Out, LineStatusSeverity.Ok);
                #endregion Snippet_2b
            }
            {
                #region Snippet_2c
                ICulturePolicy culturePolicy = new CulturePolicy().SetToCurrentCulture();
                ILine          line          = LineRoot.Global.CulturePolicy(culturePolicy);
                #endregion Snippet_2c
            }
            {
                #region Snippet_2d
                #endregion Snippet_2d
            }
            {
                #region Snippet_2e
                #endregion Snippet_2e
            }
            {
                #region Snippet_2f
                #endregion Snippet_2f
            }
            {
                #region Snippet_2g
                #endregion Snippet_2g
            }
            {
                #region Snippet_2h
                #endregion Snippet_2h
            }

            // 3. Hints
            {
                #region Snippet_3_
                IAsset    asset = LineReaderMap.Default.FileAsset("ILine\\Hints.ini");
                ILineRoot root  = new LineRoot(asset);
                Console.WriteLine(root.Key("Error").Value(DateTime.Now));
                Console.WriteLine(root.Key("Ok"));
                #endregion Snippet_3_
            }
            {
                #region Snippet_3a
                ILine line1 = LineRoot.Global.StringFormat(TextFormat.Default).String("Text");
                ILine line2 = LineRoot.Global.StringFormat("Lexical.Localization.StringFormat.TextFormat,Lexical.Localization")
                              .String("Text");
                #endregion Snippet_3a
                Console.WriteLine(line2);
            }
            {
                #region Snippet_3b
                IPluralRules pluralRules = PluralRulesResolver.Default.Resolve("Unicode.CLDR35");
                ILine        line1       = LineRoot.Global.PluralRules(pluralRules);
                ILine        line2       = LineRoot.Global.PluralRules("Unicode.CLDR35");
                ILine        line3       = LineRoot.Global.PluralRules("[Category=cardinal,Case=one]n=1[Category=cardinal,Case=other]true");
                #endregion Snippet_3b
                Console.WriteLine(line2);
            }
            {
                #region Snippet_3c
                IFormatProvider customFormat = new CustomFormat();
                ILine           line1        = LineRoot.Global.FormatProvider(customFormat).Format("{0:DATE}").Value(DateTime.Now);
                ILine           line2        = LineRoot.Global.FormatProvider("docs.CustomFormat,docs").Format("{0:DATE}").Value(DateTime.Now);
                #endregion Snippet_3c
                Console.WriteLine(line1);
                Console.WriteLine(line2);
            }
            {
                #region Snippet_3e
                ResolveSource[] resolveSequence =
                    new ResolveSource[] { ResolveSource.Inline, ResolveSource.Asset, ResolveSource.Line };

                IStringResolver stringResolver = new StringResolver(Resolvers.Default, resolveSequence);
                ILine           line           = LineRoot.Global.StringResolver(stringResolver);
                #endregion Snippet_3e
                Console.WriteLine(line);
            }
            {
                #region Snippet_3f
                ILine line = LineRoot.Global.StringResolver("Lexical.Localization.StringFormat.StringResolver");
                #endregion Snippet_3f
                Console.WriteLine(line);
            }
            {
                #region Snippet_3g
                ResolveSource[] resolveSequence =
                    new ResolveSource[] { ResolveSource.Inline, ResolveSource.Asset, ResolveSource.Line };

                IResourceResolver resourceResolver = new ResourceResolver(Resolvers.Default, resolveSequence);
                ILine             line             = LineRoot.Global.ResourceResolver(resourceResolver);
                #endregion Snippet_3g
                Console.WriteLine(line);
            }
            {
                #region Snippet_3h
                ILine line = LineRoot.Global.ResourceResolver("Lexical.Localization.Resource.ResourceResolver");
                #endregion Snippet_3h
                Console.WriteLine(line);
            }

            // 4. Keys
            {
                #region Snippet_4a
                #endregion Snippet_4a
            }
            {
                #region Snippet_4b
                #endregion Snippet_4b
            }
            {
                #region Snippet_4c
                #endregion Snippet_4c
            }
            {
                #region Snippet_4d
                #endregion Snippet_4d
            }
            {
                #region Snippet_4e
                #endregion Snippet_4e
            }
            {
                #region Snippet_4f
                #endregion Snippet_4f
            }
            {
                #region Snippet_4g
                #endregion Snippet_4g
            }
            {
                #region Snippet_4h
                #endregion Snippet_4h
            }

            // 5. Non-canonicals
            {
                #region Snippet_5a
                Assembly asm   = typeof(ILine_Examples).Assembly;
                ILine    line1 = LineRoot.Global.Assembly(asm);
                ILine    line2 = LineRoot.Global.Assembly("docs");
                #endregion Snippet_5a
            }
            {
                #region Snippet_5b
                CultureInfo culture = CultureInfo.GetCultureInfo("en");
                ILine       line1   = LineRoot.Global.Culture(culture);
                ILine       line2   = LineRoot.Global.Culture("en");
                #endregion Snippet_5b
            }
            {
                #region Snippet_5c
                ILine line1 = LineRoot.Global.Type <ILine_Examples>();
                ILine line2 = LineRoot.Global.Type(typeof(ILine_Examples));
                #endregion Snippet_5c
            }
            {
                #region Snippet_5d
                #endregion Snippet_5d
            }
            {
                #region Snippet_5e
                #endregion Snippet_5e
            }
            {
                #region Snippet_5f
                #endregion Snippet_5f
            }
            {
                #region Snippet_5g
                #endregion Snippet_5g
            }
            {
                #region Snippet_5h
                #endregion Snippet_5h
            }

            // 6. Canonicals
            {
                #region Snippet_6a
                ILine line = LineRoot.Global.Key("Ok");
                #endregion Snippet_6a
            }
            {
                #region Snippet_6b
                ILine line = LineRoot.Global.Section("Resources").Key("Ok");
                #endregion Snippet_6b
            }
            {
                #region Snippet_6c
                ILine line = LineRoot.Global.Location(@"c:\dir");
                #endregion Snippet_6c
            }
            {
                #region Snippet_6d
                ILine line = LineRoot.Global.BaseName("docs.Resources");
                #endregion Snippet_6d
            }
            {
                #region Snippet_6e
                #endregion Snippet_6e
            }
            {
                #region Snippet_6f
                #endregion Snippet_6f
            }
            {
                #region Snippet_6g
                #endregion Snippet_6g
            }
            {
                #region Snippet_6h
                #endregion Snippet_6h
            }

            // 7. Strings
            {
                #region Snippet_7a
                IString str  = CSharpFormat.Default.Parse("ErrorCode = 0x{0:X8}");
                ILine   line = LineRoot.Global.Key("Error").String(str);
                #endregion Snippet_7a
            }
            {
                #region Snippet_7b
                ILine line = LineRoot.Global.Key("Error").StringFormat(CSharpFormat.Default).String("ErrorCode = 0x{0:X8}");
                #endregion Snippet_7b
            }
            {
                #region Snippet_7c
                ILine line = LineRoot.Global.Key("Error").Format("ErrorCode = 0x{0:X8}");
                #endregion Snippet_7c
            }
            {
                #region Snippet_7c2
                int   code = 0x100;
                ILine line = LineRoot.Global.Key("Error").Format($"ErrorCode = 0x{code:X8}");
                #endregion Snippet_7c2
                Console.WriteLine(line);
            }
            {
                #region Snippet_7d
                ILine line = LineRoot.Global.Key("Hello").Text("Hello World");
                #endregion Snippet_7d
            }
            {
                #region Snippet_7e
                ILine line = LineRoot.Global.Section("Section").Key("Success")
                             .Format("Success")                        // Add inlining to the root culture ""
                             .Inline("Culture:en", "Success")          // Add inlining to culture "en"
                             .Inline("Culture:fi", "Onnistui")         // Add inlining to culture "fi"
                             .Inline("Culture:sv", "Det funkar");      // Add inlining to culture "sv"
                #endregion Snippet_7e
            }
            {
                #region Snippet_7f
                ILine line = LineRoot.Global.Section("Section").Key("Success")
                             .Format("Success")                         // Add inlining to the root culture ""
                             .en("Success")                             // Add inlining to culture "en"
                             .fi("Onnistui")                            // Add inlining to culture "fi"
                             .sv("Det funkar");                         // Add inlining to culture "sv"
                #endregion Snippet_7f
            }

            // Enumerations
            {
                #region Snippet_7l
                ILine carFeature = LineRoot.Global.Assembly("docs").Type <CarFeature>().Format("{0}");
                #endregion Snippet_7l
            }
            {
                #region Snippet_7l2
                ILine carFeature = LineRoot.Global.Assembly("docs").Type <CarFeature>().InlineEnum <CarFeature>().Format("{0}");
                #endregion Snippet_7l2
            }
            {
                #region Snippet_7l3
                IAssetSource assetSource = LineReaderMap.Default.FileAssetSource(@"ILine\CarFeature.ini");
                LineRoot.Builder.AddSource(assetSource).Build();
                #endregion Snippet_7l3
            }
            {
                #region Snippet_7m
                ILine carFeature = LineRoot.Global.Assembly("docs").Type <CarFeature>()
                                   .InlineEnum <CarFeature>()
                                   .InlineEnum(CarFeature.Electric, "fi", "Sähkö")
                                   .InlineEnum(CarFeature.Petrol, "fi", "Bensiini")
                                   .InlineEnum(CarFeature.NaturalGas, "fi", "Maakaasu")
                                   .InlineEnum(CarFeature.TwoDoors, "fi", "Kaksiovinen")
                                   .InlineEnum(CarFeature.FourDoors, "fi", "Neliovinen")
                                   .InlineEnum(CarFeature.FiveDoors, "fi", "Viisiovinen")
                                   .InlineEnum(CarFeature.Red, "fi", "Punainen")
                                   .InlineEnum(CarFeature.Black, "fi", "Musta")
                                   .InlineEnum(CarFeature.White, "fi", "Valkoinen")
                                   .Format("{0}");
                #endregion Snippet_7m

                CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("");
                #region Snippet_7m2
                Console.WriteLine(carFeature.Key(CarFeature.Petrol));
                Console.WriteLine(carFeature.Key(CarFeature.Petrol).Culture("fi"));
                Console.WriteLine(carFeature.Key(CarFeature.Petrol).Culture("sv"));
                #endregion Snippet_7m2

                #region Snippet_7m3
                CarFeature features = CarFeature.Petrol | CarFeature.FiveDoors | CarFeature.Black;
                Console.WriteLine(carFeature.Value(features));
                #endregion Snippet_7m3
                #region Snippet_7m5
                Console.WriteLine(carFeature.Formulate($"{CarFeature.Petrol | CarFeature.Black:|}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{CarFeature.Petrol | CarFeature.Black: |}").Culture("fi"));
                #endregion Snippet_7m5
            }
            {
                #region Snippet_7m6
                ILine carFeature = LineRoot.Global.Assembly("docs").Type <CarFeature>().InlineEnum <CarFeature>()
                                   .InlineEnum(CarFeature.Electric, "de", "Elektroauto")
                                   .InlineEnum(CarFeature.Petrol, "de", "Benzinwagen")
                                   .InlineEnum(CarFeature.NaturalGas, "de", "Erdgasauto")
                                   .InlineEnum(CarFeature.TwoDoors, "de", "Zweitürig")
                                   .InlineEnum(CarFeature.FourDoors, "de", "Viertürig")
                                   .InlineEnum(CarFeature.FiveDoors, "de", "Fünftürige")
                                   .InlineEnum(CarFeature.Red, "de", "Rot")
                                   .InlineEnum(CarFeature.Black, "de", "Schwartz")
                                   .InlineEnum(CarFeature.White, "de", "Weiß")
                                   .Format("{0}");

                ILine message = LineRoot.Global.Assembly("docs").Type("MyClass").Key("Msg")
                                .Format("Your car has following features: {0}")
                                .de("Ihr Auto hat folgende Eigenschaften: {0}");

                Console.WriteLine(message.Value(CarFeature.Petrol | CarFeature.Red | CarFeature.TwoDoors).Culture("fi"));
                Console.WriteLine(message.Value(CarFeature.Petrol | CarFeature.Red | CarFeature.TwoDoors).Culture("sv"));
                Console.WriteLine(message.Value(CarFeature.Petrol | CarFeature.Red | CarFeature.TwoDoors).Culture("de"));
                #endregion Snippet_7m6
            }
            {
                #region Snippet_7m7
                ILine carFeature = LineRoot.Global.Assembly("docs").Type <CarFeature>().InlineEnum <CarFeature>()
                                   .InlineEnum(CarFeature.Electric, "de", "Elektroauto")
                                   .InlineEnum(CarFeature.Petrol, "de", "Benzinwagen")
                                   .InlineEnum(CarFeature.NaturalGas, "de", "Erdgasauto")
                                   .InlineEnum(CarFeature.TwoDoors, "de", "Zweitürig")
                                   .InlineEnum(CarFeature.FourDoors, "de", "Viertürig")
                                   .InlineEnum(CarFeature.FiveDoors, "de", "Fünftürige")
                                   .InlineEnum(CarFeature.Red, "de", "Rot")
                                   .InlineEnum(CarFeature.Black, "de", "Schwartz")
                                   .InlineEnum(CarFeature.White, "de", "Weiß")
                                   .Format("{0}");

                ILine message = LineRoot.Global.Assembly("docs").Type("MyClass").Key("Msg")
                                .Format("Your car has following features: {0}")
                                .de("Ihr Auto hat folgende Eigenschaften: {0}");

                CarFeature features = CarFeature.Petrol | CarFeature.Red | CarFeature.TwoDoors;

                // Inlined enum strings don't work as Enum (unless tool is used)
                Console.WriteLine(message.Value(features).Culture("de"));
                // But works when ILine reference is used.
                Console.WriteLine(message.Value(carFeature.Value(features)).Culture("de"));
                #endregion Snippet_7m7
            }
            {
                ILine      carFeature = LineRoot.Global.Assembly("docs").Type <CarFeature>().InlineEnum <CarFeature>();
                CarFeature features   = CarFeature.Petrol | CarFeature.FiveDoors | CarFeature.Black;
                Console.WriteLine(carFeature.Formulate($"{features:g}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:G}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:f}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:F}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:d}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:D}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:x}").Culture("fi"));
                Console.WriteLine(carFeature.Formulate($"{features:X}").Culture("fi"));
            }

            // 8. Values
            {
                #region Snippet_8a
                ILine      line   = LineRoot.Global.Key("Error").Format("ErrorCode={0}").Value(0x100);
                LineString result = line.ResolveString();
                #endregion Snippet_8a
            }
            {
                #region Snippet_8b
                #endregion Snippet_8b
            }
            {
                #region Snippet_8c
                #endregion Snippet_8c
            }
            {
                #region Snippet_8d
                #endregion Snippet_8d
            }
            {
                #region Snippet_8e
                #endregion Snippet_8e
            }
            {
                #region Snippet_8f
                #endregion Snippet_8f
            }
            {
                #region Snippet_8g
                #endregion Snippet_8g
            }
            {
                #region Snippet_8h
                #endregion Snippet_8h
            }

            // 10. Resources
            {
                #region Snippet_10a
                ILine             line   = LineRoot.Global.Key("Error").Resource(new byte[] { 1, 2, 3 });
                LineResourceBytes result = line.ResolveBytes();
                #endregion Snippet_10a
            }
            {
                #region Snippet_10b
                ILine line = LineRoot.Global.Key("Error").Resource(new byte[] { 1, 2, 3 });
                using (LineResourceStream result = line.ResolveStream())
                {
                }
                #endregion Snippet_10b
            }
            {
                #region Snippet_10c
                #endregion Snippet_10c
            }
            {
                #region Snippet_10d
                #endregion Snippet_10d
            }
            {
                #region Snippet_10e
                #endregion Snippet_10e
            }
            {
                #region Snippet_10f
                #endregion Snippet_10f
            }
            {
                #region Snippet_10g
                #endregion Snippet_10g
            }
            {
                #region Snippet_10h
                #endregion Snippet_10h
            }
        }
Пример #20
0
 public LoadedBasicAsset(string path, IBasicAsset asset)
 {
     Path   = path;
     Asset  = asset;
     Source = null;
 }
Пример #21
0
 public static AssetLoadTask StartReloadSource(IAssetSource source)
 {
     return(BuildLoadAllTask(false, source));
 }
Пример #22
0
 /// <summary>
 /// Change type
 /// </summary>
 /// <param name="source"></param>
 /// <param name="changeType"></param>
 public AssetSourceChangedEvent(IAssetSource source, WatcherChangeTypes changeType)
 {
     Source     = source;
     ChangeType = changeType;
 }
 internal void InitializeAssetSource(IAssetSource assetSource)
 {
     Contract.ThrowIfFalse(_solutionAssetSource == null);
     _solutionAssetSource = assetSource;
 }
 /// <summary>
 /// Add <paramref name="assetSource"/> to sources.
 /// </summary>
 /// <param name="assetBuilder"></param>
 /// <param name="assetSource"></param>
 public static IAssetBuilder AddSource(this IAssetBuilder assetBuilder, IAssetSource assetSource)
 {
     assetBuilder.Sources.Add(assetSource);
     return(assetBuilder);
 }
Пример #25
0
 public static IEnumerable <TAsset> Find <TAsset>(IAssetSource filter = null) where TAsset : class, IBasicAsset
 {
     return(Find <TAsset>("", filter));
 }
Пример #26
0
        public static void Main(string[] args)
        {
            {
                #region Snippet_0a
                ILineFileFormat format = LineReaderMap.Default["ini"];
                #endregion Snippet_0a
            }
            {
                #region Snippet_0b
                ILineFileFormat format = IniLinesReader.Default;
                #endregion Snippet_0b
                ILineFileFormat format2a = LineReaderMap.Default["json"];
                ILineFileFormat format2b = JsonLinesReader.Default;
                ILineFileFormat format3a = LineReaderMap.Default["xml"];
                ILineFileFormat format3b = XmlLinesReader.Default;
                ILineFileFormat format4a = LineReaderMap.Default["resx"];
                ILineFileFormat format4b = ResxLinesReader.Default;
                ILineFileFormat format5a = LineReaderMap.Default["resources"];
                ILineFileFormat format5b = ResourcesLineReader.Default;
            }

            {
                #region Snippet_1a
                IEnumerable <ILine> key_lines = LineReaderMap.Default.ReadLines(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_1a
            }
            {
                #region Snippet_1b
                IEnumerable <KeyValuePair <string, IString> > string_lines = LineReaderMap.Default.ReadStringLines(
                    filename: "localization.ini",
                    lineFormat: LineFormat.Parameters,
                    throwIfNotFound: true);
                #endregion Snippet_1b
            }
            {
                #region Snippet_1c
                ILineTree tree = LineReaderMap.Default.ReadLineTree(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_1c
            }

            {
                #region Snippet_2a
                IEnumerable <ILine> key_lines_reader =
                    LineReaderMap.Default.FileReader(
                        filename: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_2a
            }
            {
                #region Snippet_2b
                IEnumerable <KeyValuePair <string, IString> > string_lines_reader =
                    LineReaderMap.Default.FileReaderAsStringLines(
                        filename: "localization.ini",
                        lineFormat: LineFormat.Parameters,
                        throwIfNotFound: true);
                #endregion Snippet_2b
                var lines = string_lines_reader.ToArray();
            }
            {
                #region Snippet_2c
                IEnumerable <ILineTree> tree_reader =
                    LineReaderMap.Default.FileReaderAsLineTree(
                        filename: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_2c
                var lines = tree_reader.ToArray();
            }

            {
                #region Snippet_3a
                Assembly            asm = typeof(LocalizationReader_Examples).Assembly;
                IEnumerable <ILine> key_lines_reader =
                    LineReaderMap.Default.EmbeddedReader(
                        assembly: asm,
                        resourceName: "docs.localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_3a
                var lines = key_lines_reader.ToArray();
            }
            {
                Assembly asm = typeof(LocalizationReader_Examples).Assembly;
                #region Snippet_3b
                IEnumerable <KeyValuePair <string, IString> > string_lines_reader =
                    LineReaderMap.Default.EmbeddedReaderAsStringLines(
                        assembly: asm,
                        resourceName: "docs.localization.ini",
                        lineFormat: LineFormat.Parameters,
                        throwIfNotFound: true);
                #endregion Snippet_3b
                var lines = string_lines_reader.ToArray();
            }
            {
                Assembly asm = typeof(LocalizationReader_Examples).Assembly;
                #region Snippet_3c
                IEnumerable <ILineTree> tree_reader =
                    LineReaderMap.Default.EmbeddedReaderAsLineTree(
                        assembly: asm,
                        resourceName: "docs.localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_3c
                var lines = tree_reader.ToArray();
            }

            {
                #region Snippet_4a
                IFileProvider       fileProvider     = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IEnumerable <ILine> key_lines_reader =
                    LineReaderMap.Default.FileProviderReader(
                        fileProvider: fileProvider,
                        filepath: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_4a
                var lines = key_lines_reader.ToArray();
            }
            {
                #region Snippet_4b
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IEnumerable <KeyValuePair <string, IString> > string_lines_reader =
                    LineReaderMap.Default.FileProviderReaderAsStringLines(
                        fileProvider: fileProvider,
                        filepath: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_4b
                var lines = string_lines_reader.ToArray();
            }
            {
                #region Snippet_4c
                IFileProvider           fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IEnumerable <ILineTree> tree_reader  =
                    LineReaderMap.Default.FileProviderReaderAsLineTree(
                        fileProvider: fileProvider,
                        filepath: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_4c
                var lines = tree_reader.ToArray();
            }

            {
                #region Snippet_5a
                using (Stream s = new FileStream("localization.ini", FileMode.Open, FileAccess.Read))
                {
                    IEnumerable <ILine> key_lines = IniLinesReader.Default.ReadLines(s);
                }
                #endregion Snippet_5a
            }
            {
                #region Snippet_5b
                using (Stream s = new FileStream("localization.ini", FileMode.Open, FileAccess.Read))
                {
                    IEnumerable <KeyValuePair <string, IString> > string_lines = IniLinesReader.Default.ReadStringLines(
                        stream: s,
                        lineFormat: LineFormat.Parameters);
                }
                #endregion Snippet_5b
            }
            {
                #region Snippet_5c
                using (Stream s = new FileStream("localization.ini", FileMode.Open, FileAccess.Read))
                {
                    ILineTree tree = IniLinesReader.Default.ReadLineTree(s);
                }
                #endregion Snippet_5c
            }


            {
                #region Snippet_6a
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                using (TextReader tr = new StringReader(text))
                {
                    IEnumerable <ILine> key_lines = IniLinesReader.Default.ReadLines(tr);
                }
                #endregion Snippet_6a
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_6b
                using (TextReader tr = new StringReader(text))
                {
                    IEnumerable <KeyValuePair <string, IString> > string_lines = IniLinesReader.Default.ReadStringLines(
                        srcText: tr,
                        lineFormat: LineFormat.Parameters);
                }
                #endregion Snippet_6b
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_6c
                using (TextReader tr = new StringReader(text))
                {
                    ILineTree tree = IniLinesReader.Default.ReadLineTree(tr);
                }
                #endregion Snippet_6c
            }

            {
                #region Snippet_7a
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                IEnumerable <ILine> key_lines =
                    IniLinesReader.Default.ReadString(
                        srcText: text);
                #endregion Snippet_7a
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_7b
                IEnumerable <KeyValuePair <string, IString> > string_lines =
                    IniLinesReader.Default.ReadStringAsStringLines(
                        srcText: text,
                        lineFormat: LineFormat.Parameters);
                #endregion Snippet_7b
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_7c
                ILineTree tree =
                    IniLinesReader.Default.ReadStringAsLineTree(
                        srcText: text);
                #endregion Snippet_7c
            }

            {
                #region Snippet_10a
                IAsset asset = IniLinesReader.Default.FileAsset(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10a
            }
            {
                #region Snippet_10b
                Assembly asm   = typeof(LocalizationReader_Examples).Assembly;
                IAsset   asset = IniLinesReader.Default.EmbeddedAsset(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10b
            }
            {
                #region Snippet_10c
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IAsset        asset        = IniLinesReader.Default.FileProviderAsset(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10c
            }
            {
                Assembly      asm          = typeof(LocalizationReader_Examples).Assembly;
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                #region Snippet_10a2
                IAsset asset = LineReaderMap.Default.FileAsset(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10a2
                #region Snippet_10b2
                asset = LineReaderMap.Default.EmbeddedAsset(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10b2
                #region Snippet_10c2
                asset = LineReaderMap.Default.FileProviderAsset(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10c2
            }

            {
                #region Snippet_11a
                IAssetSource assetSource = IniLinesReader.Default.FileAssetSource(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                IAssetBuilder assetBuilder = new AssetBuilder().AddSource(assetSource);
                IAsset        asset        = assetBuilder.Build();
                #endregion Snippet_11a
            }
            {
                #region Snippet_11b
                Assembly     asm         = typeof(LocalizationReader_Examples).Assembly;
                IAssetSource assetSource = IniLinesReader.Default.EmbeddedAssetSource(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11b
            }
            {
                #region Snippet_11c
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IAssetSource  assetSource  = IniLinesReader.Default.FileProviderAssetSource(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11c
            }
            {
                #region Snippet_11a2
                IAssetSource assetSource = LineReaderMap.Default.FileAssetSource(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11a2
            }
            {
                Assembly asm = typeof(LocalizationReader_Examples).Assembly;
                #region Snippet_11b2
                IAssetSource assetSource = LineReaderMap.Default.EmbeddedAssetSource(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11b2
            }
            {
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                #region Snippet_11c2
                IAssetSource assetSource = LineReaderMap.Default.FileProviderAssetSource(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11c2
            }

            {
                #region Snippet_7
                #endregion Snippet_7
            }
            {
                #region Snippet_8
                #endregion Snippet_8
            }
            {
                #region Snippet_9
                #endregion Snippet_9
            }
            {
                #region Snippet_12
                #endregion Snippet_12
            }
            {
                #region Snippet_13
                #endregion Snippet_13
            }
            {
                #region Snippet_14
                #endregion Snippet_14
            }
            {
                #region Snippet_15
                #endregion Snippet_15
            }
            {
                #region Snippet_16
                #endregion Snippet_16
            }
            {
                #region Snippet_17
                #endregion Snippet_17
            }
            {
                #region Snippet_18
                #endregion Snippet_18
            }
            {
                #region Snippet_30a
                // Create writer
                ILineReader format = new ExtFileFormatReader();

                // Clone formats
                LineFileFormatMap formats = LineReaderMap.Default.Clone();
                // Add to clone
                formats.Add(format);

                // Or if in deploying application project, format can be added to the global singleton
                (LineReaderMap.Default as IDictionary <string, ILineFileFormat>).Add(format);
                #endregion Snippet_30a
            }
        }
Пример #27
0
 public void Inject(IStoryContext context)
 {
     this.assetSource = context.AssetSource;
 }
Пример #28
0
 public static string GetAbsolutePath(this IAssetSource assetSource, string fileName)
 {
     return(assetSource.AssetFilenames.First(filePath => filePath.EndsWith(fileName)));
 }
Пример #29
0
 public static bool Exists(this IAssetSource assetSource, string filePath)
 {
     return(assetSource.AssetFilenames.Contains(filePath));
 }
Пример #30
0
 public ReloadSourceState(Game game, Func <State> nextState, IAssetSource source) : base(game, nextState)
 {
     m_source = source;
 }