Esempio n. 1
0
 public ArcChart(RawAffChart raw)
 {
     AudioOffset = raw.AudioOffset;
     foreach (var item in raw.items)
     {
         addRawItem(item);
     }
 }
Esempio n. 2
0
 public ArcChart(RawAffChart raw)
 {
     AudioOffset = raw.AudioOffset;
     TimingPointDensityFactor = raw.TimingPointDensityFactor;
     AdditionalMetadata       = raw.additionalMetadata;
     foreach (var item in raw.items)
     {
         addRawItem(item, null);
     }
 }
Esempio n. 3
0
        public void Serialize(Stream stream, ChartSortMode mode = ChartSortMode.Timing)
        {
            List <ArcEvent> events = new List <ArcEvent>();

            events.AddRange(Timings);
            events.AddRange(Taps);
            events.AddRange(Holds);
            events.AddRange(Arcs);
            events.AddRange(Cameras);
            events.AddRange(SceneControl);
            switch (mode)
            {
            case ChartSortMode.Timing:
                events = events.OrderBy(arcEvent => arcEvent.Timing)
                         .ThenBy(arcEvent => (arcEvent is ArcTiming ? 1 : arcEvent is ArcTap ? 2 : arcEvent is ArcHold ? 3 : arcEvent is ArcArc ? 4 : 5))
                         .ToList();
                break;

            case ChartSortMode.Type:
                events = events.OrderBy(arcEvent => (arcEvent is ArcTiming ? 1 : arcEvent is ArcTap ? 2 : arcEvent is ArcHold ? 3 : arcEvent is ArcArc ? 4 : 5))
                         .ThenBy(arcEvent => arcEvent.Timing)
                         .ToList();
                break;
            }
            RawAffChart raw = new RawAffChart();

            raw.AudioOffset = ArcAudioManager.Instance.AudioOffset;
            foreach (var e in events)
            {
                if (e is IIntoRawItem)
                {
                    raw.items.Add((e as IIntoRawItem).IntoRawItem());
                }
            }
            ArcaeaFileFormat.DumpToStream(stream, raw);
        }
Esempio n. 4
0
        public void Serialize(Stream stream, ChartSortMode mode = ChartSortMode.Timing)
        {
            List <ArcEvent> events = new List <ArcEvent>();

            events.AddRange(Timings);
            events.AddRange(Cameras);
            events.AddRange(SceneControl);
            events.AddRange(Taps);
            events.AddRange(Holds);
            events.AddRange(Arcs);

            List <ArcEvent> mainEvents = new List <ArcEvent>();
            Dictionary <ArcTimingGroup, List <ArcEvent> > timingGroupEvents = new Dictionary <ArcTimingGroup, List <ArcEvent> >();

            foreach (var timingGroup in TimingGroups)
            {
                timingGroupEvents.Add(timingGroup, new List <ArcEvent>());
                timingGroupEvents[timingGroup].AddRange(timingGroup.Timings);
            }

            foreach (var arcEvent in events)
            {
                if (arcEvent is IHasTimingGroup)
                {
                    ArcTimingGroup timingGroup = (arcEvent as IHasTimingGroup).TimingGroup;
                    if (timingGroup != null)
                    {
                        timingGroupEvents[timingGroup].Add(arcEvent);
                        continue;
                    }
                }
                mainEvents.Add(arcEvent);
            }

            mainEvents = SortedEvent(mainEvents, mode);
            foreach (var timingGroup in TimingGroups)
            {
                timingGroupEvents[timingGroup] = SortedEvent(timingGroupEvents[timingGroup], mode);
            }

            RawAffChart raw = new RawAffChart();

            raw.AudioOffset = ArcAudioManager.Instance.AudioOffset;
            raw.TimingPointDensityFactor = TimingPointDensityFactor;
            raw.additionalMetadata       = AdditionalMetadata;
            foreach (var e in mainEvents)
            {
                if (e is IIntoRawItem)
                {
                    var rawItem = (e as IIntoRawItem).IntoRawItem();
                    raw.items.Add(rawItem);
                }
            }
            foreach (var timingGroup in TimingGroups)
            {
                var timingGroupItem = new RawAffTimingGroup()
                {
                    Items = new List <IRawAffNestableItem>(),
                    Type  = timingGroup.Type
                };
                foreach (var e in timingGroupEvents[timingGroup])
                {
                    if (e is IIntoRawItem)
                    {
                        var rawItem = (e as IIntoRawItem).IntoRawItem() as IRawAffNestableItem;
                        timingGroupItem.Items.Add(rawItem);
                    }
                }
                raw.items.Add(timingGroupItem);
            }
            ArcaeaFileFormat.DumpToStream(stream, raw);
        }