Пример #1
0
        public unsafe static bool process(Settings settings, int languageIndex)
        {
            TranslationStructure es = new TranslationStructure();

            es.action = (byte)1;

            es.inputFilePath  = toByteArray(settings.inpuPath, Settings.defaultEncoding);
            es.outputFilePath = toByteArray(settings.outputPath, Settings.defaultEncoding);

            es.useCondition = settings.useCondition;
            es.repack       = (byte)(settings.repack ? 1 : 0);

            int len = 0;

            es.stringData       = toByteArray(settings.lastKnownMapping, settings.strings[languageIndex], &len, settings.encodings[languageIndex]);
            es.stringDataLength = len;

            run(&es);

            killByteArray(es.inputFilePath);
            killByteArray(es.outputFilePath);
            killByteArray(es.stringData);

            settings.result = es.result;
            settings.repack = es.repack == 1;

            return(es.result == 0);
        }
Пример #2
0
        public static unsafe MapString[] getStrings(String filePath, String encoding)
        {
            TranslationStructure es = new TranslationStructure();

            es.action         = (byte)2;
            es.outputFilePath = (byte *)0;
            es.inputFilePath  = toByteArray(filePath, Settings.defaultEncoding);
            try {
                run(&es); // Run extraction

                killByteArray(es.inputFilePath);
                UnsafeReadBuffer rb = new UnsafeReadBuffer(es.stringData);

                int         totalStrings = rb.readInt();
                MapString[] result       = new MapString[totalStrings];
                for (int i = 0; i < totalStrings; i++)
                {
                    result[i] = readMapString(rb, encoding);
                }

                // Sort by index
                bool changed = true;
                while (changed)
                {
                    changed = false;
                    for (int i = 1; i < result.Length; i++)
                    {
                        MapString p0 = result[i - 1];
                        MapString p1 = result[i];
                        if (p0.mapIndex > p1.mapIndex)
                        {
                            changed       = true;
                            result[i - 1] = p1;
                            result[i]     = p0;
                        }
                    }
                }

                for (int i = 0; i < result.Length; i++)
                {
                    //result[i].storageIndex = i;
                }
                es.action = (byte)3;
                run(&es); // Free the array data string

                return(result);
            } catch (Exception) {
            }
            return(null);
        }
Пример #3
0
        public unsafe static bool checkUsedCondition(Settings settings)
        {
            TranslationStructure es = new TranslationStructure();

            es.action = (byte)5;

            es.inputFilePath = toByteArray(settings.inpuPath, Settings.defaultEncoding);

            es.useCondition = settings.useCondition;

            run(&es);

            killByteArray(es.inputFilePath);

            settings.result = es.result;
            if (es.result != 0)   // Error
            {
                return(false);
            }
            return(es.useCondition == 0);
        }
Пример #4
0
        public unsafe static SupportType getSupportType(Settings settings)
        {
            TranslationStructure es = new TranslationStructure();

            es.action = (byte)4;

            es.inputFilePath = toByteArray(settings.inpuPath, Settings.defaultEncoding);

            es.useCondition = settings.useCondition;

            run(&es);

            killByteArray(es.inputFilePath);

            settings.result = es.result;
            if (es.result != 0)   // Error
            {
                return(SupportType.Unsupported);
            }
            return((SupportType)es.useCondition);
        }