//this makes our beatmap from the json file void PrepareData(string name) { currentSong = SongSource.getSong(name); if (currentSong.tracks.Length > 0) { for (int i = 0; i < currentSong.tracks.Length; i++) { //go through each track first for (int j = 0; j < currentSong.tracks[i].notes.Length; j++) { //this will convert the note time from seconds to beats currentSong.tracks[i].notes[j].beatTime = currentSong.tracks[i].notes[j].time * currentSong.header.bpm / 60f; //assuming 4/4 time for now int measure = Mathf.FloorToInt(currentSong.tracks[i].notes[j].beatTime / 4f); int beat = Mathf.FloorToInt(currentSong.tracks[i].notes[j].beatTime - (measure * 4)); int tick = Mathf.FloorToInt((currentSong.tracks[i].notes[j].beatTime - (measure * 4) - beat) * 96); currentSong.tracks[i].notes[j].mbtValue = new MBT(measure, beat, tick); //assign this midi note to a beatmap event BeatMapEvent bmEvent = new BeatMapEvent(); bmEvent.eventMBT = currentSong.tracks[i].notes[j].mbtValue; bmEvent.eventMBT.Measure += 1; bmEvent.eventMBT.Beat += 1; bmEvent.eventMBT.Tick += 1; //depending on which note it is, assign the prefab accordingly if (!useFallingGemInputClass) { switch (currentSong.tracks[i].notes[j].name) { case "C1": bmEvent.inputKey = KeyCode.R; break; case "C#1": bmEvent.inputKey = KeyCode.G; break; case "D1": bmEvent.inputKey = KeyCode.B; break; } } else { foreach (BeatmapPair bmPair in beatmapParser.beatmapPairs) { if (bmPair.midiNote == currentSong.tracks[i].notes[j].name) { bmEvent.unityInput = bmPair.unityInput; } } } beatEvents.Add(bmEvent); } } } }
void createCPUTurn() { GameObject beatHolder = Instantiate(cpuTypingFab); for (int i = 0; i < turnLength / 2; i++) { BeatMapEvent newEvent = new BeatMapEvent(); MBT newMeasure = new MBT(clock.GetMBT().Measure + 2 * (i + 1), 0, 0); newEvent.eventMBT = newMeasure; typingBeat newBeat; newBeat = Instantiate(beatFab, beatHolder.transform.position, Quaternion.identity, beatHolder.transform).GetComponent <typingBeat>(); newBeat.transform.localPosition = new Vector2(-1 + i, 0); newEvent.inputKey = KeyCode.Space; newBeat.GetComponent <typingBeat>().bmEvent = newEvent; newBeat.OkWindowStart = newBeat.bmEvent.eventMBT.GetMilliseconds() - (0.5d * OkWindowMillis); newBeat.OkWindowEnd = newBeat.bmEvent.eventMBT.GetMilliseconds() + (0.5d * OkWindowMillis); newBeat.GoodWindowStart = newBeat.bmEvent.eventMBT.GetMilliseconds() - (0.5d * GoodWindowMillis); newBeat.GoodWindowEnd = newBeat.bmEvent.eventMBT.GetMilliseconds() + (0.5d * GoodWindowMillis); newBeat.PerfectWindowStart = newBeat.bmEvent.eventMBT.GetMilliseconds() - (0.5d * PerfectWindowMillis); newBeat.PerfectWindowEnd = newBeat.bmEvent.eventMBT.GetMilliseconds() + (0.5d * PerfectWindowMillis); beatMade = true; } }