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()); } }
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(); }
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); }
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); }
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(); }
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; } } } } }