Esempio n. 1
0
        private void compareDataEntries()
        {
            GUI.Instance.UpdateStatus(0, "Comparing data entries...");
            GUI.Instance.UpdateProgressMaximum(0, FileList.Count);
            GUI.Instance.UpdateProgressValue(0, currentIndex);

            if (FileList.Count > 0)
            {
                Structures.IndexEntry file = FileList[currentIndex];

                DataCore.Structures.IndexEntry fileEntry = Core.GetEntry(ref index, file.FileName);

                if (fileEntry != null)
                {
                    GUI.Instance.UpdateStatus(1, string.Format("Checking {0}...", file.FileName));

                    string fileHash = Core.GetFileSHA512(settings.GetString("clientdirectory"), Core.GetID(fileEntry.Name), fileEntry.Offset, fileEntry.Length, getExtension(fileEntry.Name));

                    if (file.FileHash != fileHash)
                    {
                        GUI.Instance.UpdateStatus(1, string.Format("Downloading {0}...", FileList[currentIndex].FileName));
                        downloadUpdate();
                    }
                }
            }
            else
            {
                iterateCurrentIndex();
            }
        }
Esempio n. 2
0
        public async void TS_Load_Data_Click(object sender, EventArgs e)
        {
            if (!structLoaded)
            {
                MessageBox.Show("You can not do that until a structure has been loaded!", "Structure Exception", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }

            dCore                  = new DataCore.Core(Encodings.GetByName(ts_enc_list.Text));
            Paths.Title            = "Select client data.000";
            Paths.DefaultDirectory = OPT.GetString("data.load.directory");
            string dataPath = Paths.FilePath;

            if (Paths.FileResult == DialogResult.OK)
            {
                lManager.Enter(Logs.Sender.RDB, Logs.Level.NOTICE, "RDB Tab: {0} attempting load file selection from index at path:\n\t- {1}", tManager.Text, dataPath);

                List <DataCore.Structures.IndexEntry> results = null;

                await Task.Run(() =>
                {
                    dCore.Load(dataPath);
                    results = dCore.GetEntriesByExtensions("rdb", "ref");
                });

                lManager.Enter(Logs.Sender.RDB, Logs.Level.DEBUG, "File list retrived successfully!\n\t- Selections available: {0}", results.Count);

                using (Grimoire.GUI.ListSelect selectGUI = new GUI.ListSelect("Select RDB", results))
                {
                    selectGUI.FormClosing += (o, x) =>
                    {
                        if (selectGUI.DialogResult == DialogResult.OK)
                        {
                            string fileName = selectGUI.SelectedText;
                            DataCore.Structures.IndexEntry finalResult = results.Find(i => i.Name == fileName);
                            byte[] fileBytes = dCore.GetFileBytes(finalResult);

                            if (fileBytes.Length > 0)
                            {
                                load_file(fileName, fileBytes);
                            }
                        }
                        else
                        {
                            lManager.Enter(Logs.Sender.RDB, Logs.Level.DEBUG, "User cancelled Data load on RDB Tab: {0}", tManager.Text);
                            return;
                        }
                    };
                    selectGUI.ShowDialog(Grimoire.GUI.Main.Instance);
                }
            }
        }
Esempio n. 3
0
        private async void load_data_file(string filePath)
        {
            dCore = new DataCore.Core(Encodings.GetByName(ts_enc_list.Text));

            lManager.Enter(Logs.Sender.RDB, Logs.Level.NOTICE, "RDB Tab: {0} attempting load file selection from index at path:\n\t- {1}", tManager.Text, filePath);

            List <DataCore.Structures.IndexEntry> results = null;

            actionSW.Reset();
            actionSW.Start();

            await Task.Run(() =>
            {
                dCore.Load(filePath);
                results = dCore.GetEntriesByExtensions("rdb", "ref");
            });

            lManager.Enter(Logs.Sender.RDB, Logs.Level.DEBUG, "File list retrived successfully! ({0}ms)\n\t- Selections available: {1}",
                           actionSW.ElapsedMilliseconds.ToString("D4"),
                           results.Count);

            using (Grimoire.GUI.ListSelect selectGUI = new GUI.ListSelect("Select RDB", results))
            {
                selectGUI.ShowDialog(Grimoire.GUI.Main.Instance);

                if (selectGUI.DialogResult == DialogResult.OK)
                {
                    string fileName = selectGUI.SelectedText;
                    DataCore.Structures.IndexEntry finalResult = results.Find(i => i.Name == fileName);
                    byte[] fileBytes = dCore.GetFileBytes(finalResult);

                    lManager.Enter(Logs.Sender.RDB, Logs.Level.DEBUG, "User selected rdb: {0}", fileName);

                    if (fileBytes.Length > 0)
                    {
                        load_file(fileName, fileBytes);
                    }
                }
                else
                {
                    lManager.Enter(Logs.Sender.RDB, Logs.Level.DEBUG, "User cancelled Data load on RDB Tab: {0}", tManager.Text);
                    return;
                }
            }
        }
Esempio n. 4
0
        public void OnFileTransfered(string zipName)
        {
            GUI.Instance.ResetProgressStatus(1);

            GUI.Instance.UpdateStatus(0, "Applying update...");

            string fileName = FileList[currentIndex].FileName;

            bool isLegacy = updatingResource;

            bool isNew = !Core.EntryExists(ref index, fileName);

            string zipPath = string.Format(@"{0}\Downloads\{1}", Directory.GetCurrentDirectory(), zipName);


            if (isLegacy)
            {
                GUI.Instance.UpdateStatus(1, string.Format("Moving {0} to /Resource/...", fileName));

                // TODO: Rename? Move? Delete if already exists

                // Extract the zip to the /resource/ folder of client
                ZIP.Unpack(zipPath, resourceFolder);
            }
            else
            {
                string filePath = string.Format(@"{0}\{1}", tmpDirectory, fileName);

                // Extract the zip to the /tmp/ folder for processing
                ZIP.Unpack(zipPath, tmpDirectory);

                DataCore.Structures.IndexEntry indexEntry = Core.GetEntry(ref index, fileName);

                if (indexEntry != null)
                {
                    if (!isNew)
                    {
                        GUI.Instance.UpdateStatus(1, string.Format("Updating indexed file: {0}...", fileName));
                        Core.UpdateFileEntry(ref index, settings.GetString("clientdirectory"), filePath, 0);
                    }
                    else
                    {
                        GUI.Instance.UpdateStatus(1, string.Format("Inserting file: {0}...", fileName));
                        Core.ImportFileEntry(ref index, settings.GetString("clientdirectory"), filePath, 0);
                    }

                    GUI.Instance.UpdateStatus(1, "Finalizing data index...");
                    Core.Save(ref index, settings.GetString("clientdirectory"), false);
                }
            }

            GUI.Instance.UpdateStatus(1, "Cleaning up...");

            // Delete the zip
            File.Delete(zipPath);

            // Clear the tmp folder
            foreach (string tmpFileName in Directory.GetFiles(tmpDirectory))
            {
                File.Delete(tmpFileName);
            }

            // Increase the currentIndex
            iterateCurrentIndex();
        }