コード例 #1
0
        /// <summary>
        /// 点数を加える(各種AUTO補正つき)
        /// </summary>
        /// <param name="part"></param>
        /// <param name="bAutoPlay"></param>
        /// <param name="delta"></param>
        public void Add(E楽器パート part, STAUTOPLAY bAutoPlay, long delta, int player)
        {
            double rev = 1.0;

            switch (part)
            {
                #region [ Unknown ]
            case E楽器パート.UNKNOWN:
                throw new ArgumentException();
                #endregion
            }
            this.ctTimer = new CCounter(0, 400, 1, TJAPlayer3.Timer);

            for (int sc = 0; sc < 1; sc++)
            {
                for (int i = 0; i < 256; i++)
                {
                    if (this.stScore[i].b使用中 == false)
                    {
                        this.stScore[i].b使用中        = true;
                        this.stScore[i].b表示中        = true;
                        this.stScore[i].nAddScore   = (int)delta;
                        this.stScore[i].ctTimer     = new CCounter(0, 500, 1, TJAPlayer3.Timer);
                        this.stScore[i].bBonusScore = false;
                        this.stScore[i].nPlayer     = player;
                        this.n現在表示中のAddScore++;
                        break;
                    }
                }
            }

            this.Set(part, this.Get(part, player) + delta * rev, player);
        }
コード例 #2
0
ファイル: CPad.cs プロジェクト: 269Seahorse/TJAP4
        public bool b押された(E楽器パート part, Eパッド pad)
        {
            if (part != E楽器パート.UNKNOWN)
            {
                CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad];
                for (int i = 0; i < stkeyassignArray.Length; i++)
                {
                    switch (stkeyassignArray[i].入力デバイス)
                    {
                    case E入力デバイス.キーボード:
                        if (!this.rInput管理.Keyboard.bキーが押された(stkeyassignArray[i].コード))
                        {
                            break;
                        }

                        this.st検知したデバイス.Keyboard = true;
                        return(true);

                    case E入力デバイス.MIDI入力:
                    {
                        IInputDevice device2 = this.rInput管理.MidiIn(stkeyassignArray[i].ID);
                        if ((device2 == null) || !device2.bキーが押された(stkeyassignArray[i].コード))
                        {
                            break;
                        }

                        this.st検知したデバイス.MIDIIN = true;
                        return(true);
                    }

                    case E入力デバイス.ジョイパッド:
                    {
                        if (!this.rConfigIni.dicJoystick.ContainsKey(stkeyassignArray[i].ID))
                        {
                            break;
                        }

                        IInputDevice device = this.rInput管理.Joystick(stkeyassignArray[i].ID);
                        if ((device == null) || !device.bキーが押された(stkeyassignArray[i].コード))
                        {
                            break;
                        }

                        this.st検知したデバイス.Joypad = true;
                        return(true);
                    }

                    case E入力デバイス.マウス:
                        if (!this.rInput管理.Mouse.bキーが押された(stkeyassignArray[i].コード))
                        {
                            break;
                        }

                        this.st検知したデバイス.Mouse = true;
                        return(true);
                    }
                }
            }
            return(false);
        }
コード例 #3
0
 // メソッド
 public override void tActivatePopupMenu(E楽器パート einst)
 {
     this.CAct演奏PauseMenuMain();
     CActSelectPopupMenu.b選択した = false;
     this.bやり直しを選択した           = false;
     base.tActivatePopupMenu(einst);
 }
コード例 #4
0
		public void Set( E楽器パート part, double nScore, int player )
		{
            //現状、TAIKOパートでの演奏記録を結果ステージに持っていけないので、ドラムパートにも加算することでお茶を濁している。
            if( part == E楽器パート.TAIKO )
                part = E楽器パート.DRUMS;

			int nPart = (int) part;
			if( this.n現在の本当のスコア[ player ][ nPart ] != nScore )
			{
				this.n現在の本当のスコア[ player ][ nPart ] = nScore;
				this.nスコアの増分[ player ][ nPart ] = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) / 20.0 );
				this.nスコアの増分[ player ].Guitar = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) );
				if( this.nスコアの増分[ player ][ nPart ] < 1L )
				{
					this.nスコアの増分[ player ][ nPart ] = 1L;
				}
			}

            if( part == E楽器パート.DRUMS )
                part = E楽器パート.TAIKO;

			nPart = (int) part;
			if( this.n現在の本当のスコア[ player ][ nPart ] != nScore )
			{
				this.n現在の本当のスコア[ player ][ nPart ] = nScore;
				this.nスコアの増分[ player ][ nPart ] = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) / 20.0 );
                this.nスコアの増分[ player ].Guitar = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) );
				if( this.nスコアの増分[ player ][ nPart ] < 1L )
				{
					this.nスコアの増分[ player ][ nPart ] = 1L;
				}
			}
            
		}
コード例 #5
0
ファイル: CStage選曲.cs プロジェクト: TJASirapi/TOS-i3
            /// <summary>
            /// コマンド入力に成功しているか調べる
            /// </summary>
            /// <param name="_ePad">入力が成功したか調べたいコマンド</param>
            /// <param name="_eInst">対象楽器</param>
            /// <returns>コマンド入力成功時true</returns>
            public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst)
            {
                int targetCount = _ePad.Length;
                int stciCount   = stct.Count;

                if (stciCount < targetCount)
                {
                    return(false);
                }

                long curTime = TJAPlayer3.Timer.n現在時刻;

                for (int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j--)
                {
                    if (_ePad[i] != stct[j].ePad)
                    {
                        return(false);
                    }
                    if (stct[j].eInst != _eInst)
                    {
                        return(false);
                    }
                    if (curTime - stct[j].time > 500)
                    {
                        return(false);
                    }
                    curTime = stct[j].time;
                }

                stct.Clear();                                                                                   // #24396 2011.2.13 yyagi Clear all command input history in case you succeeded inputting some command

                return(true);
            }
コード例 #6
0
 public virtual void tActivatePopupMenu(E楽器パート einst)
 {
     nItemSelecting           = -1;              // #24757 2011.4.1 yyagi: Clear sorting status in each stating menu.
     this.eInst               = einst;
     this.bIsActivePopupMenu  = true;
     this.bIsSelectingIntItem = false;
     this.bGotoDetailConfig   = false;
 }
 public bool IsFailed(E楽器パート part)               // 閉店状態になったかどうか
 {
     if (bRisky)
     {
         return(nRiskyTimes <= 0);
     }
     return(this.db現在のゲージ値[(int)part] <= GAUGE_MIN);
 }
コード例 #8
0
        // メソッド

        public List <STInputEvent> GetEvents(Eパッド pad)
        {
            E楽器パート part = E楽器パート.DRUMS;

            CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad];
            List <STInputEvent> list = new List <STInputEvent>();

            // すべての入力デバイスについて…
            foreach (IInputDevice device in this.rInput管理.list入力デバイス)
            {
                if ((device.list入力イベント != null) && (device.list入力イベント.Count != 0))
                {
                    foreach (STInputEvent event2 in device.list入力イベント)
                    {
                        for (int i = 0; i < stkeyassignArray.Length; i++)
                        {
                            switch (stkeyassignArray[i].入力デバイス)
                            {
                            case E入力デバイス.キーボード:
                                if ((device.e入力デバイス種別 == E入力デバイス種別.Keyboard) && (event2.nKey == stkeyassignArray[i].コード))
                                {
                                    list.Add(event2);
                                    this.st検知したデバイス.Keyboard = true;
                                }
                                break;

                            case E入力デバイス.MIDI入力:
                                if (((device.e入力デバイス種別 == E入力デバイス種別.MidiIn) && (device.ID == stkeyassignArray[i].ID)) && (event2.nKey == stkeyassignArray[i].コード))
                                {
                                    list.Add(event2);
                                    this.st検知したデバイス.MIDIIN = true;
                                }
                                break;

                            case E入力デバイス.ジョイパッド:
                                if (((device.e入力デバイス種別 == E入力デバイス種別.Joystick) && (device.ID == stkeyassignArray[i].ID)) && (event2.nKey == stkeyassignArray[i].コード))
                                {
                                    list.Add(event2);
                                    this.st検知したデバイス.Joypad = true;
                                }
                                break;

                            case E入力デバイス.マウス:
                                if ((device.e入力デバイス種別 == E入力デバイス種別.Mouse) && (event2.nKey == stkeyassignArray[i].コード))
                                {
                                    list.Add(event2);
                                    this.st検知したデバイス.Mouse = true;
                                }
                                break;
                            }
                        }
                    }
                    continue;
                }
            }
            return(list);
        }
コード例 #9
0
 public virtual void tActivatePopupMenu(E楽器パート einst)
 {
     this.bキー入力待ち = false;
     this.ctbキー入力待ち.t開始(0, 100, 1, TJAPlayer3.Timer);
     nItemSelecting           = -1; // #24757 2011.4.1 yyagi: Clear sorting status in each stating menu.
     this.eInst               = einst;
     this.bIsActivePopupMenu  = true;
     this.bIsSelectingIntItem = false;
     this.bGotoDetailConfig   = false;
 }
コード例 #10
0
ファイル: CInvisibleChip.cs プロジェクト: Mizca/Donchi
        /// <summary>
        /// まだSemi-Invisibleを開始していなければ、開始する
        /// </summary>
        /// <param name="eInst"></param>
        public void StartSemiInvisible(E楽器パート eInst)
        {
            int nInst = (int)eInst;

            if (!b演奏チップが1つでもバーを通過した[nInst])
            {
                b演奏チップが1つでもバーを通過した[nInst] = true;
                if (this.eInvisibleMode[nInst] == EInvisible.SEMI)
                {
                    ShowChipTemporally(eInst);
                    ccounter[nInst].n現在の値 = nDisplayTimeMs;
                }
            }
        }
コード例 #11
0
ファイル: CStage選曲.cs プロジェクト: TJASirapi/TOS-i3
            /// <summary>
            /// コマンド入力履歴へのコマンド追加
            /// </summary>
            /// <param name="_eInst">楽器の種類</param>
            /// <param name="_ePad">入力コマンド(同時押しはOR演算で列挙すること)</param>
            public void Add(E楽器パート _eInst, EパッドFlag _ePad)
            {
                STCommandTime _stct = new STCommandTime {
                    eInst = _eInst,
                    ePad  = _ePad,
                    time  = TJAPlayer3.Timer.n現在時刻
                };

                if (stct.Count >= buffersize)
                {
                    stct.RemoveAt(0);
                }
                stct.Add(_stct);
            }
コード例 #12
0
            /// <summary>
            /// コマンド入力履歴へのコマンド追加
            /// </summary>
            /// <param name="_eInst">楽器の種類</param>
            /// <param name="_ePad">入力コマンド(同時押しはOR演算で列挙すること)</param>
            public void Add(E楽器パート _eInst, EパッドFlag _ePad)
            {
                STCommandTime _stct = new STCommandTime {
                    eInst = _eInst,
                    ePad  = _ePad,
                    time  = TJAPlayer3.Timer.n現在時刻
                };

                if (stct.Count >= buffersize)
                {
                    stct.RemoveAt(0);
                }
                stct.Add(_stct);
//Debug.WriteLine( "CMDHIS: 楽器=" + _stct.eInst + ", CMD=" + _stct.ePad + ", time=" + _stct.time );
            }
        public bool IsDanger(E楽器パート part)               // DANGERかどうか
        {
            if (bRisky)
            {
                switch (nRiskyTimes_Initial)
                {
                case 1:
                    return(false);

                case 2:
                case 3:
                    return(nRiskyTimes <= 1);

                default:
                    return(nRiskyTimes <= 2);
                }
            }
            return(this.db現在のゲージ値[(int)part] <= GAUGE_DANGER);
        }
コード例 #14
0
            /// <summary>
            /// コマンド入力に成功しているか調べる
            /// </summary>
            /// <param name="_ePad">入力が成功したか調べたいコマンド</param>
            /// <param name="_eInst">対象楽器</param>
            /// <returns>コマンド入力成功時true</returns>
            public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst)
            {
                int targetCount = _ePad.Length;
                int stciCount   = stct.Count;

                if (stciCount < targetCount)
                {
//Debug.WriteLine("NOT start checking...stciCount=" + stciCount + ", targetCount=" + targetCount);
                    return(false);
                }

                long curTime = TJAPlayer3.Timer.n現在時刻;

//Debug.WriteLine("Start checking...targetCount=" + targetCount);
                for (int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j--)
                {
                    if (_ePad[i] != stct[j].ePad)
                    {
//Debug.WriteLine( "CMD解析: false targetCount=" + targetCount + ", i=" + i + ", j=" + j + ": ePad[]=" + _ePad[i] + ", stci[j] = " + stct[j].ePad );
                        return(false);
                    }
                    if (stct[j].eInst != _eInst)
                    {
//Debug.WriteLine( "CMD解析: false " + i );
                        return(false);
                    }
                    if (curTime - stct[j].time > 500)
                    {
//Debug.WriteLine( "CMD解析: false " + i + "; over 500ms" );
                        return(false);
                    }
                    curTime = stct[j].time;
                }

//Debug.Write( "CMD解析: 成功!(" + _ePad.Length + ") " );
//for ( int i = 0; i < _ePad.Length; i++ ) Debug.Write( _ePad[ i ] + ", " );
//Debug.WriteLine( "" );
                //stct.RemoveRange( 0, targetCount );			// #24396 2011.2.13 yyagi
                stct.Clear();                                                                                   // #24396 2011.2.13 yyagi Clear all command input history in case you succeeded inputting some command

                return(true);
            }
コード例 #15
0
 /// <summary>
 /// 判定ラインのY座標を返す。とりあえずGuitar/Bassのみ対応。
 /// </summary>
 /// <param name="eInst">E楽器パート</param>
 /// <param name="bGRmode">GRmodeか否か</param>
 /// <param name="bReverse">Reverseか否か</param>
 /// <param name="bWailingFrame">Wailing枠の座標か、判定ラインの座標か</param>
 /// <param name="b補正あり">プレーヤーのライン表示位置補正情報を加えるかどうか</param>
 /// <returns></returns>
 public int n判定ラインY座標(E楽器パート eInst, bool bGRmode, bool bReverse, bool bWailingFrame, bool b補正あり)
 {
     if (eInst == E楽器パート.DRUMS)
     {
         throw new NotImplementedException();
     }
     else if (eInst == E楽器パート.UNKNOWN)
     {
         throw new ArgumentOutOfRangeException();
     }
     else
     {
         int nReverse = bReverse ?      1 : 0;
         int nGRmode  = bGRmode ?       1 : 0;
         int nWailing = bWailingFrame ? 1 : 0;
         int nInst    = (int)eInst;
         int ret      = this.n判定ラインY座標元データ[nReverse, nGRmode, nWailing][nInst];                          // 補正無しの値
         if (bReverse)
         {
             if (n判定位置[nInst] == E判定位置.Lower)
             {
                 ret += 13;
             }
             if (b補正あり)
             {
                 ret += nJudgeLinePosY_delta[nInst];
             }
         }
         else
         {
             if (n判定位置[nInst] == E判定位置.Lower)
             {
                 ret += 52;
             }
             if (b補正あり)
             {
                 ret -= nJudgeLinePosY_delta[nInst];
             }
         }
         return(ret);
     }
 }
コード例 #16
0
        public int n演奏RGBボタンY座標(E楽器パート eInst, bool bGRmode, bool bReverse)
        {
            if (eInst == E楽器パート.DRUMS)
            {
                throw new NotImplementedException();
            }
            else if (eInst == E楽器パート.UNKNOWN)
            {
                throw new ArgumentOutOfRangeException();
            }
            else
            {
                int nInst    = (int)eInst;
                int nGRmode  = bGRmode ?  1 : 0;
                int nReverse = bReverse ? 1 : 0;
                int nVseries = (int)n判定位置[nInst];
                int ret      = n演奏RGBボタンY座標元データ[nReverse, nGRmode, nVseries][nInst];                            // 補正無しの値

                return(ret);
            }
        }
コード例 #17
0
            /// <summary>
            /// コマンド入力に成功しているか調べる
            /// </summary>
            /// <param name="_ePad">入力が成功したか調べたいコマンド</param>
            /// <param name="_eInst">対象楽器</param>
            /// <returns>コマンド入力成功時true</returns>
            public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst)
            {
                int targetCount = _ePad.Length;
                int stciCount   = stct.Count;

                if (stciCount < targetCount)
                {
//Debug.WriteLine("NOT start checking...stciCount=" + stciCount + ", targetCount=" + targetCount);
                    return(false);
                }

                long curTime = TJAPlayer3.Timer.n現在時刻;

//Debug.WriteLine("Start checking...targetCount=" + targetCount);
                for (int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j--)
                {
                    if (_ePad[i] != stct[j].ePad)
                    {
//Debug.WriteLine( "CMD解析: false targetCount=" + targetCount + ", i=" + i + ", j=" + j + ": ePad[]=" + _ePad[i] + ", stci[j] = " + stct[j].ePad );
                        return(false);
                    }
                    if (stct[j].eInst != _eInst)
                    {
//Debug.WriteLine( "CMD解析: false " + i );
                        return(false);
                    }
                    if (curTime - stct[j].time > 500)
                    {
//Debug.WriteLine( "CMD解析: false " + i + "; over 500ms" );
                        return(false);
                    }
                    curTime = stct[j].time;
                }



                return(true);
            }
コード例 #18
0
        };         //おおよその値。

        // ----------------------------------
        #endregion
#endif

        public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int player)
        {
            float fDamage;
            int   nコース = CDTXMania.stage演奏ドラム画面.n現在のコース[player];

            switch (e今回の判定)
            {
            case E判定.Perfect:
            case E判定.Great:
            {
                if (CDTXMania.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[nコース, 0];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[0];
                }
            }
            break;

            case E判定.Good:
            {
                if (CDTXMania.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[nコース, 1];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[1];
                }
            }
            break;

            case E判定.Poor:
            case E判定.Miss:
            {
                if (CDTXMania.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[nコース, 2];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[2];
                }

                if (this.db現在のゲージ値[player] < 30.0f && CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD)
                {
                    //HARDの場合30%補正
                    fDamage = 4.5f;
                }

                if (fDamage >= 0)
                {
                    fDamage = -fDamage;
                }
            }
            break;

            default:
            {
                if (player == 0 ? CDTXMania.ConfigIni.b太鼓パートAutoPlay : CDTXMania.ConfigIni.b太鼓パートAutoPlay2P)
                {
                    if (CDTXMania.DTX.bチップがある.Branch)
                    {
                        fDamage = this.dbゲージ増加量_Branch[nコース, 0];
                    }
                    else
                    {
                        fDamage = this.dbゲージ増加量[0];
                    }
                }
                else
                {
                    fDamage = 0;
                }
                break;
            }
            }
            if (this.db現在のゲージ値[player] > 100.0)
            {
                this.db現在のゲージ値[player] = 100.0;
            }
            else if (this.db現在のゲージ値[player] < 0.0)
            {
                this.db現在のゲージ値[player] = 0.0;
            }

            this.db現在のゲージ値[player]        = Math.Round(this.db現在のゲージ値[player] + fDamage, 5, MidpointRounding.ToEven);
            CDTXMania.stage演奏ドラム画面.nGauge = fDamage;

            switch (e今回の判定)
            {
            case E判定.Poor:
            case E判定.Miss:
                if (this.bRisky)
                {
                    this.nRiskyTimes--;
                }
                break;
            }
        }
        };         //おおよその値。

        // ----------------------------------
        #endregion
#endif

        public void Damage(CDTX.ECourse eHitCourse, E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int player)
        {
            float fDamage;

            //現在のコースを当てるのではなくヒットしたノーツのコースを当ててあげる.2020.04.21.akasoko26
            var nコース = eHitCourse;


#if true        // DAMAGELEVELTUNING
            switch (e今回の判定)
            {
            case E判定.Perfect:
            case E判定.Great:
            {
                if (TJAPlayer3.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[(int)nコース, 0];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[0];
                }
            }
            break;

            case E判定.Good:
            {
                if (TJAPlayer3.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[(int)nコース, 1];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[1];
                }
            }
            break;

            case E判定.Poor:
            case E判定.Miss:
            {
                if (TJAPlayer3.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[(int)nコース, 2];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[2];
                }


                if (fDamage >= 0)
                {
                    fDamage = -fDamage;
                }

                if (this.bRisky)
                {
                    this.nRiskyTimes--;
                }
            }

            break;



            default:
            {
                if (player == 0 ? TJAPlayer3.ConfigIni.b太鼓パートAutoPlay : TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P)
                {
                    if (TJAPlayer3.DTX.bチップがある.Branch)
                    {
                        fDamage = this.dbゲージ増加量_Branch[(int)nコース, 0];
                    }
                    else
                    {
                        fDamage = this.dbゲージ増加量[0];
                    }
                }
                else
                {
                    fDamage = 0;
                }
                break;
            }
            }
#else                                                                                                   // before applying #23625 modifications
            switch (e今回の判定)
            {
            case E判定.Perfect:
                fDamage = (part == E楽器パート.DRUMS) ? 0.01 : 0.015;
                break;

            case E判定.Great:
                fDamage = (part == E楽器パート.DRUMS) ? 0.006 : 0.009;
                break;

            case E判定.Good:
                fDamage = (part == E楽器パート.DRUMS) ? 0.002 : 0.003;
                break;

            case E判定.Poor:
                fDamage = (part == E楽器パート.DRUMS) ? 0.0 : 0.0;
                break;

            case E判定.Miss:
                fDamage = (part == E楽器パート.DRUMS) ? -0.035 : -0.035;
                switch (CDTXMania.ConfigIni.eダメージレベル)
                {
                case Eダメージレベル.少ない:
                    fDamage *= 0.6;
                    break;

                case Eダメージレベル.普通:
                    fDamage *= 1.0;
                    break;

                case Eダメージレベル.大きい:
                    fDamage *= 1.6;
                    break;
                }
                break;

            default:
                fDamage = 0.0;
                break;
            }
#endif


            this.db現在のゲージ値[player] = Math.Round(this.db現在のゲージ値[player] + fDamage, 5, MidpointRounding.ToEven);

            if (this.db現在のゲージ値[player] >= 100.0)
            {
                this.db現在のゲージ値[player] = 100.0;
            }
            else if (this.db現在のゲージ値[player] <= 0.0)
            {
                this.db現在のゲージ値[player] = 0.0;
            }

            //CDTXMania.stage演奏ドラム画面.nGauge = fDamage;
        }
コード例 #20
0
 // メソッド
 public override void tActivatePopupMenu(E楽器パート einst, int nPlayer)
 {
     this.CActSelectQuickConfigMain(nPlayer);
     base.tActivatePopupMenu(einst, nPlayer);
 }
コード例 #21
0
 // メソッド
 public override void tActivatePopupMenu(E楽器パート einst)
 {
     this.CActSelectQuickConfigMain();
     base.tActivatePopupMenu(einst);
 }
コード例 #22
0
 // メソッド
 public override void tActivatePopupMenu(E楽器パート einst, int nPlayer)
 {
     this.CAct演奏PauseMenuMain();
     this.bやり直しを選択した = false;
     base.tActivatePopupMenu(einst, 0);
 }
コード例 #23
0
        };         //おおよその値。

        // ----------------------------------
        #endregion
#endif

        public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int player)
        {
            float fDamage;
            int   nコース = CDTXMania.stage演奏ドラム画面.n現在のコース[player];


#if true        // DAMAGELEVELTUNING
            switch (e今回の判定)
            {
            case E判定.Perfect:
            case E判定.Great:
            {
                if (CDTXMania.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[nコース, 0];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[0];
                }
            }
            break;

            case E判定.Good:
            {
                if (CDTXMania.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[nコース, 1];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[1];
                }
            }
            break;

            case E判定.Poor:
            case E判定.Miss:
            {
                if (CDTXMania.DTX.bチップがある.Branch)
                {
                    fDamage = this.dbゲージ増加量_Branch[nコース, 2];
                }
                else
                {
                    fDamage = this.dbゲージ増加量[2];
                }


                if (fDamage >= 0)
                {
                    fDamage = -fDamage * 3;
                }

                if (this.bRisky)
                {
                    this.nRiskyTimes--;
                }
            }

            break;



            default:
            {
                if (player == 0 ? CDTXMania.ConfigIni.b太鼓パートAutoPlay : CDTXMania.ConfigIni.b太鼓パートAutoPlay2P)
                {
                    if (CDTXMania.DTX.bチップがある.Branch)
                    {
                        fDamage = this.dbゲージ増加量_Branch[nコース, 0];
                    }
                    else
                    {
                        fDamage = this.dbゲージ増加量[0];
                    }
                }
                else
                {
                    fDamage = 0;
                }
                break;
            }
            }
#else                                                                                                   // before applying #23625 modifications
            switch (e今回の判定)
            {
            case E判定.Perfect:
                fDamage = (part == E楽器パート.DRUMS) ? 0.01 : 0.015;
                break;

            case E判定.Great:
                fDamage = (part == E楽器パート.DRUMS) ? 0.006 : 0.009;
                break;

            case E判定.Good:
                fDamage = (part == E楽器パート.DRUMS) ? 0.002 : 0.003;
                break;

            case E判定.Poor:
                fDamage = (part == E楽器パート.DRUMS) ? 0.0 : 0.0;
                break;

            case E判定.Miss:
                fDamage = (part == E楽器パート.DRUMS) ? -0.035 : -0.035;
                switch (CDTXMania.ConfigIni.eダメージレベル)
                {
                case Eダメージレベル.少ない:
                    fDamage *= 0.6;
                    break;

                case Eダメージレベル.普通:
                    fDamage *= 1.0;
                    break;

                case Eダメージレベル.大きい:
                    fDamage *= 1.6;
                    break;
                }
                break;

            default:
                fDamage = 0.0;
                break;
            }
#endif


            if (this.db現在のゲージ値[player] > 100.0)
            {
                this.db現在のゲージ値[player] = 100.0;
            }
            else if (this.db現在のゲージ値[player] < 0.0)
            {
                this.db現在のゲージ値[player] = 0.0;
            }

            this.db現在のゲージ値[player]        = Math.Round(this.db現在のゲージ値[player] + fDamage, 5, MidpointRounding.ToEven);
            CDTXMania.stage演奏ドラム画面.nGauge = fDamage;
        }
コード例 #24
0
        internal static double t演奏型スキルを計算して返す(int nTotal, int nPerfect, int nGreat, int nGood, int nPoor, int nMiss, E楽器パート inst)
        {
            if (nTotal == 0)
            {
                return(0.0);
            }

            int    nAuto = nTotal - (nPerfect + nGreat + nGood + nPoor + nMiss);
            double y     = ((nPerfect * 1.0 + nGreat * 0.8 + nGood * 0.5 + nPoor * 0.2 + nMiss * 0.0 + nAuto * 0.0) * 100.0) / ((double)nTotal);
            double ret   = (100.0 * ((Math.Pow(1.03, y) - 1.0) / (Math.Pow(1.03, 100.0) - 1.0)));

            ret *= dbCalcReviseValForDrGtBsAutoLanes(inst);
            return(ret);
        }
コード例 #25
0
        protected override void t進行描画_チップ_ギターベース(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, E楽器パート inst)
        {
            int instIndex = (int)inst;

            if (configIni.bGuitar有効)
            {
                if (configIni.bSudden[instIndex])
                {
                    pChip.b可視 = pChip.nバーからの距離dot[instIndex] < 200;
                }
                if (configIni.bHidden[instIndex] && (pChip.nバーからの距離dot[instIndex] < 100))
                {
                    pChip.b可視 = false;
                }

                bool bChipHasR = ((pChip.nチャンネル番号 & 4) > 0);
                bool bChipHasG = ((pChip.nチャンネル番号 & 2) > 0);
                bool bChipHasB = ((pChip.nチャンネル番号 & 1) > 0);
                bool bChipHasW = ((pChip.nチャンネル番号 & 0x0F) == 0x08);
                bool bChipIsO  = ((pChip.nチャンネル番号 & 0x0F) == 0x00);

                int OPEN = (inst == E楽器パート.GUITAR) ? 0x20 : 0xA0;
                if (!pChip.bHit && pChip.b可視)
                {
                    int y = configIni.bReverse[instIndex] ? (369 - pChip.nバーからの距離dot[instIndex]) : (40 + pChip.nバーからの距離dot[instIndex]);
                    if ((y > 0) && (y < 409))
                    {
                        if (this.txチップ != null)
                        {
                            int nアニメカウンタ現在の値 = this.ctチップ模様アニメ[instIndex].n現在の値;
                            if (pChip.nチャンネル番号 == OPEN)
                            {
                                {
                                    int xo = (inst == E楽器パート.GUITAR) ? 26 : 480;
                                    this.txチップ.t2D描画(CDTXMania.app.Device, xo, y - 4, new Rectangle(0, 192 + ((nアニメカウンタ現在の値 % 5) * 8), 103, 8));
                                }
                            }
                            Rectangle rc = new Rectangle(0, nアニメカウンタ現在の値 * 8, 32, 8);
                            int       x;
                            if (inst == E楽器パート.GUITAR)
                            {
                                x = (configIni.bLeft.Guitar) ? 98 : 26;
                            }
                            else
                            {
                                x = (configIni.bLeft.Bass) ? 552 : 480;
                            }
                            int deltaX = (configIni.bLeft[instIndex]) ? -36 : +36;
                            if (bChipHasR)
                            {
                                this.txチップ.t2D描画(CDTXMania.app.Device, x, y - 4, rc);
                            }
                            rc.X += 32;
                            if (bChipHasG)
                            {
                                this.txチップ.t2D描画(CDTXMania.app.Device, x, y - 4, rc);
                            }
                            rc.X += 32;
                            if (bChipHasB)
                            {
                                this.txチップ.t2D描画(CDTXMania.app.Device, x, y - 4, rc);
                            }
                        }
                    }
                }
                // if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )
                if ((!pChip.bHit) && (pChip.nバーからの距離dot[instIndex] < 0))
                {
                    int  lo    = (inst == E楽器パート.GUITAR) ? 0 : 3;                       // lane offset
                    bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR;
                    bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG;
                    bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB;
                    if ((bChipHasR || bChipIsO) && autoR)
                    {
                        this.actChipFireGB.Start(0 + lo);
                    }
                    if ((bChipHasG || bChipIsO) && autoG)
                    {
                        this.actChipFireGB.Start(1 + lo);
                    }
                    if ((bChipHasB || bChipIsO) && autoB)
                    {
                        this.actChipFireGB.Start(2 + lo);
                    }
                    if ((inst == E楽器パート.GUITAR && bIsAutoPlay.GtPick) || (inst == E楽器パート.BASS && bIsAutoPlay.BsPick))
                    {
                        bool pushingR = CDTXMania.Pad.b押されている(inst, Eパッド.R);
                        bool pushingG = CDTXMania.Pad.b押されている(inst, Eパッド.G);
                        bool pushingB = CDTXMania.Pad.b押されている(inst, Eパッド.B);
                        bool bMiss    = true;
                        if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB)) ||
                            ((bChipHasR == (pushingR | autoR)) && (bChipHasG == (pushingG | autoG)) && (bChipHasB == (pushingB | autoB)))
                            )
                        {
                            bMiss = false;
                        }
                        pChip.bHit = true;
                        this.tサウンド再生(pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量(inst));
                        this.r次にくるギターChip = null;
                        this.tチップのヒット処理(pChip.n発声時刻ms, pChip);
                    }
                }
                // break;
                return;
            }
            if (!pChip.bHit && (pChip.nバーからの距離dot[instIndex] < 0))
            {
                pChip.bHit = true;
                this.tサウンド再生(pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量(inst));
            }
        }
コード例 #26
0
 public double Get(E楽器パート part, int player)
 {
     return(this.n現在の本当のスコア[player][(int)part]);
 }
コード例 #27
0
ファイル: CInvisibleChip.cs プロジェクト: Mizca/Donchi
 /// <summary>
 /// 一時的にチップを表示するモードを開始する
 /// </summary>
 /// <param name="eInst">楽器パート</param>
 public void ShowChipTemporally(E楽器パート eInst)
 {
     ccounter[(int)eInst].t開始(0, nDisplayTimeMs + nFadeoutTimeMs + 1, 1, TJAPlayer3.Timer);
 }
コード例 #28
0
 public int n判定ラインY座標(E楽器パート eInst, bool bGRmode, bool bReverse, bool bWailingFrame)
 {
     return(n判定ラインY座標(eInst, bGRmode, bReverse, bWailingFrame, false));
 }
コード例 #29
0
ファイル: CActSortSongs.cs プロジェクト: gonii521/GyuDon-New2
 // メソッド
 public void tActivatePopupMenu(E楽器パート einst, ref CActSelect曲リスト ca)
 {
     this.act曲リスト = ca;
     base.tActivatePopupMenu(einst);
 }
コード例 #30
0
        internal static double tゲーム型スキルを計算して返す(int nLevel, int nTotal, int nPerfect, int nCombo, E楽器パート inst)
        {
            double ret;

            if ((nTotal == 0) || ((nPerfect == 0) && (nCombo == 0)))
            {
                ret = 0.0;
            }

            ret  = ((nLevel * ((nPerfect * 0.8 + nCombo * 0.2) / ((double)nTotal))) / 2.0);
            ret *= dbCalcReviseValForDrGtBsAutoLanes(inst);

            return(ret);
        }