Example #1
0
        protected override void MovePhase()
        {
            base.MovePhase();

            if (gameObject.activeSelf)
            {
                float ProgressBy100 = CurrentFrame * Speed;
                float ProgressBy1   = ProgressBy100 / 100;
                if (!IsHit && (!Mode.Equals(NoteInfo.SlideNoteStart) || (Mode.Equals(NoteInfo.SlideNoteStart) && Game.Frame < ReachFrame)))
                {
                    if (Game.Mode.Equals(GameMode.Theater2P))
                    {
                        float cX = NotePath.GetTheaterX(StartPos.x, EndPos.x, ProgressBy1);
                        float cY = NotePath.GetTheaterPortY(ProgressBy100);
                        CurrentPos = new Vector3(cX, cY, CurrentPos.z);
                        Body.anchoredPosition3D = CurrentPos;
                        Body.localScale         = new Vector3(NotePath.GetTheaterScale(ProgressBy1), NotePath.GetTheaterScale(ProgressBy1), 1);
                    }
                    else
                    {
                        float cX = NotePath.GetTheaterX(StartPos.x, EndPos.x, ProgressBy1);
                        float cY = NotePath.GetTheaterY(ProgressBy100);
                        CurrentPos = new Vector3(cX, cY, CurrentPos.z);
                        Body.anchoredPosition3D = CurrentPos;
                        Body.localScale         = new Vector3(NotePath.GetTheaterScale(ProgressBy1), NotePath.GetTheaterScale(ProgressBy1), 1);
                    }
                    BeforePos = CurrentPos;
                }
                else if (Mode.Equals(NoteInfo.SlideNoteStart) && !Game.Paused && (IsHit || Game.Frame >= ReachFrame))
                {
                    Body.anchoredPosition3D += new Vector3(((Game.Dispensor.Notes[NextNoteID].EndPos.x - EndPos.x) / ((SlideFrameDistance + SlideFrameCalibrator) / 60)) * Time.deltaTime, 0);
                    if (IsHit)
                    {
                        FlickBorderLeft  = Body.anchoredPosition3D.x - 79;
                        FlickBorderRight = Body.anchoredPosition3D.x + 79;
                    }
                }

                if (!Game.Paused)
                {
                    if (Mode.Equals(NoteInfo.LongNoteStart) && !IsHit)
                    {
                        TailToNext.SetStartPos(Body.anchoredPosition3D, ProgressBy1, SizeInPixelNext * (140f / 100));
                    }
                    if ((Mode.Equals(NoteInfo.SlideNoteStart) || Mode.Equals(NoteInfo.SlideNoteCheckpoint) && TailToNext != null))
                    {
                        TailToNext.SetStartPos(Body.anchoredPosition3D, (Mode.Equals(NoteInfo.SlideNoteStart) && Game.Frame >= ReachFrame) ? 1 : ProgressBy1, SizeInPixelNext * (140f / 100), (Game.Frame - LastSlideReachFrame) / (Game.Dispensor.Notes[NextNoteID].ReachFrame - LastSlideReachFrame));
                        if (!Game.Dispensor.Notes[NextNoteID].IsAppeared)
                        {
                            TailToNext.SetDeltaEndPos((Game.Dispensor.Notes[NextNoteID].StartPos - StartPos) / (SlideFrameDistance + SlideFrameCalibrator), 0, SizeInPixelNext * (140f / 100), (Game.Frame - LastSlideAppearFrame) / (Game.Dispensor.Notes[NextNoteID].AppearFrame - LastSlideAppearFrame));
                        }
                    }
                    if (TailsFromPrevious.Count > 0)
                    {
                        for (int i = 0; i < TailsFromPrevious.Count; i++)
                        {
                            if (TailsFromPrevious[i] != null)
                            {
                                TailsFromPrevious[i].SetEndPos(Body.anchoredPosition3D, CurrentFrame * Speed > 100 ? 1 : ProgressBy1, SizeInPixelPrev * (140f / 100));
                            }
                        }
                    }
                }
            }
        }