Esempio n. 1
0
        public IList <IElement> AddGeneralImportedElement(IXmlWritable element)
        {
            List <IElement> result = new List <IElement>();

            if (element is IChoiceElement)
            {
                IChoiceElement choice = element as IChoiceElement;
                if (choice.InnerElement is IFileElement)
                {
                    result.AddRange(m_ThirdContainer.AddGeneralImportedElement(element));
                    return(result);
                }
            }
            foreach (IFileElement fileElement in element.GetFileElements())
            {
                result.Add(m_ThirdContainer.AddElement(fileElement));
            }
            return(result);
        }
Esempio n. 2
0
        public void Start(int musicFadeInTime)
        {
            if (RandomMusicList.GetElements().Count == 0)
            {
                Client.SubPlayerFinished(this, false, false);
                return;
            }
            PlayingModule.ThePlayer.ActiveMusicPlayer = this; // once early to stop previous music player
            if (PlayingModule.ThePlayer.ProjectCallbacks != null)
            {
                PlayingModule.ThePlayer.ProjectCallbacks.MusicPlaylistStarted(RandomMusicList.Id);
            }
            Monitor.Enter(syncObject);
            // Don't delay, start immediately (start delay was already processed by calling player)
            IChoiceElement element = SelectRandomElement(m_Container);

            m_LastElementsStack.Add(element);
            m_GoBack = false;
            Monitor.Exit(syncObject);
            Process(element, musicFadeInTime);
        }
Esempio n. 3
0
 public ChoiceElementChangeAction(IChoiceElement element, int chance)
 {
     m_Element   = element;
     m_OldChance = element.RandomChance;
     m_NewChance = chance;
 }
Esempio n. 4
0
        public override void PlayNext()
        {
            Monitor.Enter(syncObject);
            bool stop = shallStop;

            if (Client.Stopped || shallStop)
            {
                Monitor.Exit(syncObject);
                if (PlayingModule.ThePlayer.ProjectCallbacks != null)
                {
                    PlayingModule.ThePlayer.ProjectCallbacks.MusicPlaylistFinished(m_Container.Id);
                }
                Client.SubPlayerFinished(this, stop, false);
            }
            else if (m_FixedNext != -1)
            {
                IChoiceElement element = m_Container.GetElements()[m_FixedNext];
                m_LastElementsStack.Add(element);
                m_GoBack    = false;
                m_FixedNext = -1;
                Monitor.Exit(syncObject);
                Repeat(RandomMusicList, element);
            }
            else if (m_GoBack && m_LastElementsStack.Count > 1)
            {
                IChoiceElement element = m_LastElementsStack[m_LastElementsStack.Count - 2];
                m_LastElementsStack.RemoveAt(m_LastElementsStack.Count - 1);
                m_GoBack    = false;
                m_FixedNext = -1;
                Monitor.Exit(syncObject);
                Repeat(RandomMusicList, element);
            }
            else if (m_Container.RepeatCount != -1 && m_Container.RepeatCount <= ++m_RepeatCount)
            {
                Monitor.Exit(syncObject);
                if (PlayingModule.ThePlayer.ProjectCallbacks != null)
                {
                    PlayingModule.ThePlayer.ProjectCallbacks.MusicPlaylistFinished(m_Container.Id);
                }
                Client.SubPlayerFinished(this, stop, false);
            }
            else
            {
                IChoiceElement element = SelectRandomElement(m_Container);
                if (element != null)
                {
                    m_LastElementsStack.Add(element);
                    m_GoBack    = false;
                    m_FixedNext = -1;
                    Monitor.Exit(syncObject);
                    Repeat(RandomMusicList, element);
                }
                else
                {
                    Monitor.Exit(syncObject);
                    if (PlayingModule.ThePlayer.ProjectCallbacks != null)
                    {
                        PlayingModule.ThePlayer.ProjectCallbacks.MusicPlaylistFinished(m_Container.Id);
                    }
                    Client.SubPlayerFinished(this, stop, false);
                }
            }
        }
Esempio n. 5
0
        private static void InsertElement(IElementContainer <IChoiceElement> choiceContainer, IFileElement newElement, IChoiceElement origElement)
        {
            IChoiceElement choiceElement = choiceContainer.AddElement(newElement);

            choiceElement.RandomChance = origElement.RandomChance;
        }