Example #1
0
        /// <summary>
        /// Begins playback of a new playlist of tracks
        /// </summary>
        /// <param name="type">The type of playlist (single track, album, or simple playlist)</param>
        /// <param name="href">The uri to download tracks from</param>
        public async void StartNewSession(PlaybackType type, string href, int totalTracks)
        {
            long currentLock = DateTime.Now.Ticks;

            GlobalLock = currentLock;

            if (!showing)
            {
                showing = true;
                App.mainPage.ShowPlaybackMenu();
            }
            App.mainPage.SetPlaybackMenu(true);

            if (currentSession != null)
            {
                currentSession.Dispose();
            }
            currentSession = new PlaybackSession(currentLock, Settings.playbackSource, type, Settings.shuffleEnabled, href, totalTracks);
            queue.Items.Clear();
            Player.Source           = queue;
            queue.AutoRepeatEnabled = Settings.repeatEnabled;
            await currentSession.LoadTracks(0, PlaybackSession.INITIAL_TRACKS_REQUEST);

            App.mainPage.SetPlaybackMenu(false);
        }
Example #2
0
    /// <summary>
    ///
    /// </summary>
    /// <returns>AudioClip length.</returns>
    private float Play(PlaybackType playbackType)
    {
        AudioClip audioClip = this._audioSelection._SelectedAudioClip;

        switch (playbackType)
        {
        case PlaybackType.Sequential:

            audioClip = this._audioSelection.Next();

            break;

        case PlaybackType.Random:

            audioClip = this._audioSelection.GetRandom();

            break;
        }

        AudioPlayer.Instance.Play(audioClip, this._audioType, this._volume);

        this.StartPlaying(audioClip.length);

        return(audioClip.length);
    }
        private void ShowImageStream(IRandomAccessStreamWithContentType newStream)
        {
            // The incoming stream has image data.  Hide video controls/show image controls and set the image source

            _imageSource = new BitmapImage();

            //Callback to notify the receiver and then detach when the image has completed its loading
            RoutedEventHandler handler = null;

            handler = (o, eventArgs) =>
            {
                _receiver.NotifyLoadedMetadata();
                _imageSource.ImageOpened -= handler;
            };
            _imageSource.ImageOpened += handler;
            _imageSource.SetSource(newStream);

            // Toggle the visibility of the video/image controls if necessary
            if (_currentPlaybackType != PlaybackType.Image)
            {
                if (_currentPlaybackType == PlaybackType.Video)
                {
                    VideoPlayer.Stop();
                }

                ImagePlayer.Opacity = 1;
                VideoPlayer.Opacity = 0;
            }

            // Track the current playback type
            _currentPlaybackType = PlaybackType.Image;
        }
        /// <summary>
        /// Generic implementation for playing a specific event.
        ///
        /// <see cref="PlayNonSpatial(AudioEvent)"/>
        /// <see cref="PlayProximity(AudioEvent, GameObject)"/>
        /// <see cref="PlayWorldspace(AudioEvent, GameObject)"/>
        /// </summary>
        /// <typeparam name="T">The audio source type.</typeparam>
        /// <param name="evt">The event to play</param>
        /// <param name="source">The source on where to play it.</param>
        /// <returns>The created playback of the event.</returns>
        private Playback Play <T>(AudioEvent evt, T source, PlaybackType type) where T : IUTKAudioSource
        {
            evt.Play(source);

            var playback = new Playback()
            {
                evt    = evt,
                source = source,
                type   = type
            };

            this.playbacks.Add(playback);
            return(playback);
        }
Example #5
0
 public void playClip(PlaybackType playbackType)
 {
     switch(playbackType)
     {
         case PlaybackType.Last:	break;
         case PlaybackType.Queue:
             index++;
             break;
         case PlaybackType.Shuffle:
             index = Random.Range(0, AudioClips.Length);
             break;
     }
     audioSource.clip = getClip(index);
     audioSource.Play();
 }
Example #6
0
 /// <summary>
 /// The main constructor
 /// </summary>
 /// <param name="currentLock">The global lock when the session was created, session dies when lock changes</param>
 /// <param name="source">The service to retrieve the song from</param>
 /// <param name="type">What kind of Spotify resource</param>
 /// <param name="shuffle">Whether or not shuffling is enabled for session playback</param>
 /// <param name="tracksHref">The reference to the download location for tracks</param>
 /// <param name="totalTracks">The total number of tracks in the playback session</param>
 public PlaybackSession(long currentLock, PlaybackSource source, PlaybackType type, bool shuffle, string tracksHref, int totalTracks)
 {
     localLock        = currentLock;
     this.source      = source;
     this.type        = type;
     this.shuffling   = shuffle;
     this.tracksHref  = tracksHref;
     this.totalTracks = totalTracks;
     prevRemoteAttempts.Add(0);
     if (App.mainPage != null)
     {
         long loadingKey = DateTime.Now.Ticks;
         MainPage.AddLoadingLock(loadingKey);
         App.mainPage.SetLoadersMessage("", localLock, loadingKey);
         MainPage.RemoveLoadingLock(loadingKey);
     }
 }
Example #7
0
        public void playClip(PlaybackType playbackType)
        {
            switch (playbackType)
            {
            case PlaybackType.Last: break;

            case PlaybackType.Queue:
                index++;
                break;

            case PlaybackType.Shuffle:
                index = Random.Range(0, AudioClips.Length);
                break;
            }
            audioSource.clip = getClip(index);
            audioSource.Play();
        }
        private void ShowVideoStream(IRandomAccessStreamWithContentType newStream)
        {
            // The incoming stream has video data.  Hide image controls/show video controls and set the video source

            // Set the video source - the receiver will be called back when the MediaElement raises its MediaOpened event
            VideoPlayer.SetSource(newStream, newStream.ContentType);
            // Receiver notification occurs in the HandleVideoPlayerMediaOpened handler

            // Toggle the visibility of the video/image controls if necessary
            if (_currentPlaybackType != PlaybackType.Video)
            {
                if (_currentPlaybackType == PlaybackType.Image)
                {
                    ImagePlayer.Source = null;
                }

                ImagePlayer.Opacity = 0;
                VideoPlayer.Opacity = 1;
            }

            // Track the current playback type
            _currentPlaybackType = PlaybackType.Video;
        }
Example #9
0
        private void onPlaybackStateChanged(object sender, EventArgs e)
        {
            switch (playbackType)
            {
            case PlaybackType.NONE:
                repeatIcon.Visibility    = Visibility.Visible;
                repeatOneIcon.Visibility = Visibility.Hidden;
                randomIcon.Visibility    = Visibility.Hidden;
                noneIcon.Visibility      = Visibility.Hidden;
                playbackType             = PlaybackType.REPEAT_ALL;
                break;

            case PlaybackType.REPEAT_ALL:
                repeatIcon.Visibility    = Visibility.Hidden;
                repeatOneIcon.Visibility = Visibility.Visible;
                randomIcon.Visibility    = Visibility.Hidden;
                noneIcon.Visibility      = Visibility.Hidden;
                playbackType             = PlaybackType.REPEAT_ONE;
                break;

            case PlaybackType.REPEAT_ONE:
                repeatIcon.Visibility    = Visibility.Hidden;
                repeatOneIcon.Visibility = Visibility.Hidden;
                randomIcon.Visibility    = Visibility.Visible;
                noneIcon.Visibility      = Visibility.Hidden;
                playbackType             = PlaybackType.RANDOM;
                break;

            case PlaybackType.RANDOM:
                repeatIcon.Visibility    = Visibility.Hidden;
                repeatOneIcon.Visibility = Visibility.Hidden;
                randomIcon.Visibility    = Visibility.Hidden;
                noneIcon.Visibility      = Visibility.Visible;
                playbackType             = PlaybackType.NONE;
                break;
            }
        }
Example #10
0
        public LSprite(Game _assets, BinaryReader _reader)
        {
            this.Name          = _assets.GetString(_reader.ReadInt32());
            this.Width         = _reader.ReadInt32();
            this.Height        = _reader.ReadInt32();
            this.BoundsLeft    = _reader.ReadInt32();
            this.BoundsRight   = _reader.ReadInt32();
            this.BoundsBottom  = _reader.ReadInt32();
            this.BoundsTop     = _reader.ReadInt32();
            this.Transparent   = _reader.ReadLBoolean();
            this.Smooth        = _reader.ReadLBoolean();
            this.Preload       = _reader.ReadLBoolean();
            this.BoundsType    = _reader.ReadInt32();
            this.CollisionType = (CollisionType)_reader.ReadInt32();
            this.XOrigin       = _reader.ReadInt32();
            this.YOrigin       = _reader.ReadInt32();
            _reader.BaseStream.Seek(sizeof(Int32) * 2, SeekOrigin.Current);
            this.SpriteType    = (SpriteType)_reader.ReadInt32();
            this.PlaybackType  = (PlaybackType)_reader.ReadInt32();
            this.PlaybackSpeed = _reader.ReadSingle();
            _reader.ReadInt32(); // TODO: Read sequence data @ position
            switch (this.SpriteType)
            {
            case SpriteType.Bitmap: {
                this.TextureEntries = new List <LTexturePageEntry>();
                ChunkHandler.HandleKVP(_assets, _reader, delegate(Int32 _offset) {
                        this.TextureEntries.Add(_assets.TextureEntries.Find(tpe => tpe.Base == _offset));
                    });
                break;
            }

            default: {
                throw new Exception(String.Format("Could not read unsupported sprite type: {0}", this.SpriteType));
            }
            }
        }
Example #11
0
 public override void Reset()
 {
     base.Reset();
     audioSource = GetComponent<AudioSource>();
     Playback_Type = PlaybackType.Shuffle;
 }
Example #12
0
        /// <summary>
        /// Gets the preview / full stream of a track
        /// </summary>
        /// <param name="track">Track id</param>
        /// <param name="streamType">Stream type: Full or Preview</param>
        /// <returns></returns>
        public async Task <TrackPlaybackResponse> GetPreviewStreamAsync(string track, PlaybackType streamType)
        {
            var url = $"1/content/{track}/{streamType}?country={m_culture.Name}&language={m_culture.Name}&clientInstanceId={m_client.Value.ClienteInstanceId}";

            return(await m_client.Value.QueryMusicServiceAsync <TrackPlaybackResponse>(url));
        }
Example #13
0
 /// <summary>
 /// 监听回放事件
 /// </summary>
 /// <param name="key">协议</param>
 /// <param name="flag">倒叙播放</param>
 public PlaybackHandlerAttrubute(int key, PlaybackType type = PlaybackType.Normal)
 {
     ProtocolKey = key;
     Type        = type;
 }
Example #14
0
        static dynamic Decode(BinaryReader reader, int version, Type ensure = null, bool root = false)
        {
            Type t = DecodeID(reader);

            if (ensure != null && ensure != t)
            {
                throw new InvalidDataException();
            }

            if (t == typeof(Preferences) && root)
            {
                Preferences.AlwaysOnTop         = reader.ReadBoolean();
                Preferences.CenterTrackContents = reader.ReadBoolean();

                if (version >= 9)
                {
                    Preferences.LaunchpadStyle = (LaunchpadStyles)reader.ReadInt32();
                }

                if (version >= 14)
                {
                    Preferences.LaunchpadGridRotation = reader.ReadInt32() > 0;
                }

                Preferences.AutoCreateKeyFilter  = reader.ReadBoolean();
                Preferences.AutoCreatePageFilter = reader.ReadBoolean();

                if (version >= 11)
                {
                    Preferences.AutoCreatePattern = reader.ReadBoolean();
                }

                Preferences.FadeSmoothness    = reader.ReadDouble();
                Preferences.CopyPreviousFrame = reader.ReadBoolean();

                if (version >= 7)
                {
                    Preferences.CaptureLaunchpad = reader.ReadBoolean();
                }

                Preferences.EnableGestures = reader.ReadBoolean();

                if (version >= 7)
                {
                    Preferences.PaletteName   = reader.ReadString();
                    Preferences.CustomPalette = new Palette((from i in Enumerable.Range(0, 128) select(Color) Decode(reader, version)).ToArray());
                    Preferences.ImportPalette = (Palettes)reader.ReadInt32();

                    Preferences.Theme = (Themes)reader.ReadInt32();
                }

                if (version >= 10)
                {
                    Preferences.Backup   = reader.ReadBoolean();
                    Preferences.Autosave = reader.ReadBoolean();
                }

                if (version >= 12)
                {
                    Preferences.UndoLimit = reader.ReadBoolean();
                }

                if (version <= 0)
                {
                    Preferences.DiscordPresence = true;
                    reader.ReadBoolean();
                }
                else
                {
                    Preferences.DiscordPresence = reader.ReadBoolean();
                }

                Preferences.DiscordFilename = reader.ReadBoolean();

                ColorHistory.Set(
                    (from i in Enumerable.Range(0, reader.ReadInt32()) select(Color) Decode(reader, version)).ToList()
                    );

                if (version >= 2)
                {
                    MIDI.Devices = (from i in Enumerable.Range(0, reader.ReadInt32()) select(Launchpad) Decode(reader, version)).ToList();
                }

                if (version >= 15)
                {
                    Preferences.Recents   = (from i in Enumerable.Range(0, reader.ReadInt32()) select reader.ReadString()).ToList();
                    Preferences.CrashName = reader.ReadString();
                    Preferences.CrashPath = reader.ReadString();
                }

                if (version >= 16)
                {
                    Preferences.CheckForUpdates = reader.ReadBoolean();
                }

                if (version >= 17)
                {
                    Preferences.BaseTime = reader.ReadInt64();
                }

                return(null);
            }
            else if (t == typeof(Copyable))
            {
                return(new Copyable()
                {
                    Contents = (from i in Enumerable.Range(0, reader.ReadInt32()) select(ISelect) Decode(reader, version)).ToList()
                });
            }
            else if (t == typeof(Project))
            {
                int          bpm    = reader.ReadInt32();
                int          page   = reader.ReadInt32();
                List <Track> tracks = (from i in Enumerable.Range(0, reader.ReadInt32()) select(Track) Decode(reader, version)).ToList();

                string author  = "";
                long   time    = 0;
                long   started = 0;

                if (version >= 17)
                {
                    author  = reader.ReadString();
                    time    = reader.ReadInt64();
                    started = reader.ReadInt64();
                }

                return(new Project(bpm, page, tracks, author, time, started));
            }
            else if (t == typeof(Track))
            {
                Chain     chain = (Chain)Decode(reader, version);
                Launchpad lp    = (Launchpad)Decode(reader, version);
                string    name  = reader.ReadString();

                bool enabled = true;
                if (version >= 8)
                {
                    enabled = reader.ReadBoolean();
                }

                return(new Track(chain, lp, name)
                {
                    Enabled = enabled
                });
            }
            else if (t == typeof(Chain))
            {
                List <Device> devices = (from i in Enumerable.Range(0, reader.ReadInt32()) select(Device) Decode(reader, version)).ToList();
                string        name    = reader.ReadString();

                bool enabled = true;
                if (version >= 6)
                {
                    enabled = reader.ReadBoolean();
                }

                return(new Chain(devices, name)
                {
                    Enabled = enabled
                });
            }
            else if (t == typeof(Device))
            {
                bool collapsed = false;
                if (version >= 5)
                {
                    collapsed = reader.ReadBoolean();
                }

                bool enabled = true;
                if (version >= 5)
                {
                    enabled = reader.ReadBoolean();
                }

                Device ret = (Device)Decode(reader, version);
                ret.Collapsed = collapsed;
                ret.Enabled   = enabled;

                return(ret);
            }
            else if (t == typeof(Launchpad))
            {
                string name = reader.ReadString();
                if (name == "")
                {
                    return(MIDI.NoOutput);
                }

                InputType format = InputType.DrumRack;
                if (version >= 2)
                {
                    format = (InputType)reader.ReadInt32();
                }

                RotationType rotation = RotationType.D0;
                if (version >= 9)
                {
                    rotation = (RotationType)reader.ReadInt32();
                }

                foreach (Launchpad lp in MIDI.Devices)
                {
                    if (lp.Name == name)
                    {
                        if (lp.GetType() == typeof(Launchpad))
                        {
                            lp.InputFormat = format;
                            lp.Rotation    = rotation;
                        }
                        return(lp);
                    }
                }

                Launchpad ret;
                if (name.Contains("Virtual Launchpad "))
                {
                    ret = new VirtualLaunchpad(name);
                }
                else if (name.Contains("Ableton Connector "))
                {
                    ret = new AbletonLaunchpad(name);
                }
                else
                {
                    ret = new Launchpad(name, format, rotation);
                }

                MIDI.Devices.Add(ret);

                return(ret);
            }
            else if (t == typeof(Group))
            {
                return(new Group(
                           (from i in Enumerable.Range(0, reader.ReadInt32()) select(Chain) Decode(reader, version)).ToList(),
                           reader.ReadBoolean()? (int?)reader.ReadInt32() : null
                           ));
            }

            else if (t == typeof(Choke))
            {
                return(new Choke(
                           reader.ReadInt32(),
                           (Chain)Decode(reader, version)
                           ));
            }

            else if (t == typeof(Clear))
            {
                return(new Clear(
                           (ClearType)reader.ReadInt32()
                           ));
            }

            else if (t == typeof(ColorFilter))
            {
                return(new ColorFilter(
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble()
                           ));
            }

            else if (t == typeof(Copy))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                return(new Copy(
                           time,
                           gate,
                           (CopyType)reader.ReadInt32(),
                           (GridType)reader.ReadInt32(),
                           reader.ReadBoolean(),
                           (from i in Enumerable.Range(0, reader.ReadInt32()) select(Offset) Decode(reader, version)).ToList()
                           ));
            }
            else if (t == typeof(Delay))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                return(new Delay(time, gate));
            }
            else if (t == typeof(Fade))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                FadePlaybackType playmode = (FadePlaybackType)reader.ReadInt32();

                int           count;
                List <Color>  colors    = (from i in Enumerable.Range(0, count = reader.ReadInt32()) select(Color) Decode(reader, version)).ToList();
                List <double> positions = (from i in Enumerable.Range(0, count) select(version <= 13)? (double)reader.ReadDecimal() : reader.ReadDouble()).ToList();

                return(new Fade(time, gate, playmode, colors, positions));
            }
            else if (t == typeof(Flip))
            {
                return(new Flip(
                           (FlipType)reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Hold))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                return(new Hold(
                           time,
                           gate,
                           reader.ReadBoolean(),
                           reader.ReadBoolean()
                           ));
            }
            else if (t == typeof(KeyFilter))
            {
                bool[] filter;
                if (version <= 18)
                {
                    List <bool> oldFilter = (from i in Enumerable.Range(0, 100) select reader.ReadBoolean()).ToList();
                    oldFilter.Insert(99, false);
                    filter = oldFilter.ToArray();
                }
                else
                {
                    filter = (from i in Enumerable.Range(0, 101) select reader.ReadBoolean()).ToArray();
                }

                return(new KeyFilter(filter));
            }
            else if (t == typeof(Layer))
            {
                int target = reader.ReadInt32();

                BlendingType blending = BlendingType.Normal;
                if (version >= 5)
                {
                    if (version == 5)
                    {
                        blending = (BlendingType)reader.ReadInt32();
                        if ((int)blending == 2)
                        {
                            blending = BlendingType.Mask;
                        }
                    }
                    else
                    {
                        blending = (BlendingType)reader.ReadInt32();
                    }
                }

                int range = 200;
                if (version >= 21)
                {
                    range = reader.ReadInt32();
                }

                return(new Layer(target, blending, range));
            }
            else if (t == typeof(Move))
            {
                return(new Move(
                           Decode(reader, version),
                           (GridType)reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Multi))
            {
                return(new Multi(
                           Decode(reader, version),
                           (from i in Enumerable.Range(0, reader.ReadInt32()) select(Chain) Decode(reader, version)).ToList(),
                           reader.ReadBoolean()? (int?)reader.ReadInt32() : null,
                           (MultiType)reader.ReadInt32()
                           ));
            }

            else if (t == typeof(Output))
            {
                return(new Output(
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(PageFilter))
            {
                return(new PageFilter(
                           (from i in Enumerable.Range(0, 100) select reader.ReadBoolean()).ToArray()
                           ));
            }

            else if (t == typeof(Paint))
            {
                return(new Paint(
                           Decode(reader, version)
                           ));
            }

            else if (t == typeof(Pattern))
            {
                int repeats = 1;
                if (version >= 11)
                {
                    repeats = reader.ReadInt32();
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                List <Frame> frames = (from i in Enumerable.Range(0, reader.ReadInt32()) select(Frame) Decode(reader, version)).ToList();
                PlaybackType mode   = (PlaybackType)reader.ReadInt32();

                bool chokeenabled = false;
                int  choke        = 8;

                if (version <= 10)
                {
                    chokeenabled = reader.ReadBoolean();

                    if (version <= 0)
                    {
                        if (chokeenabled)
                        {
                            choke = reader.ReadInt32();
                        }
                    }
                    else
                    {
                        choke = reader.ReadInt32();
                    }
                }

                bool infinite = false;
                if (version >= 4)
                {
                    infinite = reader.ReadBoolean();
                }

                int?rootkey = null;
                if (version >= 12)
                {
                    rootkey = reader.ReadBoolean()? (int?)reader.ReadInt32() : null;
                }

                bool wrap = false;
                if (version >= 13)
                {
                    wrap = reader.ReadBoolean();
                }

                int expanded = reader.ReadInt32();

                Pattern ret = new Pattern(repeats, gate, frames, mode, infinite, rootkey, wrap, expanded);

                if (chokeenabled)
                {
                    return(new Choke(choke, new Chain(new List <Device>()
                    {
                        ret
                    })));
                }

                return(ret);
            }
            else if (t == typeof(Preview))
            {
                return(new Preview());
            }

            else if (t == typeof(Rotate))
            {
                return(new Rotate(
                           (RotateType)reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Switch))
            {
                int page = reader.ReadInt32();

                if (18 <= version && version <= 21 && reader.ReadBoolean())
                {
                    return(new Group(new List <Chain>()
                    {
                        new Chain(new List <Device>()
                        {
                            new Switch(page), new Clear(ClearType.Multi)
                        }, "Switch Reset")
                    }));
                }

                return(new Switch(page));
            }
            else if (t == typeof(Tone))
            {
                return(new Tone(
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble()
                           ));
            }

            else if (t == typeof(Color))
            {
                return(new Color(
                           reader.ReadByte(),
                           reader.ReadByte(),
                           reader.ReadByte()
                           ));
            }

            else if (t == typeof(Frame))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                Color[] screen;
                if (version <= 19)
                {
                    List <Color> oldScreen = (from i in Enumerable.Range(0, 100) select(Color) Decode(reader, version)).ToList();
                    oldScreen.Insert(99, new Color(0));
                    screen = oldScreen.ToArray();
                }
                else
                {
                    screen = (from i in Enumerable.Range(0, 101) select(Color) Decode(reader, version)).ToArray();
                }

                return(new Frame(time, screen));
            }
            else if (t == typeof(Length))
            {
                return(new Length(
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(Offset))
            {
                return(new Offset(
                           reader.ReadInt32(),
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(Time))
            {
                return(new Time(
                           reader.ReadBoolean(),
                           Decode(reader, version),
                           reader.ReadInt32()
                           ));
            }

            throw new InvalidDataException();
        }
 public void PlaybackButton_Click(int playbackTypeSelected)
 {
     playbackType = (PlaybackType)playbackTypeSelected;
     setPlaybackRadioButton();
     AppDataAccessor.SetPlaybackType((int)playbackType);
 }
Example #16
0
        protected override async void OnActivate()
        {
            base.OnActivate();

            AppDataAccessor.SetLastViewed(Parameter.playlist.name, DateTime.Now.ToString("g"), Parameter.playlist.playlistId, Parameter.playlist.thumbnailLocation);
            Clips = Parameter.playlist.clips.ToList();

            FilteredClips = new ObservableCollection <Clip>(Clips);
            if (FilteredClips.Any())
            {
                getAngleNames();
                SelectedClip      = FilteredClips.First();
                SelectedClipIndex = 0;
                Angle nextAngle = SelectedClip.angles.FirstOrDefault(angle => angle.angleType.IsChecked);
                SelectedAngle = (nextAngle != null && nextAngle.isPreloaded) ? new Angle(nextAngle.clipAngleId, nextAngle.preloadFile) : nextAngle;
                if (listView != null)
                {
                    listView.SelectedItem = SelectedClip;
                }
            }

            getMoreClips();

            GridHeaders  = Parameter.playlist.displayColumns;
            PlaylistName = Parameter.playlist.name;

            int?playbackTypeResult = AppDataAccessor.GetPlaybackType();

            if (playbackTypeResult == null)
            {
                AppDataAccessor.SetPlaybackType((int)PlaybackType.next);
                playbackType = PlaybackType.next;
            }
            else
            {
                playbackType = (PlaybackType)playbackTypeResult;
            }
            setPlaybackRadioButton();

            dispRequest = new DisplayRequest();
            dispRequest.RequestActive();

            FiltersList = new List <FilterViewModel>();

            preloadCTS = new CancellationTokenSource();
            preloadCT  = preloadCTS.Token;
            initialClipPreload();

            bool downloadFound = false;
            BindableCollection <Playlist> downloadedPlaylists = DownloadAccessor.Instance.downloadedPlaylists;

            foreach (Playlist p in downloadedPlaylists)
            {
                if (p.playlistId == Parameter.playlist.playlistId)
                {
                    downloadFound = true;
                    break;
                }
            }
            DownloadAccessor.Instance.progressCallback = new Progress <DownloadOperation>(ProgressCallback);
            DownloadedVisibility = Visibility.Collapsed;
            if (DownloadAccessor.Instance.Downloading)
            {
                LoadActiveDownloadsAsync();
                ProgressGridVisibility   = Visibility.Visible;
                DownloadButtonVisibility = Visibility.Collapsed;
            }
            else
            {
                ProgressGridVisibility = Visibility.Collapsed;
                if (!downloadFound)
                {
                    DownloadButtonVisibility = Visibility.Visible;
                }
                else
                {
                    DownloadButtonVisibility = Visibility.Collapsed;
                    DownloadedVisibility     = Visibility.Visible;
                }
            }

            List <Angle> filteredAngles = SelectedClip.angles.Where(angle => angle.angleType.IsChecked).ToList <Angle>();

            if (filteredAngles.Count == 1)
            {
                filteredAngles.First().angleType.CheckBoxEnabled = false;
            }
            else if (filteredAngles.Count == 0)
            {
                NoAnglesText = "No angles are selected. Please select an angle to view this clip.";
            }
        }
        protected override async void OnActivate()
        {
            base.OnActivate();

            AppDataAccessor.SetLastViewed(Parameter.playlist.name, DateTime.Now.ToString("g"), Parameter.playlist.playlistId, Parameter.playlist.thumbnailLocation);
            Clips = Parameter.playlist.clips.ToList();
            
            FilteredClips = new ObservableCollection<Clip>(Clips);
            if (FilteredClips.Any())
            {
                getAngleNames();
                SelectedClip = FilteredClips.First();
                SelectedClipIndex = 0;
                Angle nextAngle = SelectedClip.angles.FirstOrDefault(angle => angle.angleType.IsChecked);
                SelectedAngle = (nextAngle != null && nextAngle.isPreloaded) ? new Angle(nextAngle.clipAngleId, nextAngle.preloadFile) : nextAngle;
                if (listView != null)
                {
                    listView.SelectedItem = SelectedClip;
                }
            }

            getMoreClips();

            GridHeaders = Parameter.playlist.displayColumns;
            PlaylistName = Parameter.playlist.name;

            int? playbackTypeResult = AppDataAccessor.GetPlaybackType();
            if (playbackTypeResult == null)
            {
                AppDataAccessor.SetPlaybackType((int)PlaybackType.next);
                playbackType = PlaybackType.next;
            }
            else
            {
                playbackType = (PlaybackType)playbackTypeResult;
            }
            setPlaybackRadioButton();

            dispRequest = new DisplayRequest();
            dispRequest.RequestActive();

            FiltersList = new List<FilterViewModel>();

            preloadCTS = new CancellationTokenSource();
            preloadCT = preloadCTS.Token;
            initialClipPreload();

            bool downloadFound = false;
            BindableCollection<Playlist> downloadedPlaylists = DownloadAccessor.Instance.downloadedPlaylists;
            foreach (Playlist p in downloadedPlaylists)
            {
                if (p.playlistId == Parameter.playlist.playlistId)
                {
                    downloadFound = true;
                    break;
                }
            }
            DownloadAccessor.Instance.progressCallback = new Progress<DownloadOperation>(ProgressCallback);
            DownloadedVisibility = Visibility.Collapsed;
            if (DownloadAccessor.Instance.Downloading)
            {
                LoadActiveDownloadsAsync();
                ProgressGridVisibility = Visibility.Visible;
                DownloadButtonVisibility = Visibility.Collapsed;
            }
            else
            {
                ProgressGridVisibility = Visibility.Collapsed;
                if (!downloadFound)
                {
                    DownloadButtonVisibility = Visibility.Visible;
                }
                else
                {
                    DownloadButtonVisibility = Visibility.Collapsed;
                    DownloadedVisibility = Visibility.Visible;
                }
            }

            List<Angle> filteredAngles = SelectedClip.angles.Where(angle => angle.angleType.IsChecked).ToList<Angle>();

            if (filteredAngles.Count == 1)
            {
                filteredAngles.First().angleType.CheckBoxEnabled = false;
            }
            else if (filteredAngles.Count == 0)
            {
                NoAnglesText = "No angles are selected. Please select an angle to view this clip.";
            }
        }
Example #18
0
 public void PlaybackButton_Click(int playbackTypeSelected)
 {
     playbackType = (PlaybackType)playbackTypeSelected;
     setPlaybackRadioButton();
     AppDataAccessor.SetPlaybackType((int)playbackType);
 }
Example #19
0
 public KeyframedAnimationSet(string name, double ticksPerSecond, PlaybackType playbackType, int animationCount, CallbackKey[] callbackKeys)
 {
     Name            = name;
     AnimationTracks = new List <Tuple <string, RotationKey[], ScaleKey[], TranslationKey[]> >();
     TicksPerSecond  = ticksPerSecond;
 }
Example #20
0
        static dynamic Decode(BinaryReader reader, int version, Type ensure = null)
        {
            Type t = DecodeID(reader);

            if (ensure != null && ensure != t)
            {
                throw new InvalidDataException();
            }

            if (t == typeof(Copyable))
            {
                return new Copyable()
                       {
                           Contents = Enumerable.Range(0, reader.ReadInt32()).Select(i => Decode <ISelect>(reader, version)).ToList()
                       }
            }
            ;

            else if (t == typeof(Project))
            {
                int bpm = reader.ReadInt32();

                int[] macros = (version >= 25)? Enumerable.Range(0, 4).Select(i => reader.ReadInt32()).ToArray() : new int[4] {
                    reader.ReadInt32(), 1, 1, 1
                };
                List <Track> tracks = Enumerable.Range(0, reader.ReadInt32()).Select(i => Decode <Track>(reader, version)).ToList();

                string author  = "";
                long   time    = 0;
                long   started = 0;

                if (version >= 17)
                {
                    author  = reader.ReadString();
                    time    = reader.ReadInt64();
                    started = reader.ReadInt64();
                }

                UndoManager undo = null;
                if (version >= 30)
                {
                    undo = Decode <UndoManager>(reader, version);
                }

                return(new Project(bpm, macros, tracks, author, time, started, undo));
            }
            else if (t == typeof(Track))
            {
                Chain     chain = Decode <Chain>(reader, version);
                Launchpad lp    = Decode <Launchpad>(reader, version);
                string    name  = reader.ReadString();

                bool enabled = true;
                if (version >= 8)
                {
                    enabled = reader.ReadBoolean();
                }

                return(new Track(chain, lp, name)
                {
                    Enabled = enabled
                });
            }
            else if (t == typeof(Chain))
            {
                List <Device> devices = Enumerable.Range(0, reader.ReadInt32()).Select(i => Decode <Device>(reader, version)).ToList();
                string        name    = reader.ReadString();

                bool enabled = true;
                if (version >= 6)
                {
                    enabled = reader.ReadBoolean();
                }

                bool[] filter = null;
                if (version >= 29)
                {
                    filter = Enumerable.Range(0, 101).Select(i => reader.ReadBoolean()).ToArray();
                }

                return(new Chain(devices, name, filter)
                {
                    Enabled = enabled
                });
            }
            else if (t == typeof(Device))
            {
                bool collapsed = false;
                if (version >= 5)
                {
                    collapsed = reader.ReadBoolean();
                }

                bool enabled = true;
                if (version >= 5)
                {
                    enabled = reader.ReadBoolean();
                }

                Device ret = (Device)Decode(reader, version); // This needs to be a cast!
                ret.Collapsed = collapsed;
                ret.Enabled   = enabled;

                return(ret);
            }
            else if (t == typeof(Launchpad))
            {
                string name = reader.ReadString();
                if (name == "")
                {
                    return(MIDI.NoOutput);
                }

                InputType format = InputType.DrumRack;
                if (version >= 2)
                {
                    format = (InputType)reader.ReadInt32();
                }

                RotationType rotation = RotationType.D0;
                if (version >= 9)
                {
                    rotation = (RotationType)reader.ReadInt32();
                }

                foreach (Launchpad lp in MIDI.Devices)
                {
                    if (lp.Name == name)
                    {
                        if (lp.GetType() == typeof(Launchpad))
                        {
                            lp.InputFormat = format;
                            lp.Rotation    = rotation;
                        }
                        return(lp);
                    }
                }

                Launchpad ret;
                if (name.Contains("Virtual Launchpad "))
                {
                    ret = new VirtualLaunchpad(name, Convert.ToInt32(name.Substring(18)));
                }
                else if (name.Contains("Ableton Connector "))
                {
                    ret = new AbletonLaunchpad(name);
                }
                else
                {
                    ret = new Launchpad(name, format, rotation);
                }

                MIDI.Devices.Add(ret);

                return(ret);
            }
            else if (t == typeof(Group))
            {
                return(new Group(
                           Enumerable.Range(0, reader.ReadInt32()).Select(i => Decode <Chain>(reader, version)).ToList(),
                           reader.ReadBoolean()? (int?)reader.ReadInt32() : null
                           ));
            }

            else if (t == typeof(Choke))
            {
                return(new Choke(
                           reader.ReadInt32(),
                           Decode <Chain>(reader, version)
                           ));
            }

            else if (t == typeof(Clear))
            {
                return(new Clear(
                           (ClearType)reader.ReadInt32()
                           ));
            }

            else if (t == typeof(ColorFilter))
            {
                return(new ColorFilter(
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble()
                           ));
            }

            else if (t == typeof(Copy))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                double pinch = 0;
                if (version >= 26)
                {
                    pinch = reader.ReadDouble();
                }

                bool bilateral = false;
                if (version >= 28)
                {
                    bilateral = reader.ReadBoolean();
                }

                bool reverse = false;
                if (version >= 26)
                {
                    reverse = reader.ReadBoolean();
                }

                bool infinite = false;
                if (version >= 27)
                {
                    infinite = reader.ReadBoolean();
                }

                CopyType copyType = (CopyType)reader.ReadInt32();
                GridType gridType = (GridType)reader.ReadInt32();
                bool     wrap     = reader.ReadBoolean();

                int           count;
                List <Offset> offsets = Enumerable.Range(0, count = reader.ReadInt32()).Select(i => Decode <Offset>(reader, version)).ToList();
                List <int>    angles  = Enumerable.Range(0, count).Select(i => (version >= 25)? reader.ReadInt32() : 0).ToList();

                return(new Copy(time, gate, pinch, bilateral, reverse, infinite, copyType, gridType, wrap, offsets, angles));
            }
            else if (t == typeof(Delay))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                return(new Delay(time, gate));
            }
            else if (t == typeof(Fade))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                FadePlaybackType playmode = (FadePlaybackType)reader.ReadInt32();

                int             count;
                List <Color>    colors    = Enumerable.Range(0, count = reader.ReadInt32()).Select(i => Decode <Color>(reader, version)).ToList();
                List <double>   positions = Enumerable.Range(0, count).Select(i => (version <= 13)? (double)reader.ReadDecimal() : reader.ReadDouble()).ToList();
                List <FadeType> types     = Enumerable.Range(0, count - 1).Select(i => (version <= 24) ? FadeType.Linear : (FadeType)reader.ReadInt32()).ToList();

                int?expanded = null;
                if (version >= 23)
                {
                    expanded = reader.ReadBoolean()? (int?)reader.ReadInt32() : null;
                }

                return(new Fade(time, gate, playmode, colors, positions, types, expanded));
            }
            else if (t == typeof(Flip))
            {
                return(new Flip(
                           (FlipType)reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Hold))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                HoldType holdmode;
                if (version <= 31)
                {
                    holdmode = reader.ReadBoolean()? HoldType.Infinite : HoldType.Trigger;
                }
                else
                {
                    holdmode = (HoldType)reader.ReadInt32();
                }

                return(new Hold(
                           time,
                           gate,
                           holdmode,
                           reader.ReadBoolean()
                           ));
            }
            else if (t == typeof(KeyFilter))
            {
                bool[] filter;
                if (version <= 18)
                {
                    List <bool> oldFilter = Enumerable.Range(0, 100).Select(i => reader.ReadBoolean()).ToList();
                    oldFilter.Insert(99, false);
                    filter = oldFilter.ToArray();
                }
                else
                {
                    filter = Enumerable.Range(0, 101).Select(i => reader.ReadBoolean()).ToArray();
                }

                return(new KeyFilter(filter));
            }
            else if (t == typeof(Layer))
            {
                int target = reader.ReadInt32();

                BlendingType blending = BlendingType.Normal;
                if (version >= 5)
                {
                    if (version == 5)
                    {
                        blending = (BlendingType)reader.ReadInt32();
                        if ((int)blending == 2)
                        {
                            blending = BlendingType.Mask;
                        }
                    }
                    else
                    {
                        blending = (BlendingType)reader.ReadInt32();
                    }
                }

                int range = 200;
                if (version >= 21)
                {
                    range = reader.ReadInt32();
                }

                return(new Layer(target, blending, range));
            }
            else if (t == typeof(LayerFilter))
            {
                return(new LayerFilter(
                           reader.ReadInt32(),
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(Loop))
            {
                return(new Loop(
                           Decode(reader, version),
                           reader.ReadDouble(),
                           reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Move))
            {
                return(new Move(
                           Decode(reader, version),
                           (GridType)reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Multi))
            {
                Chain preprocess = Decode(reader, version);

                int          count = reader.ReadInt32();
                List <Chain> init  = Enumerable.Range(0, count).Select(i => Decode <Chain>(reader, version)).ToList();

                if (version == 28)
                {
                    List <bool[]> filters = Enumerable.Range(0, count).Select(i =>
                                                                              Enumerable.Range(0, 101).Select(i => reader.ReadBoolean()).ToArray()
                                                                              ).ToList();

                    for (int i = 0; i < count; i++)
                    {
                        init[i].SecretMultiFilter = filters[i];
                    }
                }

                int?      expanded = reader.ReadBoolean()? (int?)reader.ReadInt32() : null;
                MultiType mode     = (MultiType)reader.ReadInt32();

                return(new Multi(preprocess, init, expanded, mode));
            }
            else if (t == typeof(Output))
            {
                return(new Output(
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(MacroFilter))
            {
                return(new MacroFilter(
                           (version >= 25)? reader.ReadInt32() : 1,
                           Enumerable.Range(0, 100).Select(i => reader.ReadBoolean()).ToArray()
                           ));
            }

            else if (t == typeof(Paint))
            {
                return(new Paint(
                           Decode(reader, version)
                           ));
            }

            else if (t == typeof(Pattern))
            {
                int repeats = 1;
                if (version >= 11)
                {
                    repeats = reader.ReadInt32();
                }

                double gate;
                if (version <= 13)
                {
                    gate = (double)reader.ReadDecimal();
                }
                else
                {
                    gate = reader.ReadDouble();
                }

                double pinch = 0;
                if (version >= 24)
                {
                    pinch = reader.ReadDouble();
                }

                bool bilateral = false;
                if (version >= 28)
                {
                    bilateral = reader.ReadBoolean();
                }

                List <Frame> frames = Enumerable.Range(0, reader.ReadInt32()).Select(i => Decode <Frame>(reader, version)).ToList();
                PlaybackType mode   = (PlaybackType)reader.ReadInt32();

                bool chokeenabled = false;
                int  choke        = 8;

                if (version <= 10)
                {
                    chokeenabled = reader.ReadBoolean();

                    if (version <= 0)
                    {
                        if (chokeenabled)
                        {
                            choke = reader.ReadInt32();
                        }
                    }
                    else
                    {
                        choke = reader.ReadInt32();
                    }
                }

                bool infinite = false;
                if (version >= 4)
                {
                    infinite = reader.ReadBoolean();
                }

                int?rootkey = null;
                if (version >= 12)
                {
                    rootkey = reader.ReadBoolean()? (int?)reader.ReadInt32() : null;
                }

                bool wrap = false;
                if (version >= 13)
                {
                    wrap = reader.ReadBoolean();
                }

                int expanded = reader.ReadInt32();

                Pattern ret = new Pattern(repeats, gate, pinch, bilateral, frames, mode, infinite, rootkey, wrap, expanded);

                if (chokeenabled)
                {
                    return(new Choke(choke, new Chain(new List <Device>()
                    {
                        ret
                    })));
                }

                return(ret);
            }
            else if (t == typeof(Preview))
            {
                return(new Preview());
            }

            else if (t == typeof(Rotate))
            {
                return(new Rotate(
                           (RotateType)reader.ReadInt32(),
                           reader.ReadBoolean()
                           ));
            }

            else if (t == typeof(Refresh))
            {
                return(new Refresh(
                           Enumerable.Range(0, 4).Select(i => reader.ReadBoolean()).ToArray()
                           ));
            }

            else if (t == typeof(Switch))
            {
                int target = (version >= 25)? reader.ReadInt32() : 1;
                int value  = reader.ReadInt32();

                if (18 <= version && version <= 21 && reader.ReadBoolean())
                {
                    return(new Group(new List <Chain>()
                    {
                        new Chain(new List <Device>()
                        {
                            new Switch(1, value), new Clear(ClearType.Multi)
                        }, "Switch Reset")
                    }));
                }

                return(new Switch(target, value));
            }
            else if (t == typeof(Tone))
            {
                return(new Tone(
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble(),
                           reader.ReadDouble()
                           ));
            }

            else if (t == typeof(Color))
            {
                byte red   = reader.ReadByte();
                byte green = reader.ReadByte();
                byte blue  = reader.ReadByte();

                if (version == 24)
                {
                    if (red > 0)
                    {
                        red = (byte)((red - 1) * 62.0 / 126 + 1);
                    }
                    if (green > 0)
                    {
                        green = (byte)((green - 1) * 62.0 / 126 + 1);
                    }
                    if (blue > 0)
                    {
                        blue = (byte)((blue - 1) * 62.0 / 126 + 1);
                    }
                }

                return(new Color(red, green, blue));
            }
            else if (t == typeof(Frame))
            {
                Time time;
                if (version <= 2)
                {
                    time = new Time(
                        reader.ReadBoolean(),
                        Decode(reader, version),
                        reader.ReadInt32()
                        );
                }
                else
                {
                    time = Decode(reader, version);
                }

                Color[] screen;
                if (version <= 19)
                {
                    List <Color> oldScreen = Enumerable.Range(0, 100).Select(i => Decode <Color>(reader, version)).ToList();
                    oldScreen.Insert(99, new Color(0));
                    screen = oldScreen.ToArray();
                }
                else
                {
                    screen = Enumerable.Range(0, 101).Select(i => Decode <Color>(reader, version)).ToArray();
                }

                return(new Frame(time, screen));
            }
            else if (t == typeof(Length))
            {
                return(new Length(
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(Offset))
            {
                int x = reader.ReadInt32();
                int y = reader.ReadInt32();

                bool absolute = false;
                int  ax       = 5;
                int  ay       = 5;
                if (version >= 25)
                {
                    absolute = reader.ReadBoolean();
                    ax       = reader.ReadInt32();
                    ay       = reader.ReadInt32();
                }

                return(new Offset(x, y, absolute, ax, ay));
            }
            else if (t == typeof(Time))
            {
                return(new Time(
                           reader.ReadBoolean(),
                           Decode(reader, version),
                           reader.ReadInt32()
                           ));
            }

            else if (t == typeof(UndoManager))
            {
                int undoVersion = reader.ReadInt32();
                int size        = reader.ReadInt32();

                if (undoVersion == UndoBinary.Version)
                {
                    return(new UndoManager(
                               Enumerable.Range(0, reader.ReadInt32()).Select(i => UndoEntry.DecodeEntry(reader, version)).ToList(),
                               reader.ReadInt32()
                               ));
                }

                reader.ReadBytes(size);
                return(new UndoManager());
            }

            throw new InvalidDataException();
        }
Example #21
0
 public override void Reset()
 {
     base.Reset();
     audioSource   = GetComponent <AudioSource>();
     Playback_Type = PlaybackType.Shuffle;
 }
 /// <summary>
 /// Constructonr
 /// </summary>
 /// <param name="playbackType">Playback Type</param>
 /// <param name="deviceId">Device Id</param>
 public ResponseUserPlaybackArgs(PlaybackType playbackType, string deviceId = null)
 {
     PlaybackType = playbackType;
     DeviceId     = deviceId;
 }