/// <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); } }
/// <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); //押し続けていない } }
/// <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); //押し続けていない } }
/// <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); //押し続けていない } }
/// <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(); }
/// <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; }
/// <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; }
/// <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; }