예제 #1
0
        /// <summary>
        /// フェードアウト処理
        /// </summary>
        /// <param name="milliTime">フェードアウトする時間(ミリ秒)</param>
        /// <returns>フェードアウト中はFALSE / フェードアウト終了はTRUE</returns>
        public bool FadeOutPlayAudio(int milliTime)
        {
            //最初のフェードアウト処理のとき
            if (this.fadeOutCnt == 0)
            {
                float MilliSec = 1000.0f;   //1秒は1000ミリ秒

                //流し続ける時間=秒数×FPS値
                //例)60FPSのゲームで、1秒間流し続けるなら、1秒×60FPS
                float UpdateTime = (milliTime / MilliSec) * FPS.GetInstance().GetValuef();    //この時間がMAX

                //フェードアウトのカウンタ設定
                this.fadeOutCnt    = 0;
                this.fadeOutCntMax = (int)UpdateTime;

                this.ChangeVolume(this.volume);  //音量をMAXにして

                //音楽再生
                this.Play();
            }

            //フェードアウトしているとき(フェードアウトのMAX値以下ならば)
            if (this.fadeOutCnt >= 0 && this.fadeOutCnt < this.fadeOutCntMax)
            {
                //カウンタを上げる
                this.fadeOutCnt++;

                //(MAX時間-現在のカウント時間)÷MAX時間で、音量の全体割合を計算
                float CalcVolume = ((float)this.fadeOutCntMax - (float)this.fadeOutCnt) / (float)this.fadeOutCntMax * 255;

                //読み込み時に設定した音量は超えないように注意すること!
                if (CalcVolume >= this.volume)
                {
                    CalcVolume = this.volume;
                }

                //音量を下げる
                this.ChangeVolume((int)CalcVolume);

                //フェードアウト中
                return(false);
            }
            else
            {
                return(true);
            }
        }
예제 #2
0
        /// <summary>
        /// ボタンを押し上げたか、マウスコード判断する
        /// </summary>
        /// <param name="MOUSE_INPUT_">MOUSE_INPUT_</param>
        /// <param name="milliTime">ボタンを押し続けている時間(ミリ秒)</param>
        /// <returns>押し続けていたらtrue</returns>
        public bool MouseDownKeep(int MOUSE_INPUT_, int milliTime)
        {
            float MilliSec = 1000.0f;   //1秒は1000ミリ秒

            //押し続ける時間=秒数×FPS値
            //例)60FPSのゲームで、1秒間押し続けるなら、1秒×60FPS
            float UpdateTime = (milliTime / MilliSec) * FPS.GetInstance().GetValuef();

            if (mouse.Button[MOUSE_INPUT_] > (int)UpdateTime)
            {
                return(true);    //押し続けている
            }
            else
            {
                return(false);   //押し続けていない
            }
        }
예제 #3
0
        /// <summary>
        /// キーを押し続けているか、キーコードで判断する
        /// </summary>
        /// <param name="KEY_INPUT_">KEY_INPUT_???</param>
        /// <param name="milliTime">キーを押し続けている時間(ミリ秒)</param>
        /// <returns>押し続けていたらTRUE</returns>
        public bool KeyHoldDown(int KEY_INPUT_, int milliTime)
        {
            float MilliSec = 1000.0f;   //1秒は1000ミリ秒

            //押し続ける時間=秒数×FPS値
            //例)60FPSのゲームで、1秒間押し続けるなら、1秒×60FPS
            float UpdateTime = (milliTime / MilliSec) * FPS.GetInstance().GetValuef();

            if (this.AllKeyState[KEY_INPUT_] > (int)UpdateTime)
            {
                return(true);    //押し続けている
            }
            else
            {
                return(false);   //押し続けていない
            }
        }
예제 #4
0
            /// <summary>
            /// パッドを押し続けているか
            /// </summary>
            /// <param name="PADBTN_">PADBTN_???</param>
            /// <param name="milliTime">パッドを押し続けている時間(ミリ秒)</param>
            /// <returns>押し続けていたらtrue</returns>
            public bool PadDownKeep(PAD_BTN PADBTN_, int milliTime)
            {
                float MilliSec = 1000.0f;   //1秒は1000ミリ秒

                //押し続ける時間=秒数×FPS値
                //例)60FPSのゲームで、1秒間押し続けるなら、1秒×60FPS
                float UpdateTime = (milliTime / MilliSec) * FPS.GetInstance().GetValuef();

                if (this.AllButtonState[(int)PADBTN_] > (int)UpdateTime)
                {
                    return(true);    //押し続けている
                }
                else
                {
                    return(false);   //押し続けていない
                }
            }
예제 #5
0
        /// <summary>
        /// 初期化
        /// </summary>
        /// <param name="p">画像のファイルパス</param>
        /// <param name="x">X位置</param>
        /// <param name="y">Y位置</param>
        /// <param name="margin">画像の当たり判定の余白(当たり判定を調整するとき)(デフォルトは0,0,0,0)</param>
        void Init(string p, int x, int y, Rect margin)
        {
            this.filePath = p;
            this.handle   = DX.LoadGraph(this.filePath); //画像の読み込み

            //読み込みエラー
            if (this.handle == -1)
            {
                MessageBox.Show(this.filePath + LoadErrHonbun, LoadErrTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                Game.GetInstance().Exit();   //ゲーム異常終了
            }

            //Info作成
            this.info = new ImgInfo();

            //幅と高さを取得
            DX.GetGraphSize(this.handle, out this.info.width, out this.info.height);

            //当たり判定の円の半径は、幅と高さのどちらか大きい方
            if (this.info.width > this.info.height)
            {
                this.info.circle.radius = this.info.width;
            }
            else if (this.info.width <= this.info.height)
            {
                this.info.circle.radius = this.info.height;
            }

            //位置を設定
            this.info.x = x;
            this.info.y = y;

            //描画する
            this.IsDraw = true;

            //当たり判定の余白を設定
            this.info.margin = new Rect(0, 0, 0, 0);

            //点滅の初期設定をする
            this.brinkCnt    = 0;
            this.brinkCntMax = FPS.GetInstance().GetValue() / 3;    //1/3フレームごとに点滅させる

            //画像の当たり判定の位置を更新する
            this.info.CollUpdateRect();
        }
예제 #6
0
        /// <summary>
        /// 点滅させながら画像を描画(点滅はフェードしながら)
        /// </summary>
        public void DrawBrink_fade()
        {
            //画像が描画できるときは
            if (this.IsDraw == true)
            {
                //FPSに合わせてMAX値を更新
                this.brinkCntMax = (int)(FPS.GetInstance().GetValue() / this.brinkTime);

                //フェードイン
                if (brinkCnt < brinkCntMax / 2)
                {
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_ALPHA, (int)(brinkCnt / (float)(brinkCntMax / 2) * 255));
                    brinkCnt++;
                }
                //フェードアウト
                else if (brinkCnt >= brinkCntMax / 2 && brinkCnt < brinkCntMax)
                {
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_ALPHA, (int)((brinkCntMax - brinkCnt) / (float)(brinkCntMax / 2) * 255));
                    brinkCnt++;
                }
                else if (brinkCnt >= brinkCntMax)
                {
                    brinkCnt = 0;   //カウンタ初期化
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_ALPHA, (int)(brinkCnt / (float)(brinkCntMax / 2) * 255));
                }
                //画像を描画
                DX.DrawGraph(this.info.x, this.info.y, this.handle, DX.TRUE);

                //透明化終了
                DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
            }

            /*
             * //デバッグモードのときは
             * if (Game.GetInstance().DEBUG == true)
             * {
             *  //当たり判定を描画
             *  this.info.coll.Draw(DX.GetColor(255, 255, 255), DX.FALSE);
             * }
             */

            return;
        }
예제 #7
0
        /// <summary>
        /// フェードイン処理
        /// </summary>
        /// <param name="milliTime">フェードインする時間(ミリ秒)</param>
        /// <returns></returns>
        public void FadeInPlayAudio(int milliTime)
        {
            //最初のフェードイン処理のとき
            if (this.fadeInCnt == 0)
            {
                float MilliSec = 1000.0f;   //1秒は1000ミリ秒

                //流し続ける時間=秒数×FPS値
                //例)60FPSのゲームで、1秒間流し続けるなら、1秒×60FPS
                float UpdateTime = (milliTime / MilliSec) * FPS.GetInstance().GetValuef();    //この時間がMAX

                //フェードインのカウンタ設定
                this.fadeInCnt    = 0;
                this.fadeInCntMax = (int)UpdateTime;

                this.ChangeVolume(0);    //音量を0にして

                //音楽再生
                this.Play();
            }

            //フェードインしているとき(フェードインのMAX値以下ならば)
            if (this.fadeInCnt >= 0 && this.fadeInCnt < this.fadeInCntMax)
            {
                //カウンタを上げる
                this.fadeInCnt++;

                //現在のカウント時間÷MAX時間で、音量の全体割合を計算
                float CalcVolume = this.fadeInCnt / this.fadeInCntMax * 255;

                //読み込み時に設定した音量は超えないように注意すること!
                if (CalcVolume >= this.volume)
                {
                    CalcVolume = this.volume;
                }

                //音量を上げる
                ChangeVolume((int)CalcVolume);
            }

            return;
        }
예제 #8
0
        /// <summary>
        /// 点滅させながら画像を描画
        /// </summary>
        public void DrawBrink()
        {
            //FPSに合わせてMAX値を更新
            this.brinkCntMax = (int)(FPS.GetInstance().GetValue() / this.brinkTime);

            //点滅カウンタの処理
            if (this.brinkCnt < this.brinkCntMax)
            {
                this.brinkCnt++;
            }
            else
            {
                //描画を反転
                if (this.IsDraw == true)
                {
                    this.IsDraw = false;
                }
                else
                {
                    this.IsDraw = true;
                }
                this.brinkCnt = 0;
            }

            //画像が描画できるときは
            if (this.IsDraw == true)
            {
                DX.DrawGraph(this.info.x, this.info.y, this.handle, DX.TRUE);
            }

            /*
             * //デバッグモードのときは
             * if (Game.GetInstance().DEBUG == true)
             * {
             *  //当たり判定を描画
             *  this.info.coll.Draw(DX.GetColor(255, 255, 255), DX.FALSE);
             * }
             */

            return;
        }