void PlayHitAniSuper(TaiguBallType ballType, BeatResultRank beatRank) { ParticleSystem curPs = null; if (beatRank == BeatResultRank.Miss || beatRank == BeatResultRank.None) { curPs = m_psMiss; } else { if (ballType == TaiguBallType.Red) { curPs = m_psRed; } else if (ballType == TaiguBallType.Blue) { curPs = m_psBlue; } else if (ballType == TaiguBallType.RBMix) { curPs = m_psMix; } else if (ballType == TaiguBallType.HoldBegin) { curPs = m_psYellow; } } if (curPs != null) { curPs.gameObject.SetActive(true); curPs.Stop(); curPs.Play(); } }
void OnBeatResult(BeatResultRank rank) { int aniIndex = (int)rank - 1; if (aniIndex < m_BeatRankAni.Length) { _HidePlayingRankAni(); mPlayingRankAni = m_BeatRankAni[aniIndex]; mPlayingRankAni.gameObject.SetActive(true); mPlayingRankAni.Play(); } }
// Beat--------------------------------------------------------- void CheckExceed() { GameObject roundBar = CurrentLeadRoundBar(); if (roundBar != null) { if (roundBar.transform.position.x > m_CheckEdgeRight.position.x) { mUsingRoundBar.Dequeue(); RecycleRoundBar(roundBar); } } TaiguDrumBall drumBall = CurrentLeadBall(); if (drumBall != null) { if (drumBall.EndBall.position.x > m_CheckEdgeRight.position.x) { float checkOffset = drumBall.transform.position.x - m_CheckPos.position.x; if (drumBall.BallType != TaiguBallType.HoldBegin) { HandleBeat(true, checkOffset, m_headRank, true); } else { if (m_headRank == BeatResultRank.Miss || m_headRank == BeatResultRank.Bad || m_headRank == BeatResultRank.None) { mBeatResult.AddBeatCheck(0, BeatResultRank.Miss); SendMessage("OnBeatResult", BeatResultRank.Miss, SendMessageOptions.RequireReceiver); SendMessage("OnBeatCombo", mBeatResult.ComnoCount.Value, SendMessageOptions.DontRequireReceiver); PlayHitAniSuper(TaiguBallType.HoldBegin, BeatResultRank.Miss); } drumBall = mUsingBalls.Dequeue(); if (drumBall.IsKeyBall) { ///m_Match.HandleRoundMark(mRoundIndex, mBeatResult.LatestRoundMark, mBeatResult.LatestBeatRank, mBeatResult.LatestRoundRank); ++mRoundIndex; mBeatResult.StartNewRound(); } RecycleDrumBall(drumBall); } m_headRank = BeatResultRank.None; } } }
void OnRankAction(BeatResultRank rank) { if (m_bIsDancer && OwnerAni != null) { if (rank == BeatResultRank.Miss) { OwnerAni.CrossFade(Miss); OwnerAni.Blend(DanceStart, 1f); } else { OwnerAni.Blend(DanceStart, 0f); } } }
void CheckBeat(TaiguBeatType beatType) { TaiguDrumBall drumBall = CurrentLeadBall(); if (drumBall != null) { float checkOffset = drumBall.transform.position.x - m_CheckPos.position.x; bool isCheck = false; switch (drumBall.BallType) { case TaiguBallType.HoldBegin: if (drumBall.transform.position.x >= m_CheckPos.position.x && drumBall.EndBall.position.x <= m_CheckPos.position.x) { isCheck = true; } break; default: isCheck = mBeatResult.InCheckRange(checkOffset); break; } if (isCheck) { bool isValid = IsBeatValid(drumBall.BallType, beatType); bool isEnd = true; if (drumBall.BallType == TaiguBallType.HoldBegin) { isEnd = false; } BeatResultRank headRank = HandleBeat(isValid, checkOffset, m_headRank, isEnd); if (m_headRank == BeatResultRank.None) { m_headRank = headRank; } mLastBeatTime = 0f; mLastBeatType = TaiguBeatType.Nothing; } } }
private int GetRankBaseScore(RhythmBallType ballType, BeatResultRank rank) { int[] arrScoreDefault = { 0, // miss 250, // bad 300, // good 400, // cool 500, // perfect }; int[] arrScoreDoubleClick = { 0, // miss 300, // bad 400, // good 600, // cool 800, // perfect }; int[] arrScoreBevelTR = { 0, // miss 300, // bad 400, // good 500, // cool 600, // perfect }; int[] arrScoreBevelBL = { 0, // miss 300, // bad 400, // good 500, // cool 600, // perfect }; int[] arrScoreDoubleLongPress = { 0, // miss 300, // bad 400, // good 600, // cool 800, // perfect }; int[] arrScoreBatter = { 0, // miss 300, // bad 400, // good 600, // cool 800, // perfect }; switch (ballType) { case RhythmBallType.DoubleClick: return(arrScoreDoubleClick[(int)rank - 1]); case RhythmBallType.BevelTR: return(arrScoreBevelTR[(int)rank - 1]); case RhythmBallType.BevelBL: return(arrScoreBevelBL[(int)rank - 1]); case RhythmBallType.DoubleLongPress: return(arrScoreDoubleLongPress[(int)rank - 1]); case RhythmBallType.Batter: return(arrScoreBatter[(int)rank - 1]); default: return(arrScoreDefault[(int)rank - 1]); } }
public BeatResultRank AddBeatCheck(float offset, BeatResultRank headRank) { BeatResultRank rank = BeatResultRank.None; if (headRank != BeatResultRank.None) { rank = headRank; switch (rank) { case BeatResultRank.Perfect: case BeatResultRank.Cool: case BeatResultRank.Good: ++mComboCount.Value; break; case BeatResultRank.Bad: case BeatResultRank.Miss: mComboCount.Value = 0; break; default: break; } } else { if (offset >= -mPerfectRange && offset <= mPerfectRange) { rank = BeatResultRank.Perfect; ++mComboCount.Value; } else if (offset >= -mCoolRange && offset <= mCoolRange) { rank = BeatResultRank.Cool; ++mComboCount.Value; } else if (offset >= -mGoodRange && offset <= mGoodRange) { rank = BeatResultRank.Good; ++mComboCount.Value; } else if (offset >= -mTotalRange && offset <= mTotalRange) { rank = BeatResultRank.Bad; mComboCount.Value = 0; } else { rank = BeatResultRank.Miss; mComboCount.Value = 0; } } int comboLevel = (mComboCount.Value > 100 ? 10 : mComboCount.Value / 10); int markIndex = (int)rank - 1; int rankMark = mBaseMark[markIndex]; ///rankMark += FashionValueData.GetAdditionFashionValue(rank, mAdditionList); mLatestBeatMark.Value = rankMark + rankMark * comboLevel * mComboBonus / 100; mLatestBeatRank.Value = (int)rank; mLatestRoundMark.Value += mLatestBeatMark.Value; mLatestRoundRank.Add(mLatestBeatRank.Clone()); return(rank); }
private BeatResultRank HandleBeat(bool isValid, float checkOffset, BeatResultRank headRank, bool isEnd) { BeatResultRank curHeadRank = BeatResultRank.None; TaiguDrumBall drumBall = null; if (isEnd) { drumBall = mUsingBalls.Dequeue(); } else { drumBall = mUsingBalls.Peek(); } bool isKeyBall = drumBall.IsKeyBall; TaiguBallType ballType = drumBall.BallType; Vector3 ballPos = drumBall.transform.position; #if !MODE_ALLCOMBO if (isValid) { if (isEnd) { headRank = BeatResultRank.None; } curHeadRank = mBeatResult.AddBeatCheck(checkOffset, headRank); } else { mBeatResult.AddBeatMiss(); curHeadRank = BeatResultRank.Miss; } PlayHitAniNormal(ballType, ballPos); #else if (RoomData.IsPlaySuperMode) { PlayHitAniSuper(ballType, curHeadRank); } else { PlayHitAniNormal(ballType, ballPos); } mBeatResult.AddBeatCheck(0, BeatResultRank.None); #endif ///m_Match.HandleBeatMark(mRoundIndex, mBeatResult.LatestBeatMark, mBeatResult.ComnoCount); SendMessage("OnBeatResult", (BeatResultRank)mBeatResult.LatestBeatRank.Value, SendMessageOptions.RequireReceiver); SendMessage("OnBeatCombo", mBeatResult.ComnoCount.Value, SendMessageOptions.DontRequireReceiver); if (isEnd) { if (isKeyBall) { ///m_Match.HandleRoundMark(mRoundIndex, mBeatResult.LatestRoundMark, mBeatResult.LatestBeatRank, mBeatResult.LatestRoundRank); ++mRoundIndex; mBeatResult.StartNewRound(); } RecycleDrumBall(drumBall); } return(curHeadRank); }