private void OpenMod_Click(object sender, RoutedEventArgs e) { OpenFileDialog dialog = new OpenFileDialog { Filter = _modFileFilter }; dialog.OpenModsRootFolder(); bool?openResult = dialog.ShowDialog(); if (!openResult.HasValue || !openResult.Value) { return; } List <UserAsset> userAssets = ModFileUtils.GetAssetsFromModFilePath(dialog.FileName); if (userAssets.Count == 0) { return; } foreach (AssetTabControl assetTabControl in App.Instance.MainWindow !.AssetTabControls) { foreach (AssetRowControl rowHandler in assetTabControl.RowControls) { AbstractAsset asset = rowHandler.Asset; UserAsset? userAsset = userAssets.Find(a => a.AssetName == asset.AssetName && a.AssetType == asset.AssetType); if (userAsset != null) { asset.ImportValuesFromUserAsset(userAsset); rowHandler.UpdateGui(); } } } }
private void Window_Loaded(object sender, RoutedEventArgs e) { AudioAudioAssetTabControl = new AssetTabControl(BinaryFileType.Audio, AssetType.Audio, "Audio files (*.wav)|*.wav", "Audio"); CoreShadersAssetTabControl = new AssetTabControl(BinaryFileType.Core, AssetType.Shader, "Shader files (*.glsl)|*.glsl", "Shaders"); DdModelBindingsAssetTabControl = new AssetTabControl(BinaryFileType.Dd, AssetType.ModelBinding, "Model binding files (*.txt)|*.txt", "Model Bindings"); DdModelsAssetTabControl = new AssetTabControl(BinaryFileType.Dd, AssetType.Model, "Model files (*.obj)|*.obj", "Models"); DdShadersAssetTabControl = new AssetTabControl(BinaryFileType.Dd, AssetType.Shader, "Shader files (*.glsl)|*.glsl", "Shaders"); DdTexturesAssetTabControl = new AssetTabControl(BinaryFileType.Dd, AssetType.Texture, "Texture files (*.png)|*.png", "Textures"); ParticleParticlesAssetTabControl = new AssetTabControl(BinaryFileType.Particle, AssetType.Particle, "Particle files (*.bin)|*.bin", "Particles"); AssetTabControls = new List <AssetTabControl> { AudioAudioAssetTabControl, CoreShadersAssetTabControl, DdModelBindingsAssetTabControl, DdModelsAssetTabControl, DdShadersAssetTabControl, DdTexturesAssetTabControl, ParticleParticlesAssetTabControl }; UpdateTextBoxSizes(); TabControl.Items.Add(new TabItem { Header = "audio/Audio", Content = AudioAudioAssetTabControl }); TabControl.Items.Add(new TabItem { Header = "core/Shaders", Content = CoreShadersAssetTabControl }); TabControl.Items.Add(new TabItem { Header = "dd/Model Bindings", Content = DdModelBindingsAssetTabControl }); TabControl.Items.Add(new TabItem { Header = "dd/Models", Content = DdModelsAssetTabControl }); TabControl.Items.Add(new TabItem { Header = "dd/Shaders", Content = DdShadersAssetTabControl }); TabControl.Items.Add(new TabItem { Header = "dd/Textures", Content = DdTexturesAssetTabControl }); TabControl.Items.Add(new TabItem { Header = "particle/Particles", Content = ParticleParticlesAssetTabControl }); TabControl.SelectedIndex = Math.Clamp(UserHandler.Instance.Cache.ActiveTabIndex, 0, AssetTabControls.Count - 1); if (NetworkHandler.Instance.Tool != null && App.LocalVersion < Version.Parse(NetworkHandler.Instance.Tool.VersionNumber)) { UpdateRecommendedWindow updateRecommendedWindow = new UpdateRecommendedWindow(NetworkHandler.Instance.Tool.VersionNumber, App.LocalVersion.ToString(), App.ApplicationName, App.ApplicationDisplayName); updateRecommendedWindow.ShowDialog(); } // After the window has loaded, some user controls still need to finish loading, so set a timer to make sure everything has loaded. // TODO: Find a better way to do this. DispatcherTimer timer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 0, 0, 10) }; timer.Tick += (sender, e) => { if (File.Exists(UserHandler.Instance.Cache.OpenedModFilePath)) { List <UserAsset> assets = ModFileUtils.GetAssetsFromModFilePath(UserHandler.Instance.Cache.OpenedModFilePath); if (assets.Count > 0) { foreach (AssetTabControl tabHandler in AssetTabControls) { tabHandler.UpdateAssetTabControls(assets); } } } timer.Stop(); }; timer.Start(); }