Esempio n. 1
0
        internal void PrepareAssets()
        {
            //Open the file.

            if (File != null)
            {
                fileHandle = File.Open();
            }

            //Create the asset repository

            var sources = new List <IContentSource>();

            if (File != null)
            {
                sources.Add(new TModContentSource(File));
            }

            var assetReaderCollection = new AssetReaderCollection();

            if (!Main.dedServ)
            {
                //TODO: Now, how do we unhardcode this?

                //Ambiguous
                assetReaderCollection.RegisterReader(new XnbReader(Main.instance.Services), ".xnb");
                //Textures
                assetReaderCollection.RegisterReader(new PngReader(Main.instance.Services.Get <IGraphicsDeviceService>().GraphicsDevice), ".png");
                assetReaderCollection.RegisterReader(new RawImgReader(Main.instance.Services.Get <IGraphicsDeviceService>().GraphicsDevice), ".rawimg");
                //Audio
                assetReaderCollection.RegisterReader(new WavReader(), ".wav");
                assetReaderCollection.RegisterReader(new MP3Reader(), ".mp3");
                assetReaderCollection.RegisterReader(new OggReader(), ".ogg");
            }

            var delayedLoadTypes = new List <Type> {
                typeof(Texture2D),
                typeof(DynamicSpriteFont),
                typeof(SpriteFont),
                typeof(Effect)
            };

            SetupAssetRepository(sources, assetReaderCollection, delayedLoadTypes);

            var asyncAssetLoader = new AsyncAssetLoader(assetReaderCollection, 20);

            foreach (var type in delayedLoadTypes)
            {
                asyncAssetLoader.RequireTypeCreationOnTransfer(type);
            }

            var assetLoader = new AssetLoader(assetReaderCollection);

            Assets = new ModAssetRepository(assetReaderCollection, assetLoader, asyncAssetLoader, sources.ToArray());
        }