public new void Dispose() { using (Log.Block(FDKUtilities.現在のメソッド名)) { this._非活性化する(); App.ユーザ管理?.Dispose(); App.ユーザ管理 = null; App.ドラムサウンド?.Dispose(); App.ドラムサウンド = null; App.WAV管理?.Dispose(); // サウンドデバイスより先に開放すること App.WAV管理 = null; App.サウンドタイマ?.Dispose(); App.サウンドタイマ = null; App.サウンドデバイス?.Dispose(); App.サウンドデバイス = null; App.演奏スコア?.Dispose(); App.演奏スコア = null; App.曲ツリー.Dispose(); App.曲ツリー = null; App.ステージ管理.Dispose(App.グラフィックデバイス); App.ステージ管理 = null; App.入力管理.Dispose(); App.入力管理 = null; App.システム設定.保存する(); App.システム設定 = null; base.Dispose(); } }
public App() : base(設計画面サイズ: new SizeF(1920f, 1080f), 物理画面サイズ: new SizeF(1280f, 720f), 深度ステンシルを使う: false) { #region " プロダクトバージョンのメジャー番号をリリース番号として取得する。" //---------------- if (int.TryParse(Application.ProductVersion.Split('.').ElementAt(0), out int release)) { App.リリース番号 = release; } else { throw new Exception("アセンブリのプロダクトバージョンに記載ミスがあります。"); } //---------------- #endregion this.Text = Application.ProductName + " rel." + App.リリース番号.ToString("000"); var exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); VariablePath.フォルダ変数を追加または更新する("Exe", $@"{exePath}\"); VariablePath.フォルダ変数を追加または更新する("System", Path.Combine(exePath, @"System\")); VariablePath.フォルダ変数を追加または更新する("AppData", Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.Create), @"DTXMatixx\")); if (!(Directory.Exists(VariablePath.フォルダ変数の内容を返す("AppData")))) { Directory.CreateDirectory(VariablePath.フォルダ変数の内容を返す("AppData")); // なければ作成。 } App.乱数 = new Random(DateTime.Now.Millisecond); App.システム設定 = システム設定.復元する(); App.入力管理 = new 入力管理(this.Handle) { キーバインディングを取得する = () => App.システム設定.キーバインディング, キーバインディングを保存する = () => App.システム設定.保存する(), }; App.入力管理.Initialize(); App.ステージ管理 = new ステージ管理(); App.曲ツリー = new 曲ツリー(); App.演奏スコア = null; App.WAV管理 = null; App.サウンドデバイス = new SoundDevice(CSCore.CoreAudioAPI.AudioClientShareMode.Shared); App.サウンドタイマ = new SoundTimer(App.サウンドデバイス); App.ドラムサウンド = new ドラムサウンド(); App.ユーザ管理 = new ユーザ管理(); #if DEBUG_ App.ユーザ管理.ユーザリスト.SelectItem((user) => (user.ユーザID == "Guest")); App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.LeftCrash] = true; App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.HiHat] = true; App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.Foot] = true; App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.Snare] = false; // スネアと App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.Bass] = false; // バスだけ手動 App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.Tom1] = true; App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.Tom2] = true; App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.Tom3] = true; App.ユーザ管理.ログオン中のユーザ.AutoPlay[AutoPlay種別.RightCrash] = true; #else App.ユーザ管理.ユーザリスト.SelectItem((user) => (user.ユーザID == "AutoPlayer")); // ひとまずAutoPlayerを選択。 #endif this._活性化する(); base.全画面モード = App.ユーザ管理.ログオン中のユーザ.全画面モードである; // 最初のステージへ遷移する。 App.ステージ管理.ステージを遷移する(App.グラフィックデバイス, App.ステージ管理.最初のステージ名); }