public void LoadData(object param = null)
        {
            try
            {
                // Load data for each of the workspaces
                Settings.LoadData();
                Trovesaurus.LoadData();
                GetMoreMods.LoadData();
                MyMods.LoadData();
                ModderTools.LoadData();

                _dataLoaded = true;

                // Process saved Trove URI to handle case when Trove URI link clicked before application was fully loaded
                if (!string.IsNullOrEmpty(_savedTroveUri))
                {
                    ProcessTroveUri(_savedTroveUri);
                }

                // Process a URI from the command line args if there are any
                var args = ApplicationDetails.GetTroveUri();
                if (!string.IsNullOrEmpty(args))
                {
                    ProcessTroveUri(args);
                }
            }
            catch (Exception ex) { log.Error("Error loading main window data", ex); }
            finally { _dataLoaded = true; }
        }
 public void Closing(object param = null)
 {
     log.Info("Main window closing: stopping background timers and saving settings");
     Settings.Closing();
     MyMods.Closing();
     Trovesaurus.Closing();
 }
Ejemplo n.º 3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Program.MasterForm.Size = new System.Drawing.Size(577, 455);
            version_lbl.Text        = Config.version;
            int r = Config.LoadCfg();

            if (r == 3)     // Config error, user refused to regenerate config
            {
                Utility.ShowMsg("MCC Mod Manager cannot load because there are problems with the configuration file.", "Error");
                Environment.Exit(1);
            }
            Backups.LoadBackups();

            if (r == 2)     // User refused to stabilize the game
            {
                patchButton.Enabled        = false;
                delModpack.Enabled         = false;
                restoreSelectedBtn.Enabled = false;
                restoreAllBaksBtn.Enabled  = false;
                delSelectedBak.Enabled     = false;
                delAllBaksBtn.Enabled      = false;
                manualOverride.Enabled     = false;

                megaCaution.Visible = true;
                tt.SetToolTip(megaCaution, "MCC Mod Manager has detected an update and needs to stabilize the game. Please restart the app.");
            }
            else if (r == 1)        // User allowed the manager to stabilize the game
            {
                Modpacks.StabilizeGame();
                Backups.LoadBackups();
            }
            MyMods.LoadModpacks();
            LoadEventHandlers();
            PBar_init();
        }
Ejemplo n.º 4
0
 private void RemoveModPack(TroveModPackViewModel currentItem)
 {
     log.InfoFormat("Removing mod pack: {0}", currentItem.DataObject.Name);
     foreach (var mod in MyMods.Where(m => m.ModPack == currentItem))
     {
         mod.ModPack             = null;
         mod.DataObject.PackName = null;
     }
     ModPacks.Remove(currentItem);
 }
Ejemplo n.º 5
0
 private void txtRename_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.Enter)    // if enter key pressed
     {
         Path.Combine(Config.Modpack_dir, this.modpackName);
         File.Move(
             Path.Combine(Config.Modpack_dir, this.modpackName + ".zip"),
             Path.Combine(Config.Modpack_dir, txtRename.Text + ".zip")
             );
         MyMods.LoadModpacks();
         Close();
     }
 }
Ejemplo n.º 6
0
        public DesignTimeMyModsViewModel() : base()
        {
            TroveModPackViewModel pack = new TroveModPackViewModel(new TroveModPack {
                Name = "Design Time Pack", Author = "Dazo"
            });

            foreach (TroveMod mod in JsonConvert.DeserializeObject <List <TroveMod> >(Resources.DesignTimeTroveMods))
            {
                MyMods.Add(new TroveModViewModel(mod));
                pack.DataObject.Mods.Add(mod);
            }

            ModPacks.Add(pack);
        }
Ejemplo n.º 7
0
        private void SaveModPack(string modPackName)
        {
            bool newPack = false;

            if (string.IsNullOrEmpty(modPackName))
            {
                log.Warn("No mod pack name specified to save");
                return;
            }
            log.InfoFormat("Saving enabled standalone mods as mod pack {0}", modPackName);

            TroveModPackViewModel pack = ModPacks.FirstOrDefault(p => p.DataObject.Name == modPackName && p.DataObject.Source == TroveModPack.LocalSource);

            if (pack == null)
            {
                pack = new TroveModPackViewModel(new TroveModPack());
                pack.DataObject.Name = modPackName;
                newPack = true;
            }
            else
            {
                pack.DataObject.Mods.Clear();
            }

            foreach (var mod in MyMods.Where(m => m.DataObject.Enabled && m.ModPack == null))
            {
                if (string.IsNullOrEmpty(mod.DataObject.Id))
                {
                    log.WarnFormat("Only mods downloaded from Trovesaurus can be included in mod packs, skipping mod: {0}", mod.DisplayName);
                    continue;
                }
                mod.ModPack             = pack;
                mod.DataObject.PackName = modPackName;
                pack.DataObject.Mods.Add(mod.DataObject);
            }

            if (pack.DataObject.Mods.Count > 0)
            {
                if (newPack)
                {
                    ModPacks.Add(pack);
                }
                ModPacksView.MoveCurrentTo(pack);
            }
            else
            {
                log.ErrorFormat("No enabled standalone mods from Trovesaurus were added to mod pack {0}", modPackName);
            }
        }
Ejemplo n.º 8
0
        private void RemoveMod(dynamic mod)
        {
            try
            {
                // Use a dynamic ViewModel object to trigger status property notifications
                mod.RemoveMod();

                // Remove mod from MyMods collection as well
                MyMods.Remove(mod);
            }
            catch (Exception ex)
            {
                log.Error("Error removing selected mod", ex);
            }
        }
Ejemplo n.º 9
0
        public MyMods XmlReader()
        {
            //<XMLファイルから読み込む>
            //XmlSerializerオブジェクトの作成
            XmlSerializer serializer = new XmlSerializer(typeof(MyMods));
            //ファイルを開く
            StreamReader sr = new StreamReader(
                XmlPath, new System.Text.UTF8Encoding(false));
            //XMLファイルから読み込み、逆シリアル化する
            MyMods myMods = (MyMods)serializer.Deserialize(sr);

            //閉じる
            sr.Close();

            return(myMods);
        }
Ejemplo n.º 10
0
        private void AddMod(string filePath)
        {
            try
            {
                // Use a dynamic ViewModel object to trigger status property notifications
                dynamic modVM = new TroveModViewModel(filePath);
                MyMods.Add(modVM);

                modVM.AddMod();
                modVM.InstallMod();
            }
            catch (Exception ex)
            {
                log.Error("Error adding mod: " + filePath, ex);
            }
        }
Ejemplo n.º 11
0
 private void UninstallAllMods(object param = null)
 {
     try
     {
         log.Info("Uninstalling all mods");
         foreach (dynamic mod in MyMods.Where(m => m.DataObject.Enabled))
         {
             mod.Enabled = false;
         }
         TroveMod.RemoveModFolders();
     }
     catch (Exception ex)
     {
         log.Error("Error uninstalling all mods", ex);
     }
 }
Ejemplo n.º 12
0
 private void LoadModPack(TroveModPackViewModel currentItem)
 {
     log.InfoFormat("Loading mod pack: {0}", currentItem.DataObject.Name);
     foreach (var mod in currentItem.DataObject.Mods)
     {
         var modVm = MyMods.FirstOrDefault(m => m.DataObject.Id == mod.Id);
         if (modVm == null)
         {
             modVm = MainWindowViewModel.Instance.GetMoreMods.TrovesaurusMods.FirstOrDefault(m => m.DataObject.Id == mod.Id);
             if (modVm == null)
             {
                 modVm = new TroveModViewModel(mod);
             }
             modVm.InstallCommand.Execute(null);
         }
         modVm.ModPack             = currentItem;
         modVm.DataObject.PackName = currentItem.DisplayName;
     }
 }
        public void ProcessTroveUri(string troveUri)
        {
            if (Application.Current.Dispatcher.CheckAccess())
            {
                ViewCommandManager.InvokeLoaded("RestoreWindow");
                if (string.IsNullOrEmpty(troveUri))
                {
                    return;
                }

                if (_dataLoaded)
                {
                    log.InfoFormat("Processing Trove URI: {0}", troveUri);
                    var args = ApplicationDetails.GetApplicationArguments(troveUri);
                    if (args != null)
                    {
                        SetActiveWorkspace(MyMods);
                        if (args.LinkType == ApplicationDetails.AppArgs.LinkTypes.Mod)
                        {
                            TroveUriInstallMod(args.ModId, args.FileId);
                        }
                        if (args.LinkType == ApplicationDetails.AppArgs.LinkTypes.LocalMod)
                        {
                            TroveUriInstallMod(args.FileName);
                        }
                        if (args.LinkType == ApplicationDetails.AppArgs.LinkTypes.ModPack)
                        {
                            MyMods.TroveUriInstallModPack(args.Uri);
                        }
                    }
                }
                else
                {
                    _savedTroveUri = troveUri;
                }
            }
            else
            {
                Application.Current.Dispatcher.Invoke(() => ProcessTroveUri(troveUri));
            }
        }
Ejemplo n.º 14
0
        public void XmlWriter(MyMods myMods)
        {
            //<XMLファイルに書き込む>
            //XmlSerializerオブジェクトを作成
            //書き込むオブジェクトの型を指定する
            XmlSerializer serializer = new XmlSerializer(typeof(MyMods));

            //ファイルを開く(UTF-8 BOM無し)

            try
            {
                StreamWriter sw = new StreamWriter(XmlPath, false, new UTF8Encoding(false));
                //シリアル化し、XMLファイルに保存する
                serializer.Serialize(sw, myMods);
                //閉じる
                sw.Close();
            }
            catch
            {
                MessageBox.Show("Failed to write a setting file. Another process is using a setting file.");
                return;
            }
        }
Ejemplo n.º 15
0
        public bool CheckSettingFile()
        {
            //設定ファイルが無かったら作る
            if (File.Exists(XmlPath) == false)
            {
                File.Create(XmlPath).Close();
                MyMods myMods = new MyMods();
                XmlWriter(myMods);
            }

            try
            {
                using (Stream stream = new FileStream(XmlPath, FileMode.Open)) { }
            }
            catch
            {
                MessageBox.Show("Another process is using a setting file.");

                return(false);
            }

            return(true);
        }
Ejemplo n.º 16
0
        public void LoadData()
        {
            // Load data and setup saving MyMods list to settings
            canSaveData = false;
            try
            {
                log.Info("Loading my mods");

                // Load mods from model and create view model objects
                foreach (TroveMod mod in TroveMod.MyMods)
                {
                    dynamic modVM = new TroveModViewModel(mod);
                    MyMods.Add(modVM);
                    modVM.CheckForUpdates();
                }

                // Load local mod packs
                foreach (TroveModPack pack in SettingsDataProvider.MyModPacks)
                {
                    ModPacks.Add(new TroveModPackViewModel(pack));
                }

                // Load mod packs from Trovesaurus API
                foreach (TroveModPack pack in TrovesaurusApi.ModPackList)
                {
                    ModPacks.Add(new TroveModPackViewModel(pack));
                }

                // If auto update setting is enabled, update all mods on startup
                if (MainWindowViewModel.Instance.Settings.AutoUpdateMods)
                {
                    UpdateAllMods();
                    StartUpdateTimer(SettingsDataProvider.AutoUpdateInterval);
                }

                // Setup auto-saving of my mods when the collection or items in the collection change
                MyMods.CollectionChanged += (s, e) =>
                {
                    if (e.OldItems != null)
                    {
                        foreach (INotifyPropertyChanged item in e.OldItems)
                        {
                            item.PropertyChanged -= SaveMyMods;
                        }
                    }
                    if (e.NewItems != null)
                    {
                        foreach (INotifyPropertyChanged item in e.NewItems)
                        {
                            item.PropertyChanged += SaveMyMods;
                        }
                    }

                    SaveMyMods();
                };

                // Setup auto-saving of mod packs when the collection or items in the collection change
                ModPacks.CollectionChanged += (s, e) =>
                {
                    SaveModPacks();
                };

                canSaveData = true;
                SaveMyMods();
                SaveModPacks();

                log.Info("Loaded my mods");
            }
            catch (Exception ex)
            {
                log.Error("Error loading my mods", ex);
            }
            finally
            {
                canSaveData = true;
            }
        }
Ejemplo n.º 17
0
 private void RefreshButton_Click(object sender, EventArgs e)
 {
     Config.LoadCfg();
     Backups.LoadBackups();
     MyMods.LoadModpacks();
 }