예제 #1
0
        private void UpdateGameplayData(ref string tmpFile)
        {
            int statusPos = -1;

            while (true)
            {
                statusPos++;

                if (statusPos > gameplaySubtitleList.Count - 1)
                {
                    break;
                }

                GSubtitle tmpSub   = gameplaySubtitleList[statusPos];
                byte[]    subBytes = ConvIntToPos(tmpSub.SubtitlePosition);
                string    subPos   = Encoding.Default.GetString(subBytes);
                string    madeLine = subPos + "\x01";

                if (statusPos + 1 < gameplaySubtitleList.Count - 1 && gameplaySubtitleList[statusPos + 1].SubtitleId == 1)
                {
                    GSubtitle tmpSub2   = gameplaySubtitleList[statusPos + 1];
                    byte[]    subBytes2 = ConvIntToPos(tmpSub2.SubtitlePosition);
                    string    subPos2   = Encoding.Default.GetString(subBytes2);
                    madeLine += subPos2 + "\x01";
                    statusPos++;
                }

                if (statusPos + 2 < gameplaySubtitleList.Count - 1 && gameplaySubtitleList[statusPos + 2].SubtitleId == 2)
                {
                    GSubtitle tmpSub3   = gameplaySubtitleList[statusPos + 2];
                    byte[]    subBytes3 = ConvIntToPos(tmpSub3.SubtitlePosition);
                    string    subPos3   = Encoding.Default.GetString(subBytes3);
                    madeLine += subPos3 + "\x01";
                    statusPos++;
                }

                if (statusPos + 3 < gameplaySubtitleList.Count - 1 && gameplaySubtitleList[statusPos + 3].SubtitleId == 3)
                {
                    GSubtitle tmpSub4   = gameplaySubtitleList[statusPos + 3];
                    byte[]    subBytes4 = ConvIntToPos(tmpSub4.SubtitlePosition);
                    string    subPos4   = Encoding.Default.GetString(subBytes4);
                    madeLine += subPos4 + "\x01";
                    statusPos++;
                }

                if (statusPos + 4 < gameplaySubtitleList.Count - 1 && gameplaySubtitleList[statusPos + 4].SubtitleId == 4)
                {
                    GSubtitle tmpSub5   = gameplaySubtitleList[statusPos + 4];
                    byte[]    subBytes5 = ConvIntToPos(tmpSub5.SubtitlePosition);
                    string    subPos5   = Encoding.Default.GetString(subBytes5);
                    madeLine += subPos5 + "\x01";
                    statusPos++;
                }

                testtime2.Start();
                tmpFile = tmpFile.Patch(madeLine, tmpSub.DataPosition);
                testtime2.Stop();
            }
        }
        private void geditButton_Click(object sender, EventArgs e)
        {
            if (gCurItem == -1)
            {
                return;
            }

            GSubtitle curSub  = decryptUtil.gameplaySubtitleList[gCurItem - 1];
            int       tmpDiff = gameplayEditText.Text.Length - gameplayView.FindItemWithText(gCurItem.ToString()).SubItems[1].Text.Length;
            int       tmpPos  = curSub.SubtitlePosition;

            decryptUtil.fixList.Add(new ModPoint(tmpPos, tmpDiff, gCurItem - 1, true));
            decryptUtil.FixStrings(tmpPos, tmpDiff);

            ListViewItem tmp = gameplayView.FindItemWithText(gCurItem.ToString());

            tmp.SubItems[1].Text = gameplayEditText.Text;

            decryptUtil.gameplaySubtitleList[gCurItem - 1].SubtitleText = gameplayEditText.Text;
        }