Example #1
0
        void StateUpdate()
        {
            //      -missTime    -perTime     perTime   missTime
            //  none    |     good   |    per    |   good  |    miss
            if (State != NoteState.None)
            {
                return;
            }
            NoteState prevState = State;

            if (Stage.TheStageSetting.AutoPlay)
            {
                BeatOffset = 0f;
                State      = Stage.Time > this.Time ? NoteState.Perfect : NoteState.None;
                if (prevState != State)
                {
                    StageScore.AddScore(State);
                }
            }
            else if (Stage.Time - Time > Stage.TheStageSetting.MissTime)
            {
                BeatOffset = Stage.TheStageSetting.MissTime;
                State      = NoteState.Miss;
                if (prevState != State)
                {
                    StageScore.AddScore(State);
                }
            }
            else if (BeatOffset < -Stage.TheStageSetting.MissTime)
            {
                State = NoteState.None;
            }
            else if (BeatOffset < -Stage.TheStageSetting.PerfectTime)
            {
                State = NoteState.Good;
            }
            else if (BeatOffset < Stage.TheStageSetting.PerfectTime)
            {
                State = NoteState.Perfect;
            }
            else if (BeatOffset < Stage.TheStageSetting.MissTime)
            {
                State = NoteState.Good;
            }
            else
            {
                State = NoteState.Miss;
            }



            if (prevState != State)
            {
                Ani.SetTrigger(State.ToString());
            }
        }
Example #2
0
 void Awake()
 {
     Main = this;
     TheStageSetting.UserName   = ObscuredPrefs.GetString("UserName", "");
     TheStageSetting.SpeedScale = PlayerPrefs.GetInt("SpeedScale", 4);
     InitAimTransform();
     for (int i = 0; i < 6; i++)
     {
         Main.StringAimPos[i] = TheStageSetting.StringTFs[i].position;
     }
     TheStageSetting.AutoPlay = true;
     StageScore.Close();
     StageMusic.StopToEndCallback += this.OnMusicEnd;
     BeatMapManager.StageAwake();
     InputManager.StageAwake();
 }
Example #3
0
        private IEnumerator LoadLevel(string songPath, string beatMapPath)
        {
            Loading = true;

            StageMusic.Main.Stop();

            RemoveAllNotes(NoteState.None);
            StageScore.Close();

            HoldOn.Show();
            HoldOn.SetProgress(0f / 2f);

            // Load Music
            yield return(LoadSong(songPath));

            HoldOn.SetProgress(1f / 2f);

            // Load Beat Map
            yield return(LoadBeatMap(beatMapPath));

            HoldOn.SetProgress(2f / 2f);

            HoldOn.Hide();
            Resources.UnloadUnusedAssets();

            TheStageSetting.AutoPlay = TheStageSetting.AutoPlayIsOn;

            GamePlaying = true;

            yield return(new WaitForSeconds(0.5f));

            RemoveAllNotes();
            yield return(new WaitForSeconds(0.5f));


            // Ready -- Go --

            StageMusic.Main.Play();
            StageMicrophone.MicrophoneStart(Mathf.CeilToInt(StageMusic.Main.Length));

            Loading = false;
            yield return(null);
        }
Example #4
0
        private IEnumerator LoadBeatMap(string path)
        {
            // Check
            if (!File.Exists(path))
            {
                yield return(LoadLevelFail("BeatMapFile Path is NOT exists! " + path));
            }

            // Load
            BeatMapManager.ClearBeatMap();
            bool success = BeatMapManager.LoadBeatMap(path);

            if (!success)
            {
                yield return(LoadLevelFail("Failed to load beatMap! " + path));
            }
            StageScore.Open(BeatMapManager.GetNoteSum());

            yield return(null);
        }
Example #5
0
 public static void StopGame()
 {
     if (Loading || !Main)
     {
         return;
     }
     StageMusic.Main.Clear();
     StageMicrophone.MicrophoneStop();
     BeatMapManager.ClearBeatMap();
     GamePlaying = false;
     TheStageSetting.TitleBGM.UnPause();
     TheStageSetting.AutoPlayTagOn  = TheStageSetting.AutoPlay;
     TheStageSetting.ResultScore    = 0;
     TheStageSetting.ResultPerfect  = StageScore.PerfectNum;
     TheStageSetting.ResultGood     = StageScore.GoodNum;
     TheStageSetting.ResultMiss     = StageScore.MissNum;
     TheStageSetting.ResultMaxCombo = StageScore.MaxCombo;
     InitAimTransform();
     RemoveAllNotes();
     TheStageSetting.AutoPlay = true;
     StageScore.Close();
 }
Example #6
0
        public static void Beat(int fret, int stringID, float time = -1f)
        {
            int len = NotePool.Count;

            for (int i = 0; i < len; i++)
            {
                Note note = NotePool[i].GetComponent <Note>();
                if (note)
                {
                    if (note.Y != stringID)
                    {
                        continue;
                    }
                    if (note.X != fret && note.Type != NoteInfo.NoteType.Zero)
                    {
                        continue;
                    }
                    if (time < 0f)
                    {
                        time = StageMusic.Main.Time;
                    }
                    if (note.Time > time + TheStageSetting.MissTime)
                    {
                        break;
                    }
                    else
                    {
                        NoteState state = note.Beat(time);
                        if (state != NoteState.None && state != NoteState.Holding)
                        {
                            StageScore.AddScore(state);
                            break;
                        }
                    }
                }
            }
        }