Ejemplo n.º 1
0
        public void Write(string fileOut, SQ translated)
        {
            Update_Blocks(ref translated);
            BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut));

            bw.Write(translated.id);

            // First 4 blocks
            for (int i = 0; i < translated.sblocks.Length; i++)
            {
                bw.Write(translated.sblocks[i].size);
                bw.Write(enc.GetBytes(Helper.LatinToSJIS(translated.sblocks[i].text)));
            }

            bw.Write(translated.unknown);
            bw.Write(translated.num_fblocks);

            // Write final blocks
            for (int i = 0; i < translated.fblocks.Length; i++)
            {
                bw.Write(translated.fblocks[i].size);
                bw.Write(enc.GetBytes(Helper.LatinToSJIS(translated.fblocks[i].text)));
            }

            bw.Write(translated.num_final);
            for (int i = 0; i < translated.final.Length; i++)
            {
                bw.Write((byte)(translated.final[i].Length - 4));
                bw.Write(translated.final[i]);
            }

            bw.Flush();
            bw.Close();
        }
Ejemplo n.º 2
0
 private void Update_Blocks(ref SQ translated)
 {
     for (int i = 0; i < translated.sblocks.Length; i++)
     {
         translated.sblocks[i].size = (ushort)enc.GetByteCount(Helper.LatinToSJIS(translated.sblocks[i].text));
     }
     for (int i = 0; i < translated.fblocks.Length; i++)
     {
         translated.fblocks[i].size = (ushort)enc.GetByteCount(Helper.LatinToSJIS(translated.fblocks[i].text));
     }
 }
Ejemplo n.º 3
0
        public static byte[] Write_String(string text, uint size)
        {
            byte[] d, t;

            d = Encoding.GetEncoding("shift_jis").GetBytes(Helper.LatinToSJIS(text));
            t = new byte[size];
            if (d.Length > size)
                System.Windows.Forms.MessageBox.Show("Invalid text. It's so big\n" + text);
            else
                Array.Copy(d, t, d.Length);

            d = null;
            return t;
        }
Ejemplo n.º 4
0
        public void Write(string fileOut)
        {
            BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut));

            bw.Write(systext.num_element);

            for (int i = 0; i < systext.num_element; i++)
            {
                systext.elements[i].size = (ushort)enc.GetByteCount(Helper.LatinToSJIS(systext.elements[i].text));

                bw.Write(systext.elements[i].id);
                bw.Write(systext.elements[i].size);
                bw.Write(enc.GetBytes(Helper.LatinToSJIS(systext.elements[i].text)));
            }

            bw.Flush();
            bw.Close();
        }
Ejemplo n.º 5
0
        public void Write(string fileOut)
        {
            Update_Block();
            if (File.Exists(fileOut))
            {
                File.Delete(fileOut);
            }

            BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut));

            bw.Write(0x0006050A);   // Header

            for (int i = 0; i < sce.blocks.Length; i++)
            {
                bw.Write(sce.blocks[i].size);
                for (int j = 0; j < sce.blocks[i].elements.Length; j++)
                {
                    bw.Write(sce.blocks[i].elements[j].id);
                    bw.Write(sce.blocks[i].elements[j].size);

                    if (i == 2)
                    {
                        bw.Write(sce.blocks[i].elements[j].unk);
                    }

                    bw.Write(enc.GetBytes(Helper.LatinToSJIS(Set_Furigana(sce.blocks[i].elements[j].text))));

                    if (i == 1)
                    {
                        bw.Write(sce.blocks[i].elements[j].unk);
                    }
                    else if (i == 2)
                    {
                        bw.Write(sce.blocks[i].elements[j].unk2);
                    }
                }
                bw.Write(0xFFFFFFFF);
            }

            bw.Flush();
            bw.Close();
        }
Ejemplo n.º 6
0
        private void Update_Block()
        {
            Scenario.Block block;
            int            size = 0;

            // Block 0
            block = sce.blocks[0];
            for (int i = 0; i < block.elements.Length; i++)
            {
                block.elements[i].size = (byte)enc.GetByteCount(Helper.LatinToSJIS(Set_Furigana(block.elements[i].text)));
                size += block.elements[i].size + 5; // Text + ID + Size
            }
            size         += 4;                      // 0xFFFFFFFF
            block.size    = (uint)size;
            sce.blocks[0] = block;

            // Block 1
            block = sce.blocks[1];
            size  = 0;
            for (int i = 0; i < block.elements.Length; i++)
            {
                block.elements[i].size = (byte)enc.GetByteCount(Helper.LatinToSJIS(Set_Furigana(block.elements[i].text)));
                size += block.elements[i].size + 7; // Text + ID + Size + Unknown
            }
            size         += 4;                      // 0xFFFFFFFF
            block.size    = (uint)size;
            sce.blocks[1] = block;

            // Block 2
            block = sce.blocks[2];
            size  = 0;
            for (int i = 0; i < block.elements.Length; i++)
            {
                block.elements[i].size = (byte)(enc.GetByteCount(Helper.LatinToSJIS(Set_Furigana(block.elements[i].text))) + 4);
                size += block.elements[i].size + 5; // Text + ID + Size
            }
            size         += 4;                      // 0xFFFFFFFF
            block.size    = (uint)size;
            sce.blocks[2] = block;
        }
Ejemplo n.º 7
0
        public void Write(string fileOut)
        {
            BinaryWriter bw = new BinaryWriter(File.OpenWrite(fileOut));

            bw.Write(mq.num_blocks);

            for (int i = 0; i < mq.blocks.Length; i++)
            {
                Update_Block(ref mq.blocks[i]);
                bw.Write(mq.blocks[i].size);
                bw.Write(mq.blocks[i].id);

                for (int e = 0; e < mq.blocks[i].elements.Length; e++)
                {
                    bw.Write(mq.blocks[i].elements[e].size);
                    bw.Write(Encoding.GetEncoding("shift_jis").GetBytes(Helper.LatinToSJIS(mq.blocks[i].elements[e].text)));
                }
                bw.Write((byte)0x00);
            }

            bw.Flush();
            bw.Close();
        }
Ejemplo n.º 8
0
        public void Write(string file)
        {
            string text = "";

            for (int i = 0; i < subs.Length; i++)
            {
                switch (subs[i].type)
                {
                case SubType.Text: text += Helper.LatinToSJIS(subs[i].data); break;

                case SubType.SyncTime: text += "/sync " + Convert.ToInt32(subs[i].data); break;

                case SubType.Voice: text += "/stream " + subs[i].data; break;

                case SubType.Comment: text += '#' + Helper.LatinToSJIS(subs[i].data); break;

                case SubType.Clear: text += "/clear"; break;
                }

                text += "\xD" + split;
            }

            File.WriteAllText(file, text, Encoding.GetEncoding("shift_jis"));
        }
Ejemplo n.º 9
0
        public void Update_Block(ref MainQuest.Block block)
        {
            ushort size = 0;

            for (int i = 0; i < block.elements.Length; i++)
            {
                MainQuest.Block.Element e = block.elements[i];
                e.size            = (ushort)Encoding.GetEncoding("shift_jis").GetByteCount(Helper.LatinToSJIS(e.text));
                block.elements[i] = e;

                size += (ushort)(e.size + 2);
            }
            size      += 5; // ID + last 0 byte
            block.size = size;
        }