コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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.ステージ管理.最初のステージ名);
        }