public bool CheckResources(GraphicsDevice device, IProgressReceiver progressReceiver, McResourcePack.McResourcePackPreloadCallback preloadCallback) { LoadHWID(); PreloadCallback = preloadCallback; Log.Info($"Loading registries..."); progressReceiver?.UpdateProgress(0, "Loading registries..."); Registries = JsonConvert.DeserializeObject <Registries>(ReadStringResource("Alex.Resources.registries.json")); progressReceiver?.UpdateProgress(100, "Loading registries..."); string defaultResources; string defaultBedrock; if (!CheckJavaAssets(progressReceiver, out defaultResources)) { return(false); } if (!CheckBedrockAssets(progressReceiver, out defaultBedrock)) { return(false); } progressReceiver?.UpdateProgress(0, "Loading vanilla resources..."); var vanilla = LoadResourcePack(progressReceiver, new RealFileSystem(defaultResources), preloadCallback); vanilla.Manifest.Name = "Vanilla"; ActiveResourcePacks.AddFirst(vanilla); Alex.AudioEngine.Initialize(vanilla); // Log.Info($"Loading bedrock resources..."); progressReceiver?.UpdateProgress(0, "Loading bedrock resources..."); using (RealFileSystem fileSystem = new RealFileSystem(defaultBedrock)) { BedrockResourcePack = new BedrockResourcePack( fileSystem, (percentage, file) => { progressReceiver?.UpdateProgress(percentage, null, file); }); int modelCount = EntityFactory.LoadModels(BedrockResourcePack, device, true, progressReceiver); Log.Info($"Imported {modelCount} entity models..."); } //Log.Info($"Loading known entity data..."); EntityFactory.Load(this, progressReceiver); Storage.TryGetDirectory(Path.Combine("assets", "resourcepacks"), out DirectoryInfo root); ResourcePackDirectory = root; LoadRegistries(progressReceiver); LoadResourcePacks( device, progressReceiver, Options.AlexOptions.ResourceOptions.LoadedResourcesPacks.Value); ItemFactory.Init(RegistryManager, this, ResourcePack, progressReceiver); BlockEntityFactory.LoadResources(device, ResourcePack); if (Storage.TryGetDirectory(Path.Combine("assets", "bedrockpacks"), out DirectoryInfo info)) { SkinPackDirectory = info; LoadBedrockPacks(progressReceiver, info); } else { if (Storage.TryCreateDirectory(Path.Combine("assets", "bedrockpacks"))) { if (Storage.TryGetDirectory(Path.Combine("assets", "bedrockpacks"), out var dirInfo)) { SkinPackDirectory = dirInfo; } } } BlockMapper.Init(progressReceiver); Options.AlexOptions.ResourceOptions.LoadedResourcesPacks.Bind(ResourcePacksChanged); _hasInit = true; return(true); }
public bool Asynchronous => true; //ActiveResourcePacks.All(x => x.Asynchronous); public bool CheckResources(GraphicsDevice device, IProgressReceiver progressReceiver, McResourcePack.McResourcePackPreloadCallback preloadCallback) { LoadHWID(); PreloadCallback = preloadCallback; Log.Info($"Loading registries..."); progressReceiver?.UpdateProgress(0, "Loading registries..."); Registries = JsonConvert.DeserializeObject <Registries>(ReadStringResource("Alex.Resources.registries.json")); progressReceiver?.UpdateProgress(100, "Loading registries..."); string defaultResources; string defaultBedrock; if (!CheckJavaAssets(progressReceiver, out defaultResources)) { return(false); } if (!CheckBedrockAssets(progressReceiver, out defaultBedrock)) { return(false); } progressReceiver?.UpdateProgress(0, "Loading vanilla resources..."); var vanilla = LoadResourcePack(progressReceiver, new DiskFileSystem(defaultResources), preloadCallback); if (vanilla.Info != null) { vanilla.Info.Name = "Vanilla"; } ActiveResourcePacks.AddFirst((McResourcePack)vanilla); Alex.AudioEngine.Initialize((McResourcePack)vanilla); // Log.Info($"Loading bedrock resources..."); progressReceiver?.UpdateProgress(0, "Loading bedrock resources..."); var vanillaBedrock = LoadResourcePack(progressReceiver, new DiskFileSystem(defaultBedrock)); ActiveBedrockResourcePacks.AddFirst((BedrockResourcePack)vanillaBedrock); //Log.Info($"Loading known entity data..."); Storage.TryGetDirectory(Path.Combine("assets", "resourcepacks"), out DirectoryInfo root); ResourcePackDirectory = root; LoadRegistries(progressReceiver); LoadResourcePacks( device, progressReceiver, Options.AlexOptions.ResourceOptions.LoadedResourcesPacks.Value); EntityFactory.Load(this, progressReceiver); ItemFactory.Init(RegistryManager, this, progressReceiver); BlockEntityFactory.LoadResources(device, this); if (Storage.TryGetDirectory(Path.Combine("assets", "bedrockpacks"), out DirectoryInfo info)) { SkinPackDirectory = info; LoadBedrockPacks(progressReceiver, info); } else { if (Storage.TryCreateDirectory(Path.Combine("assets", "bedrockpacks"))) { if (Storage.TryGetDirectory(Path.Combine("assets", "bedrockpacks"), out var dirInfo)) { SkinPackDirectory = dirInfo; } } } BlockMapper.Init(progressReceiver); Options.AlexOptions.ResourceOptions.LoadedResourcesPacks.Bind(ResourcePacksChanged); _hasInit = true; var data = ReadResource("Alex.Resources.nethergames.png"); NethergamesLogo = TextureUtils.BitmapToTexture2D(Alex.GraphicsDevice, Image.Load(data)); return(true); }