public void t歌詞テクスチャを生成する(string str歌詞)
 {
     using (var bmpleric = this.pf歌詞フォント.DrawPrivateFont(str歌詞, TJAPlayer4.Skin.Game_Lyric_ForeColor, TJAPlayer4.Skin.Game_Lyric_BackColor))
     {
         this.tx歌詞テクスチャ = TJAPlayer4.tテクスチャの生成(bmpleric, false);
     }
 }
        private bool tプレビュー画像の指定があれば構築する()
        {
            Cスコア cスコア = TJAPlayer4.stage選曲.r現在選択中のスコア;

            if ((cスコア == null) || string.IsNullOrEmpty(cスコア.譜面情報.Preimage))
            {
                return(false);
            }
            string str = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Preimage;

            if (!str.Equals(this.str現在のファイル名))
            {
                TJAPlayer4.tテクスチャの解放(ref this.txプレビュー画像);
                this.str現在のファイル名 = str;
                if (!File.Exists(this.str現在のファイル名))
                {
                    Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { this.str現在のファイル名 });
                    return(false);
                }
                this.txプレビュー画像 = TJAPlayer4.tテクスチャの生成(this.str現在のファイル名, false);
                if (this.txプレビュー画像 != null)
                {
                    this.r表示するプレビュー画像 = this.txプレビュー画像;
                }
                else
                {
                    this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像;
                }
            }
            return(true);
        }
Beispiel #3
0
        protected void Initialize(List <CItemBase> menulist, bool showAllItems, string title, int defaultPos)
        {
            ConditionallyInitializePrvFont();

            stqMenuTitle              = new stQuickMenuItem();
            stqMenuTitle.cItem        = new CItemBase();
            stqMenuTitle.cItem.str項目名 = title;
            using (var bitmap = prvFont.DrawPrivateFont(title, Color.White, Color.Black))
            {
                stqMenuTitle.txName   = TJAPlayer4.tテクスチャの生成(bitmap, false);
                stqMenuTitle.rectName = prvFont.RectStrings;
            }
            lciMenuItems = new stQuickMenuItem[menulist.Count];
            for (int i = 0; i < menulist.Count; i++)
            {
                stQuickMenuItem stqm = new stQuickMenuItem();
                stqm.cItem = menulist[i];
                using (var bitmap = prvFont.DrawPrivateFont(menulist[i].str項目名, Color.White, Color.Black))
                {
                    stqm.txName   = TJAPlayer4.tテクスチャの生成(bitmap, false);
                    stqm.rectName = prvFont.RectStrings;
                }
                lciMenuItems[i] = stqm;
            }

            bShowAllItems = showAllItems;
            n現在の選択行       = defaultPos;
        }
Beispiel #4
0
        public override void OnManagedリソースの作成()
        {
            if (!base.b活性化してない)
            {
                this.tx背景 = TJAPlayer4.tテクスチャの生成(this.strSTAGEFILE, false);
                //this.txSongnamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\6_SongnamePlate.png" ) );
                this.ct待機   = new CCounter(0, 600, 5, TJAPlayer4.Timer);
                this.ct曲名表示 = new CCounter(1, 30, 30, TJAPlayer4.Timer);
                try
                {
                    // When performing calibration, inform the player that
                    // calibration is about to begin, rather than
                    // displaying the song title and subtitle as usual.

                    var タイトル = TJAPlayer4.IsPerformingCalibration
                                        ? "Input calibration is about to begin."
                                        : this.str曲タイトル;

                    var サブタイトル = TJAPlayer4.IsPerformingCalibration
                                        ? "Please play as accurately as possible."
                                        : this.strサブタイトル;

                    if (!string.IsNullOrEmpty(タイトル))
                    {
                        //this.txタイトル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
                        //this.txタイトル.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f );


                        using (var bmpSongTitle = this.pfTITLE.DrawPrivateFont(タイトル, TJAPlayer4.Skin.SongLoading_Title_ForeColor, TJAPlayer4.Skin.SongLoading_Title_BackColor))

                        {
                            this.txタイトル       = new CTexture(TJAPlayer4.app.Device, bmpSongTitle, TJAPlayer4.TextureFormat, false);
                            txタイトル.vc拡大縮小倍率.X = TJAPlayer4.GetSongNameXScaling(ref txタイトル, 710);
                        }

                        using (var bmpSongSubTitle = this.pfSUBTITLE.DrawPrivateFont(サブタイトル, TJAPlayer4.Skin.SongLoading_SubTitle_ForeColor, TJAPlayer4.Skin.SongLoading_SubTitle_BackColor))


                        {
                            this.txサブタイトル = new CTexture(TJAPlayer4.app.Device, bmpSongSubTitle, TJAPlayer4.TextureFormat, false);
                        }
                    }
                    else
                    {
                        this.txタイトル   = null;
                        this.txサブタイトル = null;
                    }
                }
                catch (CTextureCreateFailedException e)
                {
                    Trace.TraceError(e.ToString());
                    Trace.TraceError("テクスチャの生成に失敗しました。({0})", new object[] { this.strSTAGEFILE });
                    this.txタイトル   = null;
                    this.txサブタイトル = null;
                    this.tx背景     = null;
                }
                base.OnManagedリソースの作成();
            }
        }
 public override void OnManagedリソースの作成()
 {
     if (!base.b活性化してない)
     {
         this.txオプションパネル = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\Screen option panels.png"), false);
         base.OnManagedリソースの作成();
     }
 }
Beispiel #6
0
        // CActivity 実装

        public override void OnManagedリソースの作成()
        {
            if (!base.b活性化してない)
            {
                this.tx数値 = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect level numbers.png"));
                base.OnManagedリソースの作成();
            }
        }
Beispiel #7
0
 public override void OnManagedリソースの作成()
 {
     if (!base.b活性化してない)
     {
         Dan_Plate = TJAPlayer4.tテクスチャの生成(Path.GetDirectoryName(TJAPlayer4.DTX[0].strファイル名の絶対パス) + @"\Dan_Plate.png");
         base.OnManagedリソースの作成();
     }
 }
Beispiel #8
0
 public override void OnManagedリソースの作成()
 {
     if (!base.b活性化してない)
     {
         this.tx背景 = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\1_Title\Background.png"), false);
         base.OnManagedリソースの作成();
     }
 }
Beispiel #9
0
 public override void OnManagedリソースの作成()
 {
     if (!base.b活性化してない)
     {
         this.txInfo_Back = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_information_BG.png"));
         this.txInfo[0]   = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_information.png"));
         this.txInfo[1]   = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_information2.png"));
         base.OnManagedリソースの作成();
     }
 }
Beispiel #10
0
 public override void OnManagedリソースの作成()
 {
     if (TJAPlayer4.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan)
     {
         return;
     }
     Dan_Plate     = TJAPlayer4.tテクスチャの生成(Path.GetDirectoryName(TJAPlayer4.DTX[0].strファイル名の絶対パス) + @"\Dan_Plate.png");
     Sound_Section = TJAPlayer4.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Dan\Section.ogg"), ESoundGroup.SoundEffect);
     Sound_Failed  = TJAPlayer4.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Dan\Failed.ogg"), ESoundGroup.SoundEffect);
     base.OnManagedリソースの作成();
 }
Beispiel #11
0
        public override void OnManagedリソースの作成()
        {
            if (!base.b活性化してない)
            {
                string pathパネル本体 = CSkin.Path(@"Graphics\ScreenSelect popup auto settings.png");
                if (File.Exists(pathパネル本体))
                {
                    this.txパネル本体 = TJAPlayer4.tテクスチャの生成(pathパネル本体, true);
                }

                base.OnManagedリソースの作成();
            }
        }
 public override void OnManagedリソースの作成()
 {
     if (!base.b活性化してない)
     {
         string pathScrollBar      = CSkin.Path(@"Graphics\5_scrollbar.png");
         string pathScrollPosition = CSkin.Path(@"Graphics\5_scrollbar.png");
         if (File.Exists(pathScrollBar))
         {
             this.txScrollBar = TJAPlayer4.tテクスチャの生成(pathScrollBar, false);
         }
         if (File.Exists(pathScrollPosition))
         {
             this.txScrollPosition = TJAPlayer4.tテクスチャの生成(pathScrollPosition, false);
         }
         base.OnManagedリソースの作成();
     }
 }
 public override void OnManagedリソースの作成()
 {
     if (!base.b活性化してない)
     {
         this.txパネル本体 = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage panel.png"), false);
         this.txセンサ   = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_sensor.png"), false);
         //this.txセンサ光 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_sensor light.png" ), false );
         this.txプレビュー画像         = null;
         this.txプレビュー画像がないときの画像 = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false);
         this.sfAVI画像           = Surface.CreateOffscreenPlain(TJAPlayer4.app.Device.UnderlyingDevice, 0xcc, 0x10d, TJAPlayer4.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.SystemMemory);
         this.nAVI再生開始時刻        = -1;
         this.n前回描画したフレーム番号     = -1;
         this.b動画フレームを作成した      = false;
         this.pAVIBmp           = IntPtr.Zero;
         this.tプレビュー画像_動画の変更();
         base.OnManagedリソースの作成();
     }
 }
Beispiel #14
0
        private bool tプレビュー画像の指定があれば構築する()
        {
            if (string.IsNullOrEmpty(TJAPlayer4.DTX[0].PREIMAGE))
            {
                return(false);
            }
            TJAPlayer4.tテクスチャの解放(ref this.txリザルト画像);
            this.r表示するリザルト画像 = null;
            string path = TJAPlayer4.DTX[0].strフォルダ名 + TJAPlayer4.DTX[0].PREIMAGE;

            if (!File.Exists(path))
            {
                Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });
                return(false);
            }
            this.txリザルト画像    = TJAPlayer4.tテクスチャの生成(path);
            this.r表示するリザルト画像 = this.txリザルト画像;
            return(this.r表示するリザルト画像 != null);
        }
Beispiel #15
0
        public override void OnManagedリソースの作成()
        {
            if (this.b活性化してない)
            {
                return;
            }

            this.tx背景   = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_diffselect_background.png"));
            this.txヘッダー = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_diffselect_header_panel.png"));
            this.txフッター = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_footer panel.png"));

            this.tx説明背景 = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_information_BG.png"));
            this.tx説明1  = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_information.png"));

            this.soundSelectAnnounce = TJAPlayer4.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\DiffSelect.ogg"), ESoundGroup.SoundEffect);

            for (int i = 0; i < (int)Difficulty.Total; i++)
            {
                this.tx踏み台[i] = TJAPlayer4.tテクスチャの生成(CSkin.Path(@"Graphics\5_diffSelect_table" + i.ToString() + @".png"));
            }

            base.OnManagedリソースの作成();
        }
Beispiel #16
0
        public override void OnManagedリソースの作成()                                                                                         // OPTIONと画像以外共通
        {
            if (!base.b活性化してない)
            {
                //this.tx背景 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\4_background.jpg" ), false );
                //this.tx上部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\4_header panel.png" ) );
                //this.tx下部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\4_footer panel.png" ) );
                //this.txMenuカーソル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig menu cursor.png" ) );
                string[] strMenuItem = { "System", "Drums", "Exit" };
                txMenuItemLeft = new CTexture[strMenuItem.Length, 2];
                using (var prvFont = new CPrivateFastFont(CSkin.Path(@"mplus-1p-heavy.ttf"), 20))
                {
                    for (int i = 0; i < strMenuItem.Length; i++)
                    {
                        using (var bmpStr = prvFont.DrawPrivateFont(strMenuItem[i], Color.White, Color.Black))
                        {
                            txMenuItemLeft[i, 0] = TJAPlayer4.tテクスチャの生成(bmpStr, false);
                        }
                        using (var bmpStr = prvFont.DrawPrivateFont(strMenuItem[i], Color.White, Color.Black, Color.Yellow, Color.OrangeRed))
                        {
                            txMenuItemLeft[i, 1] = TJAPlayer4.tテクスチャの生成(bmpStr, false);
                        }
                    }
                }

                if (this.bメニューにフォーカス中)
                {
                    this.t説明文パネルに現在選択されているメニューの説明を描画する();
                }
                else
                {
                    this.t説明文パネルに現在選択されている項目の説明を描画する();
                }
                base.OnManagedリソースの作成();
            }
        }
Beispiel #17
0
        // CActivity 実装

        public override void On活性化()
        {
            if (!string.IsNullOrEmpty(TJAPlayer4.ConfigIni.FontName))
            {
                this.pfMusicName = new CPrivateFastFont(new FontFamily(TJAPlayer4.ConfigIni.FontName), TJAPlayer4.Skin.Result_MusicName_FontSize);
                this.pfStageText = new CPrivateFastFont(new FontFamily(TJAPlayer4.ConfigIni.FontName), TJAPlayer4.Skin.Result_StageText_FontSize);
            }
            else
            {
                this.pfMusicName = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer4.Skin.Result_MusicName_FontSize);
                this.pfStageText = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer4.Skin.Result_StageText_FontSize);
            }

            // After performing calibration, inform the player that
            // calibration has been completed, rather than
            // displaying the song title as usual.


            var title = TJAPlayer4.IsPerformingCalibration
                        ? $"Calibration complete. InputAdjustTime is now {TJAPlayer4.ConfigIni.nInputAdjustTimeMs}ms"
                        : TJAPlayer4.DTX[0].TITLE;

            using (var bmpSongTitle = pfMusicName.DrawPrivateFont(title, TJAPlayer4.Skin.Result_MusicName_ForeColor, TJAPlayer4.Skin.Result_MusicName_BackColor))

            {
                this.txMusicName       = TJAPlayer4.tテクスチャの生成(bmpSongTitle, false);
                txMusicName.vc拡大縮小倍率.X = TJAPlayer4.GetSongNameXScaling(ref txMusicName);
            }

            using (var bmpStageText = pfStageText.DrawPrivateFont(TJAPlayer4.Skin.Game_StageText, TJAPlayer4.Skin.Result_StageText_ForeColor, TJAPlayer4.Skin.Result_StageText_BackColor))
            {
                this.txStageText = TJAPlayer4.tテクスチャの生成(bmpStageText, false);
            }

            base.On活性化();
        }
Beispiel #18
0
 internal CTexture TxC(string FileName)
 {
     return(TJAPlayer4.tテクスチャの生成(CSkin.Path(BASE + FileName)));
 }
Beispiel #19
0
        public override int On進行描画()
        {
            string str;

            if (base.b活性化してない)
            {
                return(0);
            }

            #region [ 初めての進行描画 ]
            //-----------------------------
            if (base.b初めての進行描画)
            {
                Cスコア cスコア1 = TJAPlayer4.stage選曲.r確定されたスコア;
                if (this.sd読み込み音 != null)
                {
                    if (TJAPlayer4.Skin.sound曲読込開始音.b排他 && (CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド != null))
                    {
                        CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド.t停止する();
                    }
                    this.sd読み込み音.t再生を開始する();
                    this.nBGM再生開始時刻   = CSound管理.rc演奏用タイマ.n現在時刻;
                    this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms;
                }
                else
                {
                    TJAPlayer4.Skin.sound曲読込開始音.t再生する();
                    this.nBGM再生開始時刻   = CSound管理.rc演奏用タイマ.n現在時刻;
                    this.nBGMの総再生時間ms = TJAPlayer4.Skin.sound曲読込開始音.n長さ_現在のサウンド;
                }
                //this.actFI.tフェードイン開始();							// #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略
                base.eフェーズID   = CStage.Eフェーズ.共通_フェードイン;
                base.b初めての進行描画 = false;

                nWAVcount        = 1;
                bitmapFilename   = new Bitmap(640, 24);
                graphicsFilename = Graphics.FromImage(bitmapFilename);
                graphicsFilename.TextRenderingHint = TextRenderingHint.AntiAlias;
                ftFilename = new Font("MS UI Gothic", 24f, FontStyle.Bold, GraphicsUnit.Pixel);
            }
            //-----------------------------
            #endregion
            this.ct待機.t進行();



            #region [ ESC押下時は選曲画面に戻る ]
            if (tキー入力())
            {
                if (this.sd読み込み音 != null)
                {
                    this.sd読み込み音.tサウンドを停止する();
                    this.sd読み込み音.t解放する();
                }
                return((int)E曲読込画面の戻り値.読込中止);
            }
            #endregion

            #region [ 背景、音符+タイトル表示 ]
            //-----------------------------
            this.ct曲名表示.t進行();
            if (this.tx背景 != null)
            {
                this.tx背景.t2D描画(TJAPlayer4.app.Device, 0, 0);
            }
            //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() );

            if (TJAPlayer4.Tx.SongLoading_Plate != null)
            {
                TJAPlayer4.Tx.SongLoading_Plate.bスクリーン合成 = TJAPlayer4.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い
                TJAPlayer4.Tx.SongLoading_Plate.Opacity  = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0));
                if (TJAPlayer4.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left)
                {
                    TJAPlayer4.Tx.SongLoading_Plate.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_Plate_X, TJAPlayer4.Skin.SongLoading_Plate_Y - (TJAPlayer4.Tx.SongLoading_Plate.sz画像サイズ.Height / 2));
                }
                else if (TJAPlayer4.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right)
                {
                    TJAPlayer4.Tx.SongLoading_Plate.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_Plate_X - TJAPlayer4.Tx.SongLoading_Plate.sz画像サイズ.Width, TJAPlayer4.Skin.SongLoading_Plate_Y - (TJAPlayer4.Tx.SongLoading_Plate.sz画像サイズ.Height / 2));
                }
                else
                {
                    TJAPlayer4.Tx.SongLoading_Plate.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_Plate_X - (TJAPlayer4.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), TJAPlayer4.Skin.SongLoading_Plate_Y - (TJAPlayer4.Tx.SongLoading_Plate.sz画像サイズ.Height / 2));
                }
            }
            //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() );


            int y = 720 - 45;
            if (this.txタイトル != null)
            {
                int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer4.stage選曲.r確定されたスコア.譜面情報.strサブタイトル) ? 15 : 0;

                this.txタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0));
                if (TJAPlayer4.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Left)
                {
                    this.txタイトル.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_Title_X, TJAPlayer4.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正);
                }
                else if (TJAPlayer4.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right)
                {
                    this.txタイトル.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_Title_X - (this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer4.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正);
                }
                else
                {
                    this.txタイトル.t2D描画(TJAPlayer4.app.Device, (TJAPlayer4.Skin.SongLoading_Title_X - ((this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer4.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正);
                }
            }
            if (this.txサブタイトル != null)
            {
                this.txサブタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0));
                if (TJAPlayer4.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left)
                {
                    this.txサブタイトル.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_SubTitle_X, TJAPlayer4.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2));
                }
                else if (TJAPlayer4.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right)
                {
                    this.txサブタイトル.t2D描画(TJAPlayer4.app.Device, TJAPlayer4.Skin.SongLoading_SubTitle_X - (this.txサブタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer4.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2));
                }
                else
                {
                    this.txサブタイトル.t2D描画(TJAPlayer4.app.Device, (TJAPlayer4.Skin.SongLoading_SubTitle_X - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer4.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2));
                }
            }
            //-----------------------------
            #endregion

            switch (base.eフェーズID)
            {
            case CStage.Eフェーズ.共通_フェードイン:
                //if( this.actFI.On進行描画() != 0 )			    // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略
                // 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。
                // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。
                base.eフェーズID = CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む;
                return((int)E曲読込画面の戻り値.継続);

            case CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む:
            {
                timeBeginLoad = DateTime.Now;
                TimeSpan span;
                str = null;
                if (!TJAPlayer4.bコンパクトモード)
                {
                    str = TJAPlayer4.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス;
                }
                else
                {
                    str = TJAPlayer4.strコンパクトモードファイル;
                }

                CScoreIni ini = new CScoreIni(str + ".score.ini");
                ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする();

                if ((TJAPlayer4.DTX[0] != null) && TJAPlayer4.DTX[0].b活性化してる)
                {
                    TJAPlayer4.DTX[0].On非活性化();
                }

                //if( CDTXMania.DTX == null )
                {
                    TJAPlayer4.DTX[0] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 0, true);
                    if (TJAPlayer4.ConfigIni.nPlayerCount == 2)
                    {
                        TJAPlayer4.DTX[1] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true);
                    }
                    if (File.Exists(TJAPlayer4.DTX[0].strフォルダ名 + @"\\set.def"))
                    {
                        TJAPlayer4.DTX[0] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true);
                        if (TJAPlayer4.ConfigIni.nPlayerCount == 2)
                        {
                            TJAPlayer4.DTX[1] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true);
                        }
                    }

                    Trace.TraceInformation("----曲情報-----------------");
                    Trace.TraceInformation("TITLE: {0}", TJAPlayer4.DTX[0].TITLE);
                    Trace.TraceInformation("FILE: {0}", TJAPlayer4.DTX[0].strファイル名の絶対パス);
                    Trace.TraceInformation("---------------------------");

                    span = (TimeSpan)(DateTime.Now - timeBeginLoad);
                    Trace.TraceInformation("DTX読込所要時間:           {0}", span.ToString());

                    // 段位認定モード用。
                    if (TJAPlayer4.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan && TJAPlayer4.DTX[0].List_DanSongs != null)
                    {
                        var pfTitle    = new CPrivateFont();
                        var pfSubTitle = new CPrivateFont();
                        if (!string.IsNullOrEmpty(TJAPlayer4.ConfigIni.FontName))
                        {
                            pfTitle    = new CPrivateFont(new FontFamily(TJAPlayer4.ConfigIni.FontName), 30);
                            pfSubTitle = new CPrivateFont(new FontFamily(TJAPlayer4.ConfigIni.FontName), 22);
                        }
                        else
                        {
                            pfTitle    = new CPrivateFont(new FontFamily("MS UI Gothic"), 30);
                            pfSubTitle = new CPrivateFont(new FontFamily("MS UI Gothic"), 22);
                        }

                        var titleForeColor    = TJAPlayer4.Skin.Game_DanC_Title_ForeColor;
                        var titleBackColor    = TJAPlayer4.Skin.Game_DanC_Title_BackColor;
                        var subtitleForeColor = TJAPlayer4.Skin.Game_DanC_SubTitle_ForeColor;
                        var subtitleBackColor = TJAPlayer4.Skin.Game_DanC_SubTitle_BackColor;

                        for (int i = 0; i < TJAPlayer4.DTX[0].List_DanSongs.Count; i++)
                        {
                            if (!string.IsNullOrEmpty(TJAPlayer4.DTX[0].List_DanSongs[i].Title))
                            {
                                using (var bmpSongTitle = pfTitle.DrawPrivateFont(TJAPlayer4.DTX[0].List_DanSongs[i].Title, titleForeColor, titleBackColor))
                                {
                                    TJAPlayer4.DTX[0].List_DanSongs[i].TitleTex            = TJAPlayer4.tテクスチャの生成(bmpSongTitle, false);
                                    TJAPlayer4.DTX[0].List_DanSongs[i].TitleTex.vc拡大縮小倍率.X = TJAPlayer4.GetSongNameXScaling(ref TJAPlayer4.DTX[0].List_DanSongs[i].TitleTex, 710);
                                }
                            }

                            if (!string.IsNullOrEmpty(TJAPlayer4.DTX[0].List_DanSongs[i].SubTitle))
                            {
                                using (var bmpSongSubTitle = pfSubTitle.DrawPrivateFont(TJAPlayer4.DTX[0].List_DanSongs[i].SubTitle, subtitleForeColor, subtitleBackColor))
                                {
                                    TJAPlayer4.DTX[0].List_DanSongs[i].SubTitleTex            = TJAPlayer4.tテクスチャの生成(bmpSongSubTitle, false);
                                    TJAPlayer4.DTX[0].List_DanSongs[i].SubTitleTex.vc拡大縮小倍率.X = TJAPlayer4.GetSongNameXScaling(ref TJAPlayer4.DTX[0].List_DanSongs[i].SubTitleTex, 710);
                                }
                            }
                        }

                        pfTitle?.Dispose();
                        pfSubTitle?.Dispose();
                    }
                }

                //2017.01.28 DD Config.iniに反映しないように変更

                /*
                 * switch( CDTXMania.DTX.nScoreModeTmp )
                 * {
                 *  case 0:
                 *      CDTXMania.ConfigIni.nScoreMode = 0;
                 *      break;
                 *  case 1:
                 *      CDTXMania.ConfigIni.nScoreMode = 1;
                 *      break;
                 *  case 2:
                 *      CDTXMania.ConfigIni.nScoreMode = 2;
                 *      break;
                 *  case -1:
                 *      CDTXMania.ConfigIni.nScoreMode = 1;
                 *      break;
                 * }
                 */

                base.eフェーズID     = CStage.Eフェーズ.NOWLOADING_WAV読み込み待機;
                timeBeginLoadWAV = DateTime.Now;
                return((int)E曲読込画面の戻り値.継続);
            }

            case CStage.Eフェーズ.NOWLOADING_WAV読み込み待機:
            {
                if (this.ct待機.n現在の値 > 260)
                {
                    base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む;
                }
                return((int)E曲読込画面の戻り値.継続);
            }

            case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む:
            {
                if (nWAVcount == 1 && TJAPlayer4.DTX[0].listWAV.Count > 0)                                                      // #28934 2012.7.7 yyagi (added checking Count)
                {
                    ShowProgressByFilename(TJAPlayer4.DTX[0].listWAV[nWAVcount].strファイル名);
                }
                int looptime = (TJAPlayer4.ConfigIni.b垂直帰線待ちを行う)? 3 : 1;                                        // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする
                for (int i = 0; i < looptime && nWAVcount <= TJAPlayer4.DTX[0].listWAV.Count; i++)
                {
                    if (TJAPlayer4.DTX[0].listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0)                                                // #28674 2012.5.8 yyagi
                    {
                        TJAPlayer4.DTX[0].tWAVの読み込み(TJAPlayer4.DTX[0].listWAV[nWAVcount]);
                    }
                    nWAVcount++;
                }
                if (nWAVcount <= TJAPlayer4.DTX[0].listWAV.Count)
                {
                    ShowProgressByFilename(TJAPlayer4.DTX[0].listWAV[nWAVcount].strファイル名);
                }
                if (nWAVcount > TJAPlayer4.DTX[0].listWAV.Count)
                {
                    TimeSpan span = ( TimeSpan )(DateTime.Now - timeBeginLoadWAV);
                    Trace.TraceInformation("WAV読込所要時間({0,4}):     {1}", TJAPlayer4.DTX[0].listWAV.Count, span.ToString());
                    timeBeginLoadWAV = DateTime.Now;

                    if (TJAPlayer4.ConfigIni.bDynamicBassMixerManagement)
                    {
                        TJAPlayer4.DTX[0].PlanToAddMixerChannel();
                    }
                    for (int nPlayer = 0; nPlayer < TJAPlayer4.ConfigIni.nPlayerCount; nPlayer++)
                    {
                        TJAPlayer4.DTX[nPlayer].t太鼓チップのランダム化(TJAPlayer4.ConfigIni.eRandom[nPlayer].Taiko);
                        //太鼓チップをランダム化する際、1P後2Pの処理をすぐに行うと、
                        //1Pと酷似した、もしくは全く同じチップが流れてしまうので、
                        //1Pのランダム化後、ある程度時間を空ける。
                        Stopwatch sw = new Stopwatch();
                        sw.Start();
                        for (int i = 0; i < 1;)
                        {
                            if (sw.ElapsedMilliseconds >= 500)
                            {
                                sw.Reset();
                                i++;
                            }
                        }
                    }
                    TJAPlayer4.stage演奏ドラム画面.On活性化();

                    span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV);

                    base.eフェーズID = CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む;
                }
                return((int)E曲読込画面の戻り値.継続);
            }

            case CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む:
            {
                TimeSpan span;
                DateTime timeBeginLoadBMPAVI = DateTime.Now;

                if (TJAPlayer4.ConfigIni.bAVI有効)
                {
                    TJAPlayer4.DTX[0].tAVIの読み込み();
                }
                span = ( TimeSpan )(DateTime.Now - timeBeginLoadBMPAVI);

                span = ( TimeSpan )(DateTime.Now - timeBeginLoad);
                Trace.TraceInformation("総読込時間:                {0}", span.ToString());

                if (TJAPlayer4.ConfigIni.FastRender)
                {
                    var fastRender = new FastRender();
                    fastRender.Render();
                    fastRender = null;
                }


                if (bitmapFilename != null)
                {
                    bitmapFilename.Dispose();
                    bitmapFilename = null;
                }
                if (graphicsFilename != null)
                {
                    graphicsFilename.Dispose();
                    graphicsFilename = null;
                }
                if (ftFilename != null)
                {
                    ftFilename.Dispose();
                    ftFilename = null;
                }
                TJAPlayer4.Timer.t更新();
                //CSound管理.rc演奏用タイマ.t更新();
                base.eフェーズID = CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ;
                return((int)E曲読込画面の戻り値.継続);
            }

            case CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ:
            {
                long nCurrentTime = TJAPlayer4.Timer.n現在時刻;
                if (nCurrentTime < this.nBGM再生開始時刻)
                {
                    this.nBGM再生開始時刻 = nCurrentTime;
                }

//						if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) )
                if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms))                                            // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間
                {
                    if (!TJAPlayer4.DTXVmode.Enabled)
                    {
                    }
                    base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
                }
                return((int)E曲読込画面の戻り値.継続);
            }

            case CStage.Eフェーズ.共通_フェードアウト:
                if (this.ct待機.b終了値に達してない)                                       // DTXVモード時は、フェードアウト省略
                {
                    return((int)E曲読込画面の戻り値.継続);
                }

                if (txFilename != null)
                {
                    txFilename.Dispose();
                }
                if (this.sd読み込み音 != null)
                {
                    this.sd読み込み音.t解放する();
                }
                return((int)E曲読込画面の戻り値.読込完了);
            }
            return((int)E曲読込画面の戻り値.継続);
        }
        // メソッド

        /// <summary>
        /// 右上の曲名、曲数表示の更新を行います。
        /// </summary>
        /// <param name="songName">曲名</param>
        /// <param name="genreName">ジャンル名</param>
        /// <param name="stageText">曲数</param>
        public void SetPanelString(string songName, string genreName, string stageText = null)
        {
            if (base.b活性化してる)
            {
                TJAPlayer4.tテクスチャの解放(ref this.txPanel);
                if ((songName != null) && (songName.Length > 0))
                {
                    try
                    {
                        using (var bmpSongTitle = pfMusicName.DrawPrivateFont(songName, TJAPlayer4.Skin.Game_MusicName_ForeColor, TJAPlayer4.Skin.Game_MusicName_BackColor))
                        {
                            this.txMusicName = TJAPlayer4.tテクスチャの生成(bmpSongTitle, false);
                        }
                        if (txMusicName != null)
                        {
                            this.txMusicName.vc拡大縮小倍率.X = TJAPlayer4.GetSongNameXScaling(ref txMusicName);
                        }

                        Bitmap bmpDiff;
                        string strDiff = "";
                        if (TJAPlayer4.Skin.eDiffDispMode == E難易度表示タイプ.n曲目に表示)
                        {
                            switch (TJAPlayer4.stage選曲.n確定された曲の難易度[0])
                            {
                            case 0:
                                strDiff = "かんたん ";
                                break;

                            case 1:
                                strDiff = "ふつう ";
                                break;

                            case 2:
                                strDiff = "むずかしい ";
                                break;

                            case 3:
                                strDiff = "おに ";
                                break;

                            case 4:
                                strDiff = "えでぃと ";
                                break;

                            default:
                                strDiff = "おに ";
                                break;
                            }
                            bmpDiff = pfMusicName.DrawPrivateFont(strDiff + stageText, TJAPlayer4.Skin.Game_StageText_ForeColor, TJAPlayer4.Skin.Game_StageText_BackColor);
                        }
                        else
                        {
                            bmpDiff = pfMusicName.DrawPrivateFont(stageText, TJAPlayer4.Skin.Game_StageText_ForeColor, TJAPlayer4.Skin.Game_StageText_BackColor);
                        }

                        using (bmpDiff)
                        {
                            this.tx難易度とステージ数 = TJAPlayer4.tテクスチャの生成(bmpDiff, false);
                        }
                    }
                    catch (CTextureCreateFailedException e)
                    {
                        Trace.TraceError(e.ToString());
                        Trace.TraceError("パネル文字列テクスチャの生成に失敗しました。");
                        this.txPanel = null;
                    }
                }
                if (!string.IsNullOrEmpty(genreName))
                {
                    if (genreName.Equals("アニメ"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Anime");
                    }
                    else if (genreName.Equals("J-POP"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("J-POP");
                    }
                    else if (genreName.Equals("ゲームミュージック"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Game");
                    }
                    else if (genreName.Equals("ナムコオリジナル"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Namco");
                    }
                    else if (genreName.Equals("クラシック"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Classic");
                    }
                    else if (genreName.Equals("どうよう"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Child");
                    }
                    else if (genreName.Equals("バラエティ"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Variety");
                    }
                    else if (genreName.Equals("ボーカロイド") || genreName.Equals("VOCALOID"))
                    {
                        this.txGENRE = TJAPlayer4.Tx.TxCGen("Vocaloid");
                    }
                    else
                    {
                        using (var bmpDummy = new Bitmap(1, 1))
                        {
                            this.txGENRE = TJAPlayer4.tテクスチャの生成(bmpDummy, true);
                        }
                    }
                }

                this.ct進行用 = new CCounter(0, 2000, 2, TJAPlayer4.Timer);
                this.Start();
            }
        }
Beispiel #21
0
 internal CTexture TxCGen(string FileName)
 {
     return(TJAPlayer4.tテクスチャの生成(CSkin.Path(BASE + GAME + GENRE + FileName + ".png")));
 }
Beispiel #22
0
        public int t進行描画()
        {
            if (!base.b活性化してない && this.bIsActivePopupMenu)
            {
                if (this.bキー入力待ち)
                {
                    #region [ Shift-F1: CONFIG画面 ]
                    if ((TJAPlayer4.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || TJAPlayer4.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)) &&
                        TJAPlayer4.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F1))
                    {                           // [SHIFT] + [F1] CONFIG
                        TJAPlayer4.Skin.sound取消音.t再生する();
                        tCancel();
                        this.bGotoDetailConfig = true;
                    }
                    #endregion
                    #region [ キー入力: キャンセル ]
                    else if ((TJAPlayer4.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) ||
                              TJAPlayer4.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT) ||
                              TJAPlayer4.Pad.b押されたGB(Eパッド.Cancel)) &&
                             this.bEsc有効)
                    {                           // キャンセル
                        TJAPlayer4.Skin.sound取消音.t再生する();
                        tCancel();
                        this.bIsActivePopupMenu = false;
                    }
                    #endregion

                    #region [ キー入力: 決定 ]
                    // E楽器パート eInst = E楽器パート.UNKNOWN;
                    ESortAction eAction = ESortAction.END;
                    if (TJAPlayer4.Pad.b押された(E楽器パート.GUITAR, Eパッド.Decide))
                    {
                        eInst   = E楽器パート.GUITAR;
                        eAction = ESortAction.Decide;
                    }
                    else if (TJAPlayer4.Pad.b押された(E楽器パート.BASS, Eパッド.Decide))
                    {
                        eInst   = E楽器パート.BASS;
                        eAction = ESortAction.Decide;
                    }
                    else if (
                        TJAPlayer4.Pad.b押された(E楽器パート.DRUMS, Eパッド.Decide) ||                              // #24756 2011.4.1 yyagi: Add condition "Drum-Decide" to enable CY in Sort Menu.
                        TJAPlayer4.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD) ||
                        TJAPlayer4.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) ||
                        (TJAPlayer4.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && TJAPlayer4.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return)))
                    {
                        eInst   = E楽器パート.DRUMS;
                        eAction = ESortAction.Decide;
                    }
                    if (eAction == ESortAction.Decide)                          // 決定
                    {
                        this.tEnter押下();
                    }
                    #endregion
                    #region [ キー入力: 前に移動 ]
                    this.ctキー反復用.Up.tキー反復(TJAPlayer4.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.t前に移動));
                    this.ctキー反復用.R.tキー反復(TJAPlayer4.Pad.b押されているGB(Eパッド.R), new CCounter.DGキー処理(this.t前に移動));
                    if (TJAPlayer4.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD))
                    {
                        this.t前に移動();
                    }
                    #endregion
                    #region [ キー入力: 次に移動 ]
                    this.ctキー反復用.Down.tキー反復(TJAPlayer4.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.t次に移動));
                    this.ctキー反復用.B.tキー反復(TJAPlayer4.Pad.b押されているGB(Eパッド.B), new CCounter.DGキー処理(this.t次に移動));
                    if (TJAPlayer4.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT))
                    {
                        this.t次に移動();
                    }
                    #endregion
                }
                #region [ ポップアップメニュー 背景描画 ]
                if (TJAPlayer4.Tx.Menu_Title != null)
                {
                    TJAPlayer4.Tx.Menu_Title.t2D描画(TJAPlayer4.app.Device, 160, 40);
                }
                #endregion
                #region [ ソートメニュータイトル描画 ]
                int x = 240, y = 44;
                stqMenuTitle.txName.t2D描画(TJAPlayer4.app.Device, x, y);
                #endregion
                #region [ カーソル描画 ]
                if (TJAPlayer4.Tx.Menu_Highlight != null)
                {
                    int height = 32;
                    int curX   = 180;
                    int curY   = 46 + (height * (this.n現在の選択行 + 1));
                    TJAPlayer4.Tx.Menu_Highlight.t2D描画(TJAPlayer4.app.Device, curX, curY, new Rectangle(0, 0, 16, 32));
                    curX += 0x10;
                    Rectangle rectangle = new Rectangle(8, 0, 0x10, 0x20);
                    for (int j = 0; j < 16; j++)
                    {
                        TJAPlayer4.Tx.Menu_Highlight.t2D描画(TJAPlayer4.app.Device, curX, curY, rectangle);
                        curX += 16;
                    }
                    TJAPlayer4.Tx.Menu_Highlight.t2D描画(TJAPlayer4.app.Device, curX, curY, new Rectangle(0x10, 0, 16, 32));
                }
                #endregion
                #region [ ソート候補文字列描画 ]
                for (int i = 0; i < lciMenuItems.Length; i++)
                {
                    bool bItemBold = (i == nItemSelecting && !bShowAllItems) ? true : false;
                    //font.t文字列描画( 190, 80 + i * 32, lciMenuItems[ i ].cItem.str項目名, bItemBold, 1.0f );
                    if (lciMenuItems[i].txName != null)
                    {
                        int height = lciMenuItems[i].rectName.Height;
                        lciMenuItems[i].txName.t2D描画(TJAPlayer4.app.Device, 180, 77 + i * 32);
                    }

                    bool bValueBold = (bItemBold || (i == nItemSelecting && bIsSelectingIntItem)) ? true : false;
                    if (bItemBold || bShowAllItems)
                    {
                        string s;
                        switch (lciMenuItems[i].cItem.str項目名)
                        {
                        case "演奏速度":
                        {
                            double d = (double)((int)lciMenuItems[i].cItem.obj現在値() / 20.0);
                            s = "x" + d.ToString("0.000");
                        }
                        break;

                        case "ばいそく":
                        {
                            double d = (double)((((int)lciMenuItems[i].cItem.obj現在値()) + 1) / 2.0);
                            s = "x" + d.ToString("0.0");
                        }
                        break;

                        default:
                            s = lciMenuItems[i].cItem.obj現在値().ToString();
                            break;
                        }
                        //font.t文字列描画( (int)(340 * Scale.X), (int)(80 + i * 32), s, bValueBold, 1.0f * Scale.Y);
                        using (var bmpStr = bValueBold ?
                                            prvFont.DrawPrivateFont(s, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :
                                            prvFont.DrawPrivateFont(s, Color.White, Color.Black))
                        {
                            using (var ctStr = TJAPlayer4.tテクスチャの生成(bmpStr, false))
                            {
                                ctStr.t2D描画(TJAPlayer4.app.Device, 330, 77 + i * 32);
                            }
                        }
                    }
                }
                #endregion
                t進行描画sub();
            }
            return(0);
        }