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()); }