Exemplo n.º 1
0
        void OnEventUpdate(BMSEvent bmsEvent)
        {
            switch (bmsEvent.type)
            {
            case BMSEventType.WAV: PlayWAV((int)bmsEvent.data2, bmsEvent.sliceStart, bmsEvent.sliceEnd); break;

            case BMSEventType.BMP: ChangeBGA(bmsEvent.data1, (int)bmsEvent.data2); break;

            case BMSEventType.BeatReset:
                bpmBasePointBeatFlow = 0;
                bpmBasePoint         = timePosition;
                currentTimeSignature = (float)bmsEvent.Data2F;
                break;

            case BMSEventType.BPM:
                float newBpm = (float)bmsEvent.Data2F;
                bpmBasePointBeatFlow += (timePosition - bpmBasePoint).ToAccurateMinuteF() * bpm;
                bpmBasePoint          = timePosition;
                bpm = newBpm;
                CalculatePreOffset();
                if (OnChangeBPM != null)
                {
                    OnChangeBPM.Invoke(newBpm);
                }
                break;

            case BMSEventType.STOP:
                TimeSpan offset = new TimeSpan(bmsEvent.data2);
                stopPosition  = bmsEvent.time + offset;
                bpmBasePoint -= offset;
                break;

            default:
                if (!handledChannels.Contains(bmsEvent.data1))
                {
                    bool shouldPlayWav = true;
                    if (bmsEvent.type == BMSEventType.LongNoteEnd || bmsEvent.type == BMSEventType.LongNoteStart)
                    {
                        int lnState;
                        if (!autoPlayLNState.TryGetValue(bmsEvent.data1, out lnState))
                        {
                            lnState = 0;
                        }
                        shouldPlayWav = lnState != bmsEvent.data2;
                        autoPlayLNState[bmsEvent.data1] = lnState > 0 ? 0 : bmsEvent.data1;
                    }
                    if (shouldPlayWav)
                    {
                        PlayWAV((int)bmsEvent.data2, bmsEvent.sliceStart, bmsEvent.sliceEnd);
                    }
                }
                if (OnNoteEvent != null)
                {
                    OnNoteEvent.Invoke(bmsEvent);
                }
                break;
            }
        }
Exemplo n.º 2
0
            public void OnNoteEvent()
            {
                var ticks      = 300u;
                var channel    = (byte)2;
                var noteName   = NoteName.A;
                var noteOctave = NoteOctave.Zero;
                var velocity   = (byte)5;

                var x = new OnNoteEvent(ticks, channel, noteName, noteOctave, velocity);
                var y = ReDeserialize(x);

                Assert.That(x.Ticks == y.Ticks);
                Assert.That(x.Channel == y.Channel);
                Assert.That(x.NoteName == y.NoteName);
                Assert.That(x.NoteOctave == y.NoteOctave);
                Assert.That(x.Velocity == y.Velocity);
            }
Exemplo n.º 3
0
 public OnNoteEventLabel(OnNoteEvent onNoteEvent) : base(onNoteEvent)
 {
 }
Exemplo n.º 4
0
 internal NoteEventPair(OnNoteEvent onNoteEvent, OffNoteEvent offNoteEvent)
 {
     this.onNoteEvent  = onNoteEvent;
     this.offNoteEvent = offNoteEvent;
     this.onNoteEvent.NoteEventPair = this.offNoteEvent.NoteEventPair = this;
 }