コード例 #1
0
        private void revertModifiedImageToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PSXImage modifiedImage = _state.ProjectFile.ModifiedImage;

            modifiedImage.Clear(false);
            modifiedImage.Rip(_state.ProjectFile.ModifiedImage.RippedDirectory);
            UpdateTreeNodes();
        }
コード例 #2
0
        public FontEditorWindow()
        {
            InitializeComponent();

            if (ApplicationState.Instance.ProjectFile == null)
            {
                return;
            }
            _modifiedImage = ApplicationState.Instance.ProjectFile.ModifiedImage;
        }
コード例 #3
0
        public ScriptAnalyseWindow(ScriptCollection scriptFileCollection)
        {
            InitializeComponent();
            _scriptFileCollection = scriptFileCollection;
            List <string> lines = ParseScripts();

            foreach (string line in lines)
            {
                richTextBox1.AppendText(line + "\n");
            }

            HashSet <string> dictionary = CreateDictionary(lines);

            richTextBox1.AppendText("\nDictionary( " + dictionary.Count + " Symbols ):");
            foreach (string characters in dictionary)
            {
                richTextBox1.AppendText(characters + "\n");
            }

            string[] unsortedDictionary = dictionary.ToArray();
            string[] sortedDictionary   = dictionary.OrderBy(entry => entry).ToArray();

            if (ApplicationState.Instance.ProjectFile != null)
            {
                _modifiedImage = ApplicationState.Instance.ProjectFile.ModifiedImage;
            }

            if (_modifiedImage == null)
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "Conan Font File|FONT.BIN";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    _fontFile = new FONTFile(openFileDialog.FileName);
                }
            }
            else
            {
                PKNFile  graphPkn = _modifiedImage.PKNFiles?.Find(pkn => pkn.Name == "GRAPH");
                BaseFile fontFile = graphPkn?.Files?.Find(file => file.FileName == "FONT.BIN");
                if (fontFile == null)
                {
                    return;
                }

                _fontFile = new FONTFile(fontFile.FilePath);
            }
            _fontFile.Load();

            _fontFile.Generate(unsortedDictionary, new Font("ConanFont", 12));
            _fontFile.Save();
        }
コード例 #4
0
        private void revertToOriginalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PSXImage modifiedImage = _state.ProjectFile.ModifiedImage;
            PSXImage originalImage = _state.ProjectFile.OriginalImage;

            File.Copy(originalImage.ImageBinPath, modifiedImage.ImageBinPath, true);
            modifiedImage.Clear(false);
            modifiedImage.Rip(modifiedImage.RippedDirectory);
            UpdateTreeNodes();

            //Decompress Scripts (throw away instance)
            new ScriptEditorWindow().DecompressScripts();
        }
コード例 #5
0
        public void DecompressScripts()
        {
            if (ApplicationState.Instance.ProjectFile == null)
            {
                MessageBox.Show("Open a project file before decompressing!", "Project file not found!");
                return;
            }
            PSXImage modifiedImage = ApplicationState.Instance.ProjectFile.ModifiedImage;

            _scriptPKN = modifiedImage.PKNFiles.Find(pkn => pkn.Name == "SCRIPT");
            if (_scriptPKN == null)
            {
                return;
            }
            if (_scriptPKN.Files.Count == 0) //cheap fix for when pkn files dont save files
            {
                _scriptPKN.Unpack();
            }
            Enabled = false;

            ScriptFile = new ScriptFile();

            richTextBox_ScriptFile.Text = "";
            for (int i = 0; i < _scriptPKN.Files.Count; i++)
            {
                BaseFile baseFile = _scriptPKN.Files[i];
                if (baseFile.GetType() == typeof(LZBFile))
                {
                    LZBFile lzbFile = (LZBFile)baseFile;
                    lzbFile.Decompress();
                }
                ScriptDocument scriptFile = new ScriptDocument(baseFile);
                ScriptFile.Scripts.Add(scriptFile);
                progressBar_Progress.Value = (int)((double)i / _scriptPKN.Files.Count * 100);
            }
            listBox_ScriptFiles.Items.Clear();
            foreach (ScriptDocument scriptFile in ScriptFile.Scripts)
            {
                listBox_ScriptFiles.Items.Add(scriptFile);
            }

            progressBar_Progress.Value = 0;
            Enabled = true;
        }
コード例 #6
0
        private void UpdateTreeNodes()
        {
            treeView1.Nodes.Clear();
            if (_state.ProjectFile == null)
            {
                return;
            }

            PSXImage image     = _state.ProjectFile.ModifiedImage;
            TreeNode imageNode = new TreeNode(image.ToString());

            imageNode.Tag     = image;
            imageNode.Checked = false;

            foreach (string directory in ConanImage.Directories)
            {
                TreeNode directoryNode = new TreeNode(directory);
                directoryNode.ImageIndex = 0;

                PKNFile pkn = image.PKNFiles.Find(e => e.Name == directory);
                if (pkn != null)
                {
                    TreeNode pknNode = new TreeNode(pkn.FileName);
                    pknNode.ImageIndex         = 1;
                    pknNode.SelectedImageIndex = 1;
                    pknNode.Tag = pkn;

                    if (pkn.Files.Count != 0)
                    {
                        foreach (BaseFile file in pkn.Files)
                        {
                            TreeNode fileNode = new TreeNode(file.FileName);
                            fileNode.Tag = file;

                            if (file.GetType() == typeof(PBFile))
                            {
                                PBFile pbFile = (PBFile)file;
                                foreach (PBFileEntry entry in pbFile.Files)
                                {
                                    TreeNode entryNode = new TreeNode(entry.File.FileName);
                                    entryNode.Tag = entry.File;
                                    fileNode.Nodes.Add(entryNode);
                                }
                            }
                            if (file.GetType() == typeof(BGFile))
                            {
                                BGFile bgFile = (BGFile)file;
                                foreach (BaseFile entry in bgFile.Files)
                                {
                                    TreeNode entryNode = new TreeNode(entry.FileName);
                                    entryNode.Tag = entry;
                                    fileNode.Nodes.Add(entryNode);
                                }
                            }
                            pknNode.Nodes.Add(fileNode);
                        }
                    }
                    directoryNode.Nodes.Add(pknNode);
                }
                else
                {
                    foreach (ConanImageFile file in ConanImage.Files)
                    {
                        if (Path.GetDirectoryName(file.FilePath) == directory)
                        {
                            TreeNode fileNode = new TreeNode(Path.GetFileName(file.FilePath));
                            fileNode.Tag = file;
                            //fileNode.Tag = HeaderList.GetTypeFromFile(Path.Combine(_state.ProjectFile.ModifiedImage.RippedDirectory,file.FilePath)); //LAAAAG
                            directoryNode.Nodes.Add(fileNode);
                        }
                    }
                }
                imageNode.Nodes.Add(directoryNode);
            }
            treeView1.Nodes.Add(imageNode);
        }