/// <summary>
        /// Constructor PropertiesViewModel
        /// </summary>
        /// <param name="projectManager"></param>
        /// <param name="loggerService"></param>
        /// <param name="meshTools"></param>
        public PropertiesViewModel(
            IProjectManager projectManager,
            ILoggerService loggerService,
            ISettingsManager settingsManager,
            MeshTools meshTools,
            IModTools modTools
            ) : base(ToolTitle)
        {
            _settingsManager = settingsManager;
            _projectManager  = projectManager;
            _loggerService   = loggerService;
            _meshTools       = meshTools;
            _modTools        = modTools;

            SetupToolDefaults();

            SetToNullAndResetVisibility();

            nAudioSimple = NAudioSimpleEngine.Instance;
            NAudioSimpleEngine.Instance.PropertyChanged += NAudioEngine_PropertyChanged;

            StopAudioCommand  = new RelayCommand(ExecuteStopPlaying, CanStopPlaying);
            PlayAudioCommand  = new RelayCommand(ExecuteStartPlaying, CanStartPlaying);
            PauseAudioCommand = new RelayCommand(ExecutePausePlaying, CanPausePlaying);
        }
        public ProjectExplorerViewModel(
            IProjectManager projectManager,
            ILoggerService loggerService,
            IWatcherService watcherService,
            IModTools modTools
            ) : base(ToolTitle)
        {
            _projectManager = projectManager;
            _loggerService  = loggerService;
            _watcherService = watcherService;
            _modTools       = modTools;

            SetupCommands();
            SetupToolDefaults();

            _watcherService.Files
            .Connect()
            .ObserveOn(RxApp.MainThreadScheduler)
            .BindToObservableList(out _observableList)
            .Subscribe(OnNext);

            ExpandAll        = ReactiveCommand.Create(() => { });
            CollapseAll      = ReactiveCommand.Create(() => { });
            CollapseChildren = ReactiveCommand.Create(() => { });
            ExpandChildren   = ReactiveCommand.Create(() => { });

            this.WhenAnyValue(x => x.SelectedItem).Subscribe(model =>
            {
                if (model != null)
                {
                    Locator.Current.GetService <AppViewModel>().FileSelectedCommand.SafeExecute(model);
                }
            });
        }
예제 #3
0
        public RibbonViewModel(
            ISettingsManager settingsManager,
            IProgressService <double> progressService,
            IArchiveManager archiveManager,
            IProjectManager projectManager,
            ILoggerService loggerService,
            IModTools modTools,
            AppViewModel appViewModel
            )
        {
            _mainViewModel = appViewModel;

            _archiveManager  = archiveManager;
            _progressService = progressService;
            _projectManager  = projectManager;
            _modTools        = modTools;
            _loggerService   = loggerService;
            _settingsManager = settingsManager;

            //ViewSelectedCommand = new DelegateCommand<object>(ExecuteViewSelected, CanViewSelected);
            //AssetBrowserAddCommand = new RelayCommand(ExecuteAssetBrowserAdd, CanAssetBrowserAdd);
            //AssetBrowserOpenFileLocation = new RelayCommand(ExecuteAssetBrowserOpenFileLocation, CanAssetBrowserOpenFileLocation);

            OpenProjectCommand = ReactiveCommand.Create <string>(s => _mainViewModel.OpenProjectCommand.Execute(s).Subscribe());
            //NewProjectCommand = ReactiveCommand.Create(() => _mainViewModel.NewProjectCommand.Execute().Subscribe());
            PackProjectCommand        = ReactiveCommand.Create(() => _mainViewModel.PackModCommand.SafeExecute());
            PackInstallProjectCommand = ReactiveCommand.Create(() => _mainViewModel.PackInstallModCommand.SafeExecute());

            NewFileCommand  = ReactiveCommand.Create(() => _mainViewModel.NewFileCommand.SafeExecute(null));
            SaveFileCommand = ReactiveCommand.Create(() => _mainViewModel.SaveFileCommand.SafeExecute());
            SaveAsCommand   = ReactiveCommand.Create(() => _mainViewModel.SaveAsCommand.SafeExecute());
            SaveAllCommand  = ReactiveCommand.Create(() => _mainViewModel.SaveAllCommand.SafeExecute());

            ViewProjectExplorerCommand = ReactiveCommand.Create(() => _mainViewModel.ShowProjectExplorerCommand.SafeExecute());
            ViewAssetBrowserCommand    = ReactiveCommand.Create(() => _mainViewModel.ShowAssetsCommand.SafeExecute());
            ViewPropertiesCommand      = ReactiveCommand.Create(() => _mainViewModel.ShowPropertiesCommand.SafeExecute());
            ViewLogCommand             = ReactiveCommand.Create(() => _mainViewModel.ShowLogCommand.SafeExecute());
            //ViewCodeEditorCommand = ReactiveCommand.Create(() => _mainViewModel.ShowCodeEditorCommand.SafeExecute());
            ShowImportExportToolCommand = ReactiveCommand.Create(() => _mainViewModel.ShowImportExportToolCommand.SafeExecute());

            ShowPluginToolCommand = ReactiveCommand.Create(() => _mainViewModel.ShowPluginCommand.SafeExecute());

            ShowBugReportCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var result = await Interactions.ShowBugReport.Handle(Unit.Default);
            });
            ShowFeedbackCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var result = await Interactions.ShowFeedback.Handle(Unit.Default);
            });

            OpenMaterialRepositoryCommand = ReactiveCommand.Create(() =>
            {
                Commonfunctions.ShowFolderInExplorer(_settingsManager.MaterialRepositoryPath);
            });

            UnbundleGameCommand = ReactiveCommand.CreateFromTask(UnbundleGame);
        }
예제 #4
0
        public MaterialsRepositoryDialog()
        {
            InitializeComponent();

            _settingsManager       = Locator.Current.GetService <ISettingsManager>();
            _gameControllerFactory = Locator.Current.GetService <IGameControllerFactory>();
            _modTools      = Locator.Current.GetService <IModTools>();
            _progress      = Locator.Current.GetService <IProgressService <double> >();
            _loggerService = Locator.Current.GetService <ILoggerService>();

            _archivesFolderPath = Path.Combine(_settingsManager.GetRED4GameRootDir(), "archive", "pc", "content");
            MaterialsDepotPath  = _settingsManager.MaterialRepositoryPath;
            MaterialsTextBox.SetCurrentValue(System.Windows.Controls.TextBox.TextProperty, _settingsManager.MaterialRepositoryPath);
        }
예제 #5
0
 public RED4Controller(
     ILoggerService loggerService,
     INotificationService notificationService,
     IProjectManager projectManager,
     ISettingsManager settingsManager,
     IHashService hashService,
     IModTools modTools,
     IArchiveManager gameArchiveManager
     )
 {
     _notificationService = notificationService;
     _loggerService       = loggerService;
     _projectManager      = projectManager;
     _settingsManager     = settingsManager;
     _hashService         = hashService;
     _modTools            = modTools;
     _archiveManager      = gameArchiveManager;
 }
        public ProjectExplorerViewModel(
            IProjectManager projectManager,
            ILoggerService loggerService,
            IWatcherService watcherService,
            IProgressService <double> progressService,
            IModTools modTools,
            IGameControllerFactory gameController,
            IPluginService pluginService,
            ISettingsManager settingsManager
            ) : base(ToolTitle)
        {
            _projectManager  = projectManager;
            _loggerService   = loggerService;
            _watcherService  = watcherService;
            _modTools        = modTools;
            _progressService = progressService;
            _gameController  = gameController;
            _pluginService   = pluginService;
            _settingsManager = settingsManager;

            SideInDockedMode = DockSide.Left;

            SetupCommands();
            SetupToolDefaults();

            _watcherService.Files
            .Connect()
            .ObserveOn(RxApp.MainThreadScheduler)
            .BindToObservableList(out _observableList)
            .Subscribe(OnNext);

            ExpandAll        = ReactiveCommand.Create(() => { });
            CollapseAll      = ReactiveCommand.Create(() => { });
            CollapseChildren = ReactiveCommand.Create(() => { });
            ExpandChildren   = ReactiveCommand.Create(() => { });

            this.WhenAnyValue(x => x.SelectedItem).Subscribe(model =>
            {
                if (model != null)
                {
                    Locator.Current.GetService <AppViewModel>().FileSelectedCommand.SafeExecute(model);
                }
            });
        }
예제 #7
0
        /// <summary>
        /// Constructor PropertiesViewModel
        /// </summary>
        /// <param name="projectManager"></param>
        /// <param name="loggerService"></param>
        /// <param name="meshTools"></param>
        public PropertiesViewModel(
            IProjectManager projectManager,
            ILoggerService loggerService,
            ISettingsManager settingsManager,
            MeshTools meshTools,
            IModTools modTools
            ) : base(ToolTitle)
        {
            _settingsManager = settingsManager;
            _projectManager  = projectManager;
            _loggerService   = loggerService;
            _meshTools       = meshTools;
            _modTools        = modTools;

            SetupToolDefaults();
            SideInDockedMode = DockSide.Left;

            SetToNullAndResetVisibility();

            PreviewAudioCommand = ReactiveCommand.Create <string, string>(str => str);
        }
예제 #8
0
        public ConsoleFunctions(
            ILoggerService loggerService,
            IHashService hashService,
            IProgressService <double> progress,
            Red4ParserService wolvenkitFileService,
            IModTools modTools,
            IArchiveManager archiveManager,

            IOptions <CommonImportArgs> commonImportArgs,
            IOptions <XbmImportArgs> xbmImportArgs,
            IOptions <GltfImportArgs> gltfImportArgs,
            IOptions <XbmExportArgs> xbmExportArgs,
            IOptions <MeshExportArgs> meshExportArgs,
            IOptions <MorphTargetExportArgs> morphTargetExportArgs,
            IOptions <MlmaskExportArgs> mlmaskExportArgs,
            IOptions <WemExportArgs> wemExportArgs,
            IOptions <AnimationExportArgs> animationExportArgs
            )
        {
            _loggerService   = loggerService;
            _modTools        = modTools;
            _progressService = progress;
            _hashService     = hashService;
            _archiveManager  = archiveManager;

            _commonImportArgs      = commonImportArgs;
            _xbmImportArgs         = xbmImportArgs;
            _gltfImportArgs        = gltfImportArgs;
            _wolvenkitFileService  = wolvenkitFileService;
            _xbmExportArgs         = xbmExportArgs;
            _meshExportArgs        = meshExportArgs;
            _morphTargetExportArgs = morphTargetExportArgs;
            _mlmaskExportArgs      = mlmaskExportArgs;
            _wemExportArgs         = wemExportArgs;
            _animationExportArgs   = animationExportArgs;
        }
예제 #9
0
        /// <summary>
        /// Import Export ViewModel Constructor
        /// </summary>
        /// <param name="projectManager"></param>
        /// <param name="loggerService"></param>
        /// <param name="messageService"></param>
        /// <param name="watcherService"></param>
        /// <param name="gameController"></param>
        /// <param name="modTools"></param>
        public ImportExportViewModel(
            IProjectManager projectManager,
            ILoggerService loggerService,
            IProgressService <double> progressService,
            IWatcherService watcherService,
            INotificationService notificationService,
            IGameControllerFactory gameController,
            ISettingsManager settingsManager,
            IModTools modTools,
            MeshTools meshTools,
            IArchiveManager archiveManager
            ) : base(ToolTitle)
        {
            _projectManager      = projectManager;
            _loggerService       = loggerService;
            _progressService     = progressService;
            _watcherService      = watcherService;
            _modTools            = modTools;
            _gameController      = gameController;
            _notificationService = notificationService;
            _settingsManager     = settingsManager;
            _meshTools           = meshTools;
            _archiveManager      = archiveManager;

            SetupToolDefaults();
            SideInDockedMode = DockSide.Tabbed;

            ProcessAllCommand              = ReactiveCommand.CreateFromTask(ExecuteProcessAll);
            ProcessSelectedCommand         = ReactiveCommand.CreateFromTask(ExecuteProcessSelected);
            CopyArgumentsTemplateToCommand = new DelegateCommand <string>(ExecuteCopyArgumentsTemplateTo, CanCopyArgumentsTemplateTo);
            SetCollectionCommand           = new DelegateCommand <string>(ExecuteSetCollection, CanSetCollection);
            ConfirmCollectionCommand       = new DelegateCommand <string>(ExecuteConfirmCollection, CanConfirmCollection);

            AddItemsCommand    = new DelegateCommand <ObservableCollection <object> >(ExecuteAddItems, CanAddItems);
            RemoveItemsCommand = new DelegateCommand <ObservableCollection <object> >(ExecuteRemoveItems, CanRemoveItems);

            _watcherService.Files
            .Connect()
            .Filter(_ => _.IsImportable)
            .Filter(_ => _.FullName.Contains(_projectManager.ActiveProject.RawDirectory))
            .Filter(x => CheckForMultiImport(x))
            .Transform(_ => new ImportableItemViewModel(_))
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _importableItems)
            .Subscribe();

            _watcherService.Files
            .Connect()
            .Filter(_ => _.IsExportable)
            .Filter(_ => _.FullName.Contains(_projectManager.ActiveProject.ModDirectory))
            .Transform(_ => new ExportableItemViewModel(_))
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _exportableItems)
            .Subscribe();

            _watcherService.Files
            .Connect()
            .Filter(_ => _.IsConvertable)
            .Filter(_ => _.FullName.Contains(_projectManager.ActiveProject.RawDirectory))
            .Transform(_ => new ConvertableItemViewModel(_))
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _convertableItems)
            .Subscribe();

            ////=> IsImportsSelected ? SelectedImport : IsExportsSelected ? SelectedExport : SelectedConvert;
            //this.WhenAnyValue(x => x.IsImportsSelected, y => y.IsExportsSelected, z => z.IsConvertsSelected)
            //    .Subscribe(b =>
            //{
            //    SelectedObject = IsImportsSelected ? SelectedImport : IsExportsSelected ? SelectedExport : SelectedConvert;
            //});


            this.WhenAnyValue(x => x.SelectedExport, y => y.SelectedImport, z => z.SelectedConvert)
            .Subscribe(b =>
            {
                var x = b.Item1;
                var y = b.Item2;
                var z = b.Item3;

                SelectedObject = IsImportsSelected ? SelectedImport : IsExportsSelected ? SelectedExport : SelectedConvert;
            });
        }