示例#1
0
        private async void Save_B_Click(object sender, RoutedEventArgs e)
        {
            if (IsClosing)
            {
                return;
            }
            if (Change_List.Items.Count == 0)
            {
                Message_Feed_Out("変更点が見つかりませんでした。");
                return;
            }
            try
            {
                string Save_Ex;
                if (IsPCKFile)
                {
                    Save_Ex = "*.pck";
                }
                else
                {
                    Save_Ex = "*.bnk";
                }
                SaveFileDialog sfd = new SaveFileDialog()
                {
                    Title  = "保存先を指定してください。",
                    Filter = "WoTBサウンドファイル(" + Save_Ex + ")|" + Save_Ex
                };
                if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    Border_All.Visibility = Visibility.Visible;
                    if (Directory.Exists(Voice_Set.Special_Path + "/Wwise/Temp"))
                    {
                        Directory.Delete(Voice_Set.Special_Path + "/Wwise/Temp", true);
                    }
                    Directory.CreateDirectory(Voice_Set.Special_Path + "/Wwise/Temp");
                    int Number = 0;
                    IsMessageShowing  = false;
                    Message_T.Opacity = 1;
                    foreach (string Name in Change_List.Items)
                    {
                        int Index = int.Parse(Name.Substring(0, Name.IndexOf(':'))) - 1;
                        Message_T.Text = (Index + 1) + "番目の項目をWEMファイルに変換しています...";
                        await Task.Delay(50);

                        Sub_Code.File_To_WEM(Change_Sound_Full_Name[Number], Voice_Set.Special_Path + "/Wwise/Temp/" + (Index + 1) + ".wem", true);
                        if (!IsPCKFile)
                        {
                            Message_T.Text = (Index + 1) + "番目の項目をBNKファイルに差し替えています...";
                            await Task.Delay(50);

                            Wwise_Bnk.Bank_Edit_Sound(Index, Voice_Set.Special_Path + "/Wwise/Temp/" + (Index + 1) + ".wem", false);
                        }
                        Number++;
                    }
                    Message_T.Text = "BNKファイルを保存しています...";
                    await Task.Delay(50);

                    if (IsPCKFile)
                    {
                        Wwise_Pck.Wwise_PCK_Save(sfd.FileName, Voice_Set.Special_Path + "/Wwise/Temp", true);
                    }
                    else
                    {
                        Wwise_Bnk.Bank_Save(sfd.FileName);
                    }
                    Border_All.Visibility = Visibility.Hidden;
                    Message_Feed_Out("変更を保存しました。");
                    Directory.Delete(Voice_Set.Special_Path + "/Wwise/Temp", true);
                }
            }
            catch (Exception e1)
            {
                Sub_Code.Error_Log_Write(e1.Message);
                Message_Feed_Out("エラーが発生しました。");
                Border_All.Visibility = Visibility.Hidden;
            }
        }
示例#2
0
 //音声ファイルの言語を変更
 //例:/Data/WwiseSound/ja/voiceover_crew.bnk -> /Data/WwiseSound/en/voiceover_crew.bnk
 //bnk内のIDが異なるためそのままコピーすることはできません。
 public static void Voice_Change_Language(string From_BNK_File, string To_BNK_File, string Set_Language)
 {
     if (!File.Exists(Voice_Set.Special_Path + "/Wwise/SoundbanksInfo.json") || !File.Exists(From_BNK_File))
     {
         return;
     }
     try
     {
         Wwise_Class.Wwise_File_Extract_V2 Wwise_Bnk = new Wwise_Class.Wwise_File_Extract_V2(From_BNK_File);
         if (Directory.Exists(Voice_Set.Special_Path + "/Voice_Temp"))
         {
             Directory.Delete(Voice_Set.Special_Path + "/Voice_Temp", true);
         }
         Wwise_Bnk.Wwise_Extract_To_WEM_Directory(Voice_Set.Special_Path + "/Voice_Temp", 1);
         string Get_Language_ID = Wwise_Bnk.Wwise_Get_Name(0);
         Wwise_Bnk.Bank_Clear();
         StreamReader str              = new StreamReader(Voice_Set.Special_Path + "/Wwise/SoundbanksInfo.json");
         string       Read_Line        = "";
         int          Number           = 0;
         string       Get_Language_Now = "";
         while ((Read_Line = str.ReadLine()) != null)
         {
             if (Read_Line == "        \"Id\": \"" + Get_Language_ID + "\"")
             {
                 Get_Language_Now = File.ReadLines(Voice_Set.Special_Path + "/Wwise/SoundbanksInfo.json").Skip(Number + 1).First().Replace("        \"Language\": \"", "").Replace("\"", "");
             }
             Number++;
         }
         str.Close();
         if (Get_Language_Now != "")
         {
             List <string> Replace_Name_Voice = Get_Voices_ID(Get_Language_Now);
             foreach (string Replace_Name_Now in Replace_Name_Voice)
             {
                 string Name_Only = Replace_Name_Now.Substring(0, Replace_Name_Now.IndexOf(':'));
                 string ID_Only   = Replace_Name_Now.Substring(Replace_Name_Now.IndexOf(':') + 1);
                 File_Move(Voice_Set.Special_Path + "/Voice_Temp/" + ID_Only + ".wem", Voice_Set.Special_Path + "/Voice_Temp/" + Name_Only.Replace(".wav", ".wem"), true);
             }
             List <string> Get_Set_Language_ID = Get_Voices_ID(Set_Language);
             Wwise_Class.Wwise_File_Extract_V2 Wwise_Bnk_02 = new Wwise_Class.Wwise_File_Extract_V2(Voice_Set.Special_Path + "/Voice_Temp/voiceover_crew.bnk");
             List <string> New_ID = Wwise_Bnk_02.Wwise_Get_Names();
             for (int Number_01 = 0; Number_01 < New_ID.Count; Number_01++)
             {
                 foreach (string ID in Get_Set_Language_ID)
                 {
                     string Name_Only = ID.Substring(0, ID.IndexOf(':')).Replace(".wav", ".wem");
                     string ID_Only   = ID.Substring(ID.IndexOf(':') + 1);
                     if (ID_Only == New_ID[Number_01])
                     {
                         Wwise_Bnk_02.Bank_Edit_Sound(Number_01, Voice_Set.Special_Path + "/Voice_Temp/" + Name_Only, false);
                     }
                 }
             }
             Wwise_Bnk_02.Bank_Save(To_BNK_File);
             Wwise_Bnk_02.Bank_Clear();
         }
         else
         {
             Error_Log_Write("指定された.bnkファイルは音声ファイルでない可能性があります。");
         }
     }
     catch (Exception e)
     {
         Error_Log_Write(e.Message);
     }
 }