Пример #1
0
 /// <summary>
 /// The constructor with parameters.
 /// </summary>
 /// <param name="chart">The associated chart.</param>
 /// <param name="eventLine">The current event line.</param>
 public Section(Chart chart, EventLine eventLine)
 {
     _chart      = chart;
     _synchTrack = chart.FindCurrentSynch(eventLine.Tick);
     _guid       = Guid.NewGuid();
     _eventLine  = eventLine;
 }
Пример #2
0
        /// <summary>
        /// Clones and copies the current reference.
        /// </summary>
        /// <returns>SynchTrack</returns>
        public SynchTrack Clone()
        {
            SynchTrack synchTrack = new SynchTrack(Chart);

            synchTrack._tick           = _tick;
            synchTrack._measures       = _measures;
            synchTrack._beatsPerMinute = _beatsPerMinute;
            return(synchTrack);
        }
Пример #3
0
 /// <summary>
 /// The constructor with parameters.
 /// </summary>
 /// <param name="chart">The parent chart.</param>
 /// <param name="eventLine">The associated event line.</param>
 /// <param name="keyParent">The key aprent associated to this event.</param>
 public NoteEvent(Chart chart, EventLine eventLine, string keyParent)
 {
     _chart         = chart;
     _keyParent     = keyParent;
     _synchTrack    = chart.FindCurrentSynch(eventLine.Tick);
     _eventLine     = eventLine;
     _highestFret   = eventLine.Index;
     _buttonIndexes = new bool[5];
     CheckNoteIndex();
     _guid = Guid.NewGuid();
 }
Пример #4
0
        /// <summary>
        /// Calculates and converts a tick to a time in microseconds relative to a desired synch track.
        /// </summary>
        /// <param name="synchTrack">The synch track to be relative to.</param>
        /// <param name="Tick">The current tick to convert.</param>
        /// <returns>long</returns>
        public long CalculateTickToTimeRelative(SynchTrack synchTrack, long Tick)
        {
            long microseconds;

            if (synchTrack.BeatsPerMinute == 0)
            {
                microseconds = 0;
            }
            else
            {
                microseconds = 60000000000 / synchTrack.BeatsPerMinute;
            }

            return(Tick_to_Time(Tick - synchTrack.Tick,
                                microseconds,
                                Resolution) + synchTrack.TrueTime);
        }
Пример #5
0
        /// <summary>
        /// Processes all synch tracks.
        /// </summary>
        internal static SynchTrack[] ProcessSynchTracks(IEnumerator enumerator, Chart chart)
        {
            string currentLine;

            SynchTrack[] synchTracks;
            SynchTrack   synchTrack;
            SynchTrack   previousSynchTrack;

            long previousBPM = 0;
            long MicroBeatsPerMinute;

            List <SynchTrack> synchTracksList = new List <SynchTrack>();

            // Create default synch tracks for later use.
            synchTrack         = new SynchTrack(chart);
            previousSynchTrack = synchTrack.Clone();

            // Move to next line and check if there is there a next line.
            while ((enumerator.MoveNext()) && (enumerator.Current != null))
            {
                // Assign next line as currentLine.
                currentLine = string.Empty;
                currentLine = enumerator.Current as string;

                // If line is not empty, continue.
                if (!currentLine.Equals(string.Empty))
                {
                    if (currentLine.Contains("}"))
                    {
                        break;
                    }
                    else if (!currentLine.Contains("{"))
                    {
                        // Clone and process the previous synch track.
                        synchTrack = previousSynchTrack.Clone();
                        synchTrack.ProcessLine(currentLine);

                        // If the beats per minute have changed, re-assign the latest version.
                        if (previousSynchTrack.BeatsPerMinute != previousBPM)
                        {
                            previousBPM = previousSynchTrack.BeatsPerMinute;
                        }

                        if (previousBPM == 0)
                        {
                            MicroBeatsPerMinute = 0;
                        }
                        else
                        {
                            MicroBeatsPerMinute = 60000000000 / previousBPM;
                        }


                        synchTrack._time = Chart.Tick_to_Time(
                            synchTrack.Tick - previousSynchTrack.Tick,
                            MicroBeatsPerMinute,
                            chart.Resolution)
                                           + previousSynchTrack.TrueTime;

                        if (synchTracksList.Count == 0)
                        {
                            synchTracksList.Add(synchTrack);
                        }

                        if (previousSynchTrack.Tick == synchTrack.Tick)
                        {
                            previousSynchTrack.ProcessLine(currentLine);
                        }
                        else
                        {
                            synchTracksList.Add(synchTrack);
                            previousSynchTrack = synchTrack;
                        }
                    }
                }
            }

            synchTracks = new SynchTrack[synchTracksList.Count];
            synchTracksList.CopyTo(synchTracks);

            return(synchTracks);
        }