//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);
                }
            }
        }
    }
Example #2
0
    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;
        }
    }