コード例 #1
0
        private void SplitButton_Click(object sender, EventArgs e)
        {
            // Define file
            OpenFileDialog.FileName = "";
            OpenFileDialog.Filter   = "Lineage II config (skilldata.txt)|skilldata.txt|All files (*.*)|*.*";
            if (OpenFileDialog.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            else
            {
                SourceFile.Text = OpenFileDialog.FileName;
            }

            // Select folder to work
            if (FolderBrowserDialog.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }

            string[] str;
            str = System.IO.Directory.GetFiles(FolderBrowserDialog.SelectedPath, "*.*", System.IO.SearchOption.AllDirectories);
            if (str.Length != 0 & OverwriteBox.Checked == false)
            {
                if ((int)MessageBox.Show("Source directory no empty! Continue?", "No empty directory", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == (int)DialogResult.No)
                {
                    return;
                }
            }
            TargetFile.Text = FolderBrowserDialog.SelectedPath;

            // Initialization
            ProgressBar.Value = 0;
            var inFile = new System.IO.StreamReader(SourceFile.Text, System.Text.Encoding.Default, true, 1);

            string ReadStr;
            var    Digit = new[] { Conversions.ToChar("1"), Conversions.ToChar("2"), Conversions.ToChar("3"), Conversions.ToChar("4"), Conversions.ToChar("5"), Conversions.ToChar("6"), Conversions.ToChar("6"), Conversions.ToChar("7"), Conversions.ToChar("8"), Conversions.ToChar("9"), Conversions.ToChar("0") };
            // Dim DigitPos As Integer
            string FileName, FileDirName;
            string SkillName, SkillLvl, SkillID;

            while (inFile.BaseStream.Position != inFile.BaseStream.Length)
            {
                ReadStr = SymbolCorrection(Strings.Replace(inFile.ReadLine(), Conversions.ToString((char)9), " "));
                // SkillData or not
                if ((Strings.Mid(ReadStr, 1, 11) ?? "") != "skill_begin")
                {
                    MessageBox.Show("File format is not npcdata. Invalid record is: " + Conversions.ToString((char)13)
                                    + Conversions.ToString((char)13) + ReadStr, "Invalid format", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                SkillName = GetNeedParamFromStr(ReadStr, "skill_name");
                SkillName = Strings.Mid(SkillName, 2, Strings.Len(SkillName) - 2);
                SkillID   = GetNeedParamFromStr(ReadStr, "skill_id");
                SkillLvl  = GetNeedParamFromStr(ReadStr, "level");

                SkillID = SkillID.PadLeft(4, Conversions.ToChar("0"));

                if (SkillName.IndexOfAny(Digit, Strings.Len(SkillName) - 3) > 0)
                {
                    SkillName = Strings.Mid(SkillName, 1, SkillName.IndexOfAny(Digit, Strings.Len(SkillName) - 3));
                }
                FileName = SkillID + "-" + SkillName + ".txt";

                FileDirName = FolderBrowserDialog.SelectedPath + @"\skill_begin\" + SkillID + "-" + SkillName;


                StatusBox.Text = "Please wait... Split skill: " + SkillName;
                this.Refresh();

                // == ART Correction ==
                ReadStr = SymbolCorrection(ReadStr);
                ReadStr = Strings.Replace(ReadStr, " = ", "=");
                ReadStr = Strings.Replace(ReadStr, Conversions.ToString((char)32), Conversions.ToString((char)9));

                int    TempRemPos = Strings.InStr(ReadStr, "/*");
                string Temp1;
                while (TempRemPos != 0)
                {
                    Temp1      = Strings.Mid(ReadStr, TempRemPos, Strings.InStr(TempRemPos, ReadStr, "*/") - TempRemPos + 2);
                    ReadStr    = Strings.Replace(ReadStr, Temp1, Strings.Replace(Temp1, Conversions.ToString((char)9), Conversions.ToString((char)32)));
                    TempRemPos = Strings.InStr(TempRemPos + 1, ReadStr, "/*");
                }


                // If last Skill or not?
                if (System.IO.Directory.Exists(FileDirName) == false)
                {
                    System.IO.Directory.CreateDirectory(FileDirName);
                    System.IO.Stream oAiFile = new System.IO.FileStream(FileDirName + @"\" + FileName, System.IO.FileMode.Create);
                    var outAiData            = new System.IO.StreamWriter(oAiFile, System.Text.Encoding.Unicode, 1);
                    outAiData.WriteLine(ReadStr);
                    outAiData.Close();
                }
                else
                {
                    System.IO.Stream oAiFile = new System.IO.FileStream(FileDirName + @"\" + FileName, System.IO.FileMode.Append, System.IO.FileAccess.Write);
                    var outAiData            = new System.IO.StreamWriter(oAiFile, System.Text.Encoding.Unicode, 1);
                    outAiData.WriteLine(ReadStr);
                    outAiData.Close();
                }

                ProgressBar.Value = Conversions.ToInteger(inFile.BaseStream.Position * 100 / (double)inFile.BaseStream.Length);
            }

            StatusBox.Text    = "Splitting done.";
            ProgressBar.Value = 0;
            inFile.Close();
        }