Пример #1
0
    bool IsBeatValid(TaiguBallType ballType, TaiguBeatType beatType)
    {
        if (ballType == TaiguBallType.Red && beatType == TaiguBeatType.Left)
        {
            return(true);
        }

        if (ballType == TaiguBallType.Blue && beatType == TaiguBeatType.Right)
        {
            return(true);
        }

        if (ballType == TaiguBallType.RBMix && beatType == TaiguBeatType.LRMix)
        {
            return(true);
        }

        if (ballType == TaiguBallType.HoldBegin &&
            (beatType == TaiguBeatType.Left || beatType == TaiguBeatType.Right || beatType == TaiguBeatType.LRMix) &&
            m_headRank != BeatResultRank.Miss)
        {
            return(true);
        }

        return(false);
    }
Пример #2
0
    TaiguBeatType FixBeatType(TaiguBeatType beatType)
    {
        if (beatType == TaiguBeatType.Left || beatType == TaiguBeatType.Right)
        {
            TaiguDrumBall drumBall = CurrentLeadBall();
            if (drumBall != null && drumBall.BallType == TaiguBallType.RBMix)
            {
                float checkOffset = drumBall.transform.position.x - m_CheckPos.position.x;
                if (mBeatResult.InCheckRange(checkOffset))
                {
                    if (mLastBeatType == TaiguBeatType.Nothing)
                    {
                        mLastBeatTime = Time.realtimeSinceStartup;
                        mLastBeatType = beatType;

                        beatType = TaiguBeatType.Ignore;
                    }
                    else if (mLastBeatType != beatType)
                    {
                        mLastBeatTime = 0f;
                        mLastBeatType = TaiguBeatType.Nothing;

                        beatType = TaiguBeatType.LRMix;
                    }
                }
            }
        }

        return(beatType);
    }
Пример #3
0
    public void ProcessInput()
    {
        TaiguBeatType downType = TaiguBeatType.Nothing;

        if (Input.GetKeyDown(KeyCode.F) && Input.GetKeyDown(KeyCode.J))
        {
            downType = TaiguBeatType.LRMix;
        }
        else
        {
            if (Input.GetKeyDown(KeyCode.F))
            {
                downType = TaiguBeatType.Left;
            }
            else if (Input.GetKeyDown(KeyCode.J))
            {
                downType = TaiguBeatType.Right;
            }
            else if (Input.GetKeyDown(KeyCode.Q))
            {
            }
        }

        if (downType != TaiguBeatType.Nothing)
        {
            SendMessage("OnDrumDown", downType, SendMessageOptions.DontRequireReceiver);
        }

        TaiguBeatType upType = TaiguBeatType.Nothing;

        if (Input.GetKeyUp(KeyCode.F) && Input.GetKeyUp(KeyCode.J))
        {
            upType = TaiguBeatType.LRMix;
        }
        else
        {
            if (Input.GetKeyUp(KeyCode.F))
            {
                upType = TaiguBeatType.Left;
            }
            else if (Input.GetKeyUp(KeyCode.J))
            {
                upType = TaiguBeatType.Right;
            }
        }

        if (upType != TaiguBeatType.Nothing)
        {
            SendMessage("OnDrumUp", upType, SendMessageOptions.DontRequireReceiver);
        }
    }
Пример #4
0
    void OnDrumDown(TaiguBeatType beatType)
    {
        if (beatType == TaiguBeatType.Left)
        {
            m_RedDrumUp.SetActive(false);
            m_RedDrumDown.SetActive(true);
            if (m_RedEffect != null)
            {
                m_RedEffect.Stop();
                m_RedEffect.Play();
            }
        }
        else if (beatType == TaiguBeatType.Right)
        {
            m_BlueDrumUp.SetActive(false);
            m_BlueDrumDown.SetActive(true);
            if (m_BlueEffect != null)
            {
                m_BlueEffect.Stop();
                m_BlueEffect.Play();
            }
        }
        else if (beatType == TaiguBeatType.LRMix)
        {
            m_RedDrumUp.SetActive(false);
            m_BlueDrumUp.SetActive(false);
            m_RedDrumDown.SetActive(true);
            m_BlueDrumDown.SetActive(true);

            if (m_BlueEffect != null)
            {
                m_BlueEffect.Stop();
                m_BlueEffect.Play();
            }
            if (m_RedEffect != null)
            {
                m_RedEffect.Stop();
                m_RedEffect.Play();
            }
        }

        TaiguBeatType actualType = FixBeatType(beatType);

        if (actualType != TaiguBeatType.Ignore)
        {
            CheckBeat(actualType);
        }
    }
Пример #5
0
    public void OnUpdate()
    {
        Vector3 pos = m_BallCaptain.transform.position;

        pos.x = m_BeginPos.position.x + mBallSpeed * m_Match.CurrentTime;
        m_BallCaptain.transform.position = pos;

        CheckExceed();

        if (!Mathf.Approximately(mLastBeatTime, 0f))
        {
            if (mLastBeatTime + m_ThresholdTime < Time.realtimeSinceStartup)
            {
                mLastBeatTime = 0f;
                mLastBeatType = TaiguBeatType.Nothing;
            }
        }
    }
Пример #6
0
    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;
            }
        }
    }
Пример #7
0
 void OnDrumUp(TaiguBeatType beatType)
 {
     if (beatType == TaiguBeatType.Left)
     {
         m_RedDrumDown.SetActive(false);
         m_RedDrumUp.SetActive(true);
     }
     else if (beatType == TaiguBeatType.Right)
     {
         m_BlueDrumDown.SetActive(false);
         m_BlueDrumUp.SetActive(true);
     }
     else if (beatType == TaiguBeatType.LRMix)
     {
         m_RedDrumDown.SetActive(false);
         m_BlueDrumDown.SetActive(false);
         m_RedDrumUp.SetActive(true);
         m_BlueDrumUp.SetActive(true);
     }
 }