Exemplo n.º 1
0
 public void SetDirection(MusicEventTypes type)
 {
     if (type == MusicEventTypes.Down)
     {
         transform.localEulerAngles = new Vector3(0, 0, 180);
     }
     else if (type == MusicEventTypes.Up)
     {
         transform.localEulerAngles = new Vector3(0, 0, 0);
     }
     else if (type == MusicEventTypes.Left)
     {
         transform.localEulerAngles = new Vector3(0, 0, 90);
     }
     else
     {
         transform.localEulerAngles = new Vector3(0, 0, 270);
     }
 }
    public List <MusicEvent> quarters(int numQuarters = 20)
    {
        List <MusicEvent> events = new List <MusicEvent> ();
//		int numQuarters = 20;
        int offset = 4;

        for (int i = 0; i < numQuarters; i++)
        {
            long time = (i + offset) * bpmToMillisecondsPerBeat(bpm);

            int             rand = UnityEngine.Random.Range(0, 4);
            MusicEventTypes type = MusicEventTypes.Down;
            if (rand == 0)
            {
                type = MusicEventTypes.Down;
            }
            else if (rand == 1)
            {
                type = MusicEventTypes.Left;
            }
            else if (rand == 2)
            {
                type = MusicEventTypes.Right;
            }
            else if (rand == 3)
            {
                type = MusicEventTypes.Up;
            }

            //set all to down for now
            MusicEvent musicEvent = new MusicEvent(MusicEventTypes.Down, time);
            events.Add(musicEvent);
        }

        return(events);
    }
    public void processKey(StandardKeyCodes keycode, long time, bool keyDown = true)
    {
        if (patternMaster.isPlaying())
        {
            StandardControls control        = KeyMappings.keyToControl(keycode);
            MusicEventTypes  musicEventType = controlToEventType [control];

            //find first matching event
//			int index = events[eventType].FindIndex (e => actionMatches(eventType, e));
            //		Debug.Log (events[0]);

            var relevantEvents = events;
            if (!keyDown)              //keyup
            {
                relevantEvents = releaseEvents;
            }

            if (relevantEvents [musicEventType].Count > 0)
            {
                MusicEvent e = relevantEvents[musicEventType][0];


                if (keyDown)
                {
                    long expectedTime = patternMaster.absTime(e.startTime);
                    long delta        = expectedTime - time;

                    long adjustedError = delta + latencyAdjustment;
                    //only consider if within scoring range
                    if (delta < ScorableThreshold)
                    {
//						Debug.LogFormat ("Delta {0}", delta);
//						Debug.LogFormat ("Adjusted delta {0}", adjustedError);

                        ScoreLevels score = ReportQuality(adjustedError);

                        Messenger <ScoreLevels> .Invoke(MessengerKeys.EVENT_SCORE, score);

                        panel.log("Score", scoreToString [score]);

                        //					if (mode == ScoreCalculatorMode.Calibration) {
                        //						calibrator.addDelta ((int)delta);
                        //					}
                        relevantEvents [musicEventType].RemoveAt(0);

                        Messenger <MusicEvent> .Invoke(MessengerKeys.EVENT_HIT, e);


                        if (e.isHeldEvent())
                        {
                            releaseEventActive [e] = true;
                        }
                    }
                }
                else
                {
                    long expectedUpTime = patternMaster.absTime(e.endTime);
                    long delta          = expectedUpTime - time;
                    long adjusted       = delta + latencyAdjustment;
                    //only register relases if already down
                    if (releaseEventActive.ContainsKey(e))
                    {
                        ScoreLevels score = ReportQuality(adjusted);
//						Debug.LogFormat ("Release {0}", adjusted);

                        relevantEvents [musicEventType].RemoveAt(0);
                        Messenger <ScoreLevels> .Invoke(MessengerKeys.EVENT_SCORE, score);

                        Messenger <MusicEvent> .Invoke(MessengerKeys.EVENT_HELD_RELEASED, e);
                    }
                }
            }
        }
    }
 public MusicEvent(MusicEventTypes eventType, long startTime)
 {
     this.eventType = eventType;
     this.startTime = startTime;
     this.endTime   = startTime;
 }