Пример #1
0
        private bool ProcessFilesInternal(AcceptedFilesResults results, string[] files)
        {
            foreach (int bitIndex in results.AcceptedFileTypes.SetBitIndices)
            {
                var type = (AcceptedFileType)bitIndex;
                switch (type)
                {
                case AcceptedFileType.Bin:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessGameVariantBinFiles(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.GvarXml:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessGameVariantXmlFiles(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Directory:
                {
                    // #TODO_MGLO: Detect CTRL key to do XML->BIN?

                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        // #TODO_MGLO
                        //BinToGameVariantXmlInDirectories(files);
                        throw new NotImplementedException(type.ToString());
                        //return true;
                    }
                    break;
                }
                }
            }

            return(false);
        }
Пример #2
0
        private bool AcceptsFilesInternal(AcceptedFilesResults results, string[] files)
        {
            foreach (int bitIndex in results.AcceptedFileTypes.SetBitIndices)
            {
                var type = (AcceptedFileType)bitIndex;
                switch (type)
                {
                case AcceptedFileType.Bin:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "Disassemble Game Variant Bin(s)";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.GvarXml:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "Assemble Game Variant Bins(s) from XML source";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Directory:
                {
#if false // #TODO_MGLO
                    // #TODO_MGLO: Detect CTRL key to do XML->BIN?

                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "BIN->MGLOXML (in directories)";
                        return(true);
                    }
#endif
                    break;
                }
                }
            }

            return(false);
        }
Пример #3
0
        public static AcceptedFilesResults DetermineAcceptedFiles(string[] files, BitVector32 miscFlags)
        {
            var results = new AcceptedFilesResults();

            if (files == null || files.Length == 0)
            {
                return(results);
            }

            results.FilesCount = files.Length;

            foreach (string path in files)
            {
                if (System.IO.Directory.Exists(path))
                {
                    results.AcceptedFileTypes.Set(AcceptedFileType.Directory);
                    continue;
                }

                string ext = System.IO.Path.GetExtension(path);
                if (string.IsNullOrEmpty(ext))                 // extension-less file
                {
                    results.AcceptedFileTypes.Set(AcceptedFileType.Unaccepted);
                    continue;
                }

                switch (ext)
                {
                case KSoft.Blam.RuntimeData.Variants.GameEngineVariant.kGameVariantBinExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.Bin);
                    break;

                case KSoft.Blam.RuntimeData.Variants.GameEngineVariant.kGameVariantXmlExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.GvarXml);
                    break;
                }
            }

            return(results);
        }
        private bool ProcessFilesInternal(AcceptedFilesResults results, string[] files)
        {
            foreach (int bitIndex in results.AcceptedFileTypes.SetBitIndices)
            {
                var type = (AcceptedFileType)bitIndex;
                switch (type)
                {
                case AcceptedFileType.EraDef:
                {
                    if (results.FilesCount == 1)
                    {
                        ProcessEraListing(files[0]);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.EcfDef:
                {
                    if (results.FilesCount == 1)
                    {
                        ProcessEcfListing(files[0]);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.PkgDef:
                {
                    if (results.FilesCount == 1)
                    {
                        // TODO
                        //ProcessPkgListing(files[0]);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Exe:
                case AcceptedFileType.Xex:
                {
                    if (results.FilesCount == 1)
                    {
                        PatchGameExe(files[0], type);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Era:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessEraFiles(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Ecf:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessEcfFiles(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Pkg:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        // TODO
                        //ProcessPkgFiles(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Xmb:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        XmbToXml(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Directory:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        XmbToXmlInDirectories(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.BinaryDataTree:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        BinaryDataTreeBinToXml(files);
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.BinaryDataTreeXml:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        // #TODO
                        throw new NotImplementedException(type.ToString());
                        //return true;
                    }
                    break;
                }
                }
            }

            return(false);
        }
        private bool AcceptsFilesInternal(AcceptedFilesResults results, string[] files)
        {
            foreach (int bitIndex in results.AcceptedFileTypes.SetBitIndices)
            {
                var type = (AcceptedFileType)bitIndex;
                switch (type)
                {
                case AcceptedFileType.EraDef:
                {
                    if (results.FilesCount == 1)
                    {
                        ProcessFilesHelpText = "Build ERA";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.EcfDef:
                {
                    if (results.FilesCount == 1)
                    {
                        ProcessFilesHelpText = "Build ECF";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.PkgDef:
                {
                    if (results.FilesCount == 1)
                    {
                        ProcessFilesHelpText = "Build PKG";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Exe:
                case AcceptedFileType.Xex:
                {
                    if (results.FilesCount == 1)
                    {
                        ProcessFilesHelpText = "Try to patch game EXE for modding";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Era:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "Expand ERA(s)";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Ecf:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "Expand ECF(s)";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Pkg:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "Expand PKG(s)";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Xmb:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "XMB->XML";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.Directory:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "XMB->XML (in directories)";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.BinaryDataTree:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "BinaryDataTree BIN->XML";
                        return(true);
                    }
                    break;
                }

                case AcceptedFileType.BinaryDataTreeXml:
                {
                    if (results.AcceptedFileTypes.Cardinality == 1)
                    {
                        ProcessFilesHelpText = "BinaryDataTree XML->BIN";
                        return(true);
                    }
                    break;
                }
                }
            }

            return(false);
        }
        public static AcceptedFilesResults DetermineAcceptedFiles(string[] files, BitVector32 miscFlags)
        {
            var results = new AcceptedFilesResults();

            if (files == null || files.Length == 0)
            {
                return(results);
            }

            results.FilesCount = files.Length;

            foreach (string path in files)
            {
                if (System.IO.Directory.Exists(path))
                {
                    results.AcceptedFileTypes.Set(AcceptedFileType.Directory);
                    continue;
                }

                string ext = System.IO.Path.GetExtension(path);
                if (string.IsNullOrEmpty(ext))                 // extension-less file
                {
                    results.AcceptedFileTypes.Set(AcceptedFileType.Unaccepted);
                    continue;
                }

                // #HACK ECFs
                // Needs to come before all other file extension checks as it is a forced override
                if (miscFlags.Test(MiscFlags.AssumeDragAndDropFilesAreEcf))
                {
                    results.AcceptedFileTypes.Set(AcceptedFileType.Ecf);
                    continue;
                }

                switch (ext)
                {
                case KSoft.Phoenix.Resource.EraFileUtil.kExtensionEncrypted:
                    results.AcceptedFileTypes.Set(AcceptedFileType.Era);
                    break;

                case KSoft.Phoenix.Resource.EraFileBuilder.kNameExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.EraDef);
                    break;

                case KSoft.Phoenix.Resource.ECF.EcfFileDefinition.kFileExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.EcfDef);
                    break;

                case KSoft.Phoenix.Resource.PKG.CaPackageFile.kFileExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.Pkg);
                    break;

                case KSoft.Phoenix.Resource.PKG.CaPackageFileDefinition.kFileExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.PkgDef);
                    break;

                case ".exe":
                    results.AcceptedFileTypes.Set(AcceptedFileType.Exe);
                    break;

                case ".xex":
                    results.AcceptedFileTypes.Set(AcceptedFileType.Exe);
                    break;

                case ".xmb":
                    results.AcceptedFileTypes.Set(AcceptedFileType.Xmb);
                    break;

                case KSoft.Phoenix.Xmb.BinaryDataTree.kBinaryFileExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.BinaryDataTree);
                    break;

                case KSoft.Phoenix.Xmb.BinaryDataTree.kTextFileExtension:
                    results.AcceptedFileTypes.Set(AcceptedFileType.BinaryDataTreeXml);
                    break;

                default:
                    if (KSoft.Phoenix.Resource.ResourceUtils.IsXmlBasedFile(path))
                    {
                        results.AcceptedFileTypes.Set(AcceptedFileType.Xml);
                    }
                    break;
                }
            }

            return(results);
        }