private void Clear_B_Click(object sender, RoutedEventArgs e) { if (IsClosing) { return; } MessageBoxResult result = MessageBox.Show("追加されている.bnkファイルをすべてクリアしますか?", "確認", MessageBoxButton.YesNo, MessageBoxImage.Exclamation, MessageBoxResult.No); if (result == MessageBoxResult.Yes) { Bank_Names.Clear(); Event_Names.Clear(); Event_Name_List.Items.Clear(); Window_Show_Volumes.Clear(); Page = 0; IsInitSelected = false; Location_S.Value = 0; Location_S.Maximum = 0; Location_T.Text = "00:00"; Wwise_Player.Dispose(); Init_Bank_B.Visibility = Visibility.Visible; Init_Bank_Help_B.Visibility = Visibility.Visible; Bank_Name_T.Text = ""; Message_Feed_Out("内容をクリアしました。"); } }
async void Location_MouseUp(object sender, MouseButtonEventArgs e) { if (!IsLocationChanging) { return; } if (Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID == 0) { Wwise_Player.Set_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_Name, (int)Location_S.Value); } else { Wwise_Player.Set_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID, (int)Location_S.Value); } if (IsPlayingMouseDown) { IsPaused = false; Wwise_Player.Play_All(); IsPlayingMouseDown = false; } await Task.Delay(100); Location_Before = Location_S.Value; IsLocationChanging = false; }
private void Init_Bank_B_Click(object sender, RoutedEventArgs e) { if (IsClosing) { return; } if (Wwise_Player.IsExecution) { Message_Feed_Out("内容がクリアされていません。先に右下のクリアボタンを押す必要があります。"); return; } System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog() { Title = "Init.bnkを選択してください。", Filter = "Init.bnk(Init.bnk)|Init.bnk", Multiselect = false }; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { Wwise_Player.Dispose(); Wwise_Player.Init(ofd.FileName, 1, Volume_S.Value / 100); Init_Bank_B.Visibility = Visibility.Hidden; Init_Bank_Help_B.Visibility = Visibility.Hidden; IsInitSelected = true; } catch { Message_Feed_Out("エラーが発生しました。Wwiseを初期化できません。"); } } ofd.Dispose(); }
private void Pause_B_Click(object sender, RoutedEventArgs e) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing) { return; } Wwise_Player.Pause_All(false); IsPaused = true; }
private void Event_Name_List_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing || Event_Name_List.SelectedIndex == -1) { return; } Location_Before = 0; Location_S.Value = 0; Location_S.Maximum = Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length; Volume_S.Value = Event_Info[Page][Event_Name_List.SelectedIndex].Volume; }
private void Reload_B_Click(object sender, RoutedEventArgs e) { if (Event_Name_List.SelectedIndex == -1) { return; } Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length = Wwise_Player.Get_Max_Length(Event_Name_List.Items[Event_Name_List.SelectedIndex].ToString()); Location_S.Maximum = Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length; if (IsPaused) { Wwise_Player.Pause_All(false); } }
void Location_MouseDown(object sender, MouseButtonEventArgs e) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing || Event_Name_List.SelectedIndex == -1 || Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length <= 0) { return; } IsLocationChanging = true; if (!IsPaused) { IsPlayingMouseDown = true; Wwise_Player.Pause_All(false); IsPaused = true; } }
private void Page_Back_B_Click(object sender, RoutedEventArgs e) { if (IsClosing) { return; } if (Page == 0) { Message_Feed_Out("ページ既には最小値です。"); return; } Page--; Event_List_Change(); Wwise_Player.Stop(); }
private void Page_Next_B_Click(object sender, RoutedEventArgs e) { if (IsClosing) { return; } if (Page + 1 >= Bank_Names.Count) { Message_Feed_Out("ページが最大値を超えています。"); return; } Page++; Event_List_Change(); Wwise_Player.Stop(); }
private void Stop_B_Click(object sender, RoutedEventArgs e) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing) { return; } Wwise_Player.Stop(); IsPaused = false; for (int Number = 0; Number < Event_Info[Page].Count; Number++) { Event_Info[Page][Number].Max_Length = 0; } Location_S.Value = 0; Location_S.Maximum = 0; }
async void Volume_Feed_Out(bool IsStop, double Feed_Time = 12.5) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited()) { return; } Window_Show_Volumes = Wwise_Player.Get_Volume(); List <Container_und_Volume> Volumes = Wwise_Player.Get_Volume(); List <double> Volume_Minus = new List <double>(); for (int Number = 0; Number < Volumes.Count; Number++) { Volume_Minus.Add(Volumes[Number].Volume / Feed_Time); } while (true) { int Zero_Count = 0; for (int Number = 0; Number < Volumes.Count; Number++) { Volumes[Number].Volume -= Volume_Minus[Number]; if (Volumes[Number].Volume <= 0) { Volumes[Number].Volume = 0; Zero_Count++; } Wwise_Player.Set_Volume(Volumes[Number].Container_ID, Volumes[Number].Volume); } if (Zero_Count >= Volumes.Count) { break; } await Task.Delay(1000 / 60); } if (IsStop) { Wwise_Player.Stop(); Location_S.Value = 0; Location_S.Maximum = 0; } else { Wwise_Player.Pause_All(false); IsPaused = true; } }
public async void Window_Show() { Opacity = 0; Visibility = Visibility.Visible; Loop(); if (Window_Show_Volumes.Count > 0 && Wwise_Player.IsExecution && Wwise_Player.IsInited()) { for (int Number = 0; Number < Window_Show_Volumes.Count; Number++) { Wwise_Player.Set_Volume(Window_Show_Volumes[Number].Container_ID, Window_Show_Volumes[Number].Volume); } Window_Show_Volumes.Clear(); } while (Opacity < 1 && !IsClosing) { Opacity += Sub_Code.Window_Feed_Time; await Task.Delay(1000 / 60); } }
private void Volume_S_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { Volume_T.Text = "音量:" + (int)Volume_S.Value; if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing) { return; } if (Event_Name_List.SelectedIndex != -1) { if (Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID == 0) { Wwise_Player.Set_Volume(Event_Info[Page][Event_Name_List.SelectedIndex].Event_Name, Volume_S.Value / 100); } else { Wwise_Player.Set_Volume(Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID, Volume_S.Value / 100); } Event_Info[Page][Event_Name_List.SelectedIndex].Volume = Volume_S.Value; } }
private void Plus_B_Click(object sender, RoutedEventArgs e) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing) { return; } if (Bank_Names.Count > 0 && Event_Name_List.SelectedIndex != -1) { if (Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID == 0) { int Position_Now = Wwise_Player.Get_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_Name); Wwise_Player.Set_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_Name, Position_Now + 5000); } else { int Position_Now = Wwise_Player.Get_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID); Wwise_Player.Set_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID, Position_Now + 5000); } } }
private void Play_B_Click(object sender, RoutedEventArgs e) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited() || IsClosing) { return; } if (Event_Name_List.SelectedIndex == -1) { Message_Feed_Out("'イベント名またはID'を選択してください。"); return; } if (IsPaused) { Wwise_Player.Play_All(); IsPaused = false; } else { if (Event_Name_List.Items[Event_Name_List.SelectedIndex].ToString().All(char.IsDigit)) { uint Event_ID = uint.Parse(Event_Name_List.Items[Event_Name_List.SelectedIndex].ToString()); Wwise_Player.Stop(Event_ID); Wwise_Player.Play(Event_ID, Event_Info[Page][Event_Name_List.SelectedIndex].Container_ID); Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length = Wwise_Player.Get_Max_Length(Event_ID); Location_S.Value = 0; Location_S.Maximum = Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length; } else { Wwise_Player.Stop(Event_Name_List.Items[Event_Name_List.SelectedIndex].ToString()); Wwise_Player.Play(Event_Name_List.Items[Event_Name_List.SelectedIndex].ToString(), Event_Info[Page][Event_Name_List.SelectedIndex].Container_ID); Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length = Wwise_Player.Get_Max_Length(Event_Name_List.Items[Event_Name_List.SelectedIndex].ToString()); Location_S.Value = 0; Location_S.Maximum = Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length; } Wwise_Player.Set_Volume(Event_Info[Page][Event_Name_List.SelectedIndex].Container_ID, Event_Info[Page][Event_Name_List.SelectedIndex].Volume / 100); } }
private async void Load_Bank_B_Click(object sender, RoutedEventArgs e) { if (IsClosing) { return; } if (!File.Exists(Voice_Set.Special_Path + "\\Wwise\\SoundbanksInfo.json")) { Message_T.Text = "必要なデータをダウンロードしています...(約4.7MB)"; await Task.Delay(75); if (!Voice_Set.FTPClient.DownloadFile("/WoTB_Voice_Mod/Update/Wwise/SoundbanksInfo.json", Voice_Set.Special_Path + "\\Wwise\\SoundbanksInfo.json", true)) { Message_Feed_Out("エラー:データのダウンロードに失敗しました。処理を実行できません。"); return; } Message_T.Text = ""; await Task.Delay(75); } System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog() { Title = ".bnkファイルを選択してください。", Filter = ".bnkファイル(*.bnk)|*.bnk", Multiselect = true }; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { if (!IsInitSelected) { if (!Wwise_Player.IsExecution || !Wwise_Player.IsInited()) { if (Wwise_Player.Init(Voice_Set.Special_Path + "\\Other\\Init.bnk", 1, Volume_S.Value / 100)) { Init_Bank_B.Visibility = Visibility.Hidden; Init_Bank_Help_B.Visibility = Visibility.Hidden; } else { Message_Feed_Out("Wwiseを初期化できません。"); return; } } } foreach (string File_Now in ofd.FileNames) { if (!Wwise_Player.Load_Bank(File_Now)) { throw new Exception("ファイル:" + File_Now + "をロードできませんでした。\nエラーコード:" + Wwise_Player.Get_Result_Index()); } string Name_Only = Path.GetFileName(File_Now); IsMessageShowing = false; Message_T.Text = Name_Only + "を追加しています..."; await Task.Delay(50); if (Bank_Names.Contains(File_Now)) { Message_Feed_Out("既に同名のファイルが追加されています。\n" + Name_Only + "はスキップされます。"); continue; } BNK_Parse Wwise_BNK = new BNK_Parse(File_Now); Message_T.Text = Name_Only + "のIDを文字列に変換しています..."; List <string> Temp = Wwise_BNK.Get_BNK_Event_ID_To_String(); Wwise_BNK.Clear(); Event_ID_To_Name(Temp); Event_Names.Add(Temp); Event_Info.Add(new List <Name_ID_Contaier>()); for (int Number_01 = 0; Number_01 < Temp.Count; Number_01++) { Name_ID_Contaier Temp_01 = new Name_ID_Contaier(); if (Temp[Number_01].All(char.IsDigit)) { Temp_01.Event_Name = ""; Temp_01.Event_ID = uint.Parse(Temp[Number_01]); } else { Temp_01.Event_Name = Temp[Number_01]; Temp_01.Event_ID = 0; } Temp_01.Max_Length = 0; Temp_01.Container_ID = r.Next(1, 1000000); Temp_01.Volume = Volume_S.Value; Event_Info[Event_Info.Count - 1].Add(Temp_01); } Bank_Names.Add(File_Now); if (Page + 1 < Bank_Names.Count) { Page_Next_B.Visibility = Visibility.Visible; } } Event_List_Change(); Message_Feed_Out(".bnkファイルを読み込みました。"); } catch (Exception e1) { Message_Feed_Out("エラーが発生しました。"); Sub_Code.Error_Log_Write(e1.Message); return; } } ofd.Dispose(); }
async void Loop() { double nextFrame = (double)Environment.TickCount; double period = 1000.0 / 30.0; while (Visibility == Visibility.Visible) { //FPSを上回っていたらスキップ double tickCount = (double)Environment.TickCount; if (tickCount < nextFrame) { if (nextFrame - tickCount > 1) { await Task.Delay((int)(nextFrame - tickCount)); } System.Windows.Forms.Application.DoEvents(); continue; } if (Bank_Names.Count > 0) { /*List<int> Temp = Wwise_Player.Get_End_Event_List(); * if (Temp.Count > 0) * { * string Text = ""; * for (int Number = 0; Number < Event_Info[Page].Count; Number++) * { * if (Temp.Contains(Event_Info[Page][Number].Container_ID)) * { * if (Text == "") * Text = Event_Info[Page][Number].Container_ID.ToString(); * else * Text += " | " + Event_Info[Page][Number].Container_ID; * Event_Info[Page][Number].Max_Length = 0; * } * } * Message_Feed_Out("次のIDのイベントは終了されました : " + Text); * } * Temp.Clear();*/ if (Event_Name_List.SelectedIndex != -1 && Location_S.Maximum > 0 && !IsLocationChanging && !IsPaused) { int Position_Now = 0; if (Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID == 0) { Position_Now = Wwise_Player.Get_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_Name); if (Location_S.Maximum >= Position_Now) { Location_S.Value = Position_Now; } else { Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length = Wwise_Player.Get_Max_Length(Event_Info[Page][Event_Name_List.SelectedIndex].Event_Name); Location_S.Value = 0; Location_S.Maximum = Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length; } } else { Position_Now = Wwise_Player.Get_Position(Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID); if (Location_S.Maximum >= Position_Now) { Location_S.Value = Position_Now; } else { uint Event_ID = Event_Info[Page][Event_Name_List.SelectedIndex].Event_ID; Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length = Wwise_Player.Get_Max_Length(Event_ID); Location_S.Value = 0; Location_S.Maximum = Event_Info[Page][Event_Name_List.SelectedIndex].Max_Length; } } } TimeSpan Time = TimeSpan.FromSeconds(Location_S.Value / 1000); string Minutes = Time.Minutes.ToString(); string Seconds = Time.Seconds.ToString(); if (Time.Minutes < 10) { Minutes = "0" + Time.Minutes; } if (Time.Seconds < 10) { Seconds = "0" + Time.Seconds; } Location_T.Text = Minutes + ":" + Seconds; } //次のフレーム時間を計算 if ((double)System.Environment.TickCount >= nextFrame + period) { nextFrame += period; continue; } nextFrame += period; } }