コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }