static public void ConvertMacro( ref Js_macro_OBJ _macros, string[] _score, string _song_name, ref DiffName _diff) { ((Js_macro_OBJ.class_Primitive_Combo)_macros.Primitives[0]).Description = _song_name + "_" + _diff.shortName + " (left)"; ((Js_macro_OBJ.class_Primitive_Combo)_macros.Primitives[1]).Description = _song_name + "_" + _diff.shortName + " (right)"; List <Js_macro_OBJ.class_Primitive_Combo.class_Event>[] events = { new List <Js_macro_OBJ.class_Primitive_Combo.class_Event>(0x400), new List <Js_macro_OBJ.class_Primitive_Combo.class_Event>(0x400), }; for (int i0 = 0; i0 < _score.Length; ++i0) { InsertNoteMacroFromString(events, _score[i0], ref _diff); } PostProcessMacro(ref _macros, events); }
static public void ConvertMacro( ref Js_macro_OBJ _macros, ref Js_notes_OBJ _notes, ref SongName _song, ref DiffName _diff) { ((Js_macro_OBJ.class_Primitive_Combo)_macros.Primitives[0]).Description = _song.urlName + "_" + _diff.shortName + " (left)"; ((Js_macro_OBJ.class_Primitive_Combo)_macros.Primitives[1]).Description = _song.urlName + "_" + _diff.shortName + " (right)"; List <Js_macro_OBJ.class_Primitive_Combo.class_Event>[] events = { new List <Js_macro_OBJ.class_Primitive_Combo.class_Event>(0x400), new List <Js_macro_OBJ.class_Primitive_Combo.class_Event>(0x400), }; StateTimeline[] Handbusy = { new StateTimeline(), new StateTimeline(), }; for (int i0 = 0, _lr, _fl, _time; i0 < _notes.Notes.Length; ++i0) { _lr = _diff.IsLeft(_notes.Notes[i0].EndX) && !Handbusy[0].IsIn(_notes.Notes[i0].Ticks) || Handbusy[1].IsIn(_notes.Notes[i0].Ticks) ? 0 : 1; _fl = _notes.Notes[i0].FollowingNotes == null ? 0 : _notes.Notes[i0].FollowingNotes.Length; _time = FromTicksToMilisecond(_notes.Notes[i0].Ticks, _notes.Conductors); if (_fl == 0) { InsertNoteMacro( ref events[_lr], _time, _notes.Notes[i0].EndX, _notes.Notes[i0].Type == 100 ? 7 : _notes.Notes[i0].FlickDirection, ref _diff); if (_notes.Notes[i0].FlickDirection == 0) { Handbusy[_lr].Insert(_notes.Notes[i0].Ticks, _notes.Notes[i0].Ticks + 5); } else { Handbusy[_lr].Insert(_notes.Notes[i0].Ticks - 20, _notes.Notes[i0].Ticks + 20); } } else { InsertNoteMacro( ref events[_lr], _time, _notes.Notes[i0].EndX, 4, ref _diff); for (int i1 = 0; i1 < _fl; ++i1) { _time = FromTicksToMilisecond(_notes.Notes[i0].FollowingNotes[i1].Ticks, _notes.Conductors); InsertNoteMacro( ref events[_lr], _time, _notes.Notes[i0].FollowingNotes[i1].EndX, _notes.Notes[i0].FollowingNotes[i1].FlickDirection != 0 ? _notes.Notes[i0].FollowingNotes[i1].FlickDirection : i1 + 1 == _fl ? 6 : 5, ref _diff); } Handbusy[_lr].Insert(_notes.Notes[i0].Ticks, _notes.Notes[i0].FollowingNotes.Last().Ticks); } } PostProcessMacro(ref _macros, events); }
static void PostProcessMacro( ref Js_macro_OBJ _m, List <Js_macro_OBJ.class_Primitive_Combo.class_Event>[] _es) { int time_init, time_exit; PostProcessNotes(ref _es[0]); PostProcessNotes(ref _es[1]); { int i0, i1, i2, i3; if (_es[0].Count != 0) { i0 = _es[0][0].Timestamp; i2 = _es[0].Last().Timestamp; } else { i0 = 0; i2 = 0; } if (_es[1].Count != 0) { i1 = _es[1][0].Timestamp; i3 = _es[1].Last().Timestamp; } else { i1 = 0; i3 = 0; } time_init = i0 <= i1 ? i0 : i1; time_exit = i2 <= i3 ? i3 : i2; } //Add signal of macro end _es[0].Add(new Js_macro_OBJ.class_Primitive_Combo.class_Event { Timestamp = time_exit + 500, X = 36.0, Y = 50.0, Delta = 0, EventType = "MouseDown", }); _es[1].Add(new Js_macro_OBJ.class_Primitive_Combo.class_Event { Timestamp = time_exit + 500, X = 64.0, Y = 50.0, Delta = 0, EventType = "MouseDown", }); _es[0].Add(new Js_macro_OBJ.class_Primitive_Combo.class_Event { Timestamp = time_exit + 510, X = 36.0, Y = 50.0, Delta = 0, EventType = "MouseUp", }); _es[1].Add(new Js_macro_OBJ.class_Primitive_Combo.class_Event { Timestamp = time_exit + 510, X = 64.0, Y = 50.0, Delta = 0, EventType = "MouseUp", }); //Align start timepoint to the first note for (int i1 = _es[0].Count; --i1 >= 0;) { _es[0][i1].Timestamp -= time_init; } for (int i1 = _es[1].Count; --i1 >= 0;) { _es[1][i1].Timestamp -= time_init; } ((Js_macro_OBJ.class_Primitive_Combo)_m.Primitives[0]).Events = new Js_macro_OBJ.class_Primitive_Combo.class_Event[_es[0].Count]; _es[0].CopyTo(((Js_macro_OBJ.class_Primitive_Combo)_m.Primitives[0]).Events); ((Js_macro_OBJ.class_Primitive_Combo)_m.Primitives[1]).Events = new Js_macro_OBJ.class_Primitive_Combo.class_Event[_es[1].Count]; _es[1].CopyTo(((Js_macro_OBJ.class_Primitive_Combo)_m.Primitives[1]).Events); }