Пример #1
0
 private void AddMusicCategory(MyMusicTransitionEnum musicTransition, string category, MySoundCuesEnum cueEnum)
 {
     if (m_musicTransitionCues[(int)musicTransition] == null)
     {
         m_musicTransitionCues[(int)musicTransition] = new Dictionary <string, MySoundCuesEnum>();
     }
     m_musicTransitionCues[(int)musicTransition].Add(category, cueEnum);
 }
Пример #2
0
        public string GetRandomTransitionCategory(MyMusicTransitionEnum transitionEnum)
        {
            int randomIndex  = MyVRageUtils.GetRandomInt(m_musicTransitionCues[(int)transitionEnum].Count);
            int currentIndex = 0;

            foreach (var categoryCueKVP in m_musicTransitionCues[(int)transitionEnum])
            {
                if (currentIndex == randomIndex)
                {
                    return(categoryCueKVP.Key);
                }
                currentIndex++;
            }
            throw new InvalidBranchException();
        }
        private void SendMusicTransition(MyMusicEventEnum musicEventType, int? priority, MyMusicTransitionEnum? transitionEnum, string category, bool loop)
        {
            var msg = new MyEventMusicTransition();
            msg.MusicEventType = musicEventType;
            msg.TransitionEnum = transitionEnum.HasValue ? (int)transitionEnum.Value : 0;
            msg.Priority = priority ?? 0;
            msg.Category = category;
            msg.Loop = loop;

            Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered);
        }
 public void SendApplyTransition(MyMusicTransitionEnum transitionEnum, int priority, string category, bool loop)
 {
     SendMusicTransition(MyMusicEventEnum.APPLY_TRANSITION, priority, transitionEnum, category, loop);
 }
Пример #5
0
 public void SendApplyTransition(MyMusicTransitionEnum transitionEnum, int priority, string category, bool loop)
 {
     SendMusicTransition(MyMusicEventEnum.APPLY_TRANSITION, priority, transitionEnum, category, loop);
 }
Пример #6
0
 static void AddMusicCategory(MyMusicTransitionEnum musicTransition, string category, MySoundCuesEnum cueEnum)
 {
     if (m_musicTransitionCues[(int)musicTransition] == null)
     {
         m_musicTransitionCues[(int)musicTransition] = new Dictionary<string, MySoundCuesEnum>();
     }
     m_musicTransitionCues[(int)musicTransition].Add(category, cueEnum);
 }
Пример #7
0
 private static string GetRandomTransitionCategory(MyMusicTransitionEnum transitionEnum)
 {
     int randomIndex = MyMwcUtils.GetRandomInt(m_musicTransitionCues[(int)transitionEnum].Count - 1);
     int currentIndex = 0;
     foreach (var categoryCueKVP in m_musicTransitionCues[(int)transitionEnum])
     {
         if (currentIndex == randomIndex)
         {
             return categoryCueKVP.Key;
         }
         currentIndex++;
     }
     throw new MyMwcExceptionApplicationShouldNotGetHere();
 }
Пример #8
0
        public static bool ApplyTransition(MyMusicTransitionEnum transitionEnum, int priority = 0, string category = null, bool loop = true)
        {
            if (!m_canPlay) return false;
            if (!m_musicAllowed) return false;

            Debug.Assert(priority >= 0);
            if (category != null)
            {
                if (!m_musicTransitionCues[(int)transitionEnum].ContainsKey(category))
                {
                    Debug.Assert(false, "This category doesn't exist for this transition!");
                    return false;
                }
            }

            // if we try apply same transition and priority and category
            if (m_currentTransition != null &&
                m_currentTransition.Value.Priority == priority &&
                m_currentTransition.Value.TransitionEnum == transitionEnum &&
                (category == null || m_currentTransition.Value.Category == category))
            {
                if (m_musicState == MyMusicState.Transition && !m_transitionForward)
                {
                    m_musicState = MyMusicState.Playing;
                    return true;
                }
                else
                {
                    return false;
                }
            }

            // if category not set, we take random category from this transition cues
            string transitionCategory = category != null ? category : GetRandomTransitionCategory(transitionEnum);
            // we set this transition as next
            m_nextTransitions[priority] = new MyMusicTransition(priority, transitionEnum, transitionCategory);

            // if new transition has lower priority then current, we don't want apply new transition now
            if (m_currentTransition != null && m_currentTransition.Value.Priority > priority)
            {
                return false;
            }

            m_loopMusic = loop;

            if (m_musicState == MyMusicState.Playing)
            {
                StartTransition(true);
            }
            else if (m_musicState == MyMusicState.Transition)
            {
            }
            else if (m_musicState == MyMusicState.Stopped)
            {
            }
            else
            {
                throw new MyMwcExceptionApplicationShouldNotGetHere();
            }

            return true;
        }
Пример #9
0
 public MyMusicTransition(int priority, MyMusicTransitionEnum transitionEnum, string category)
 {
     Priority = priority;
     TransitionEnum = transitionEnum;
     Category = category;
 }
Пример #10
0
 public MySoundCuesEnum GetTransitionCue(MyMusicTransitionEnum transitionEnum, string category)
 {
     return(m_musicTransitionCues[(int)transitionEnum][category]);
 }
Пример #11
0
 public bool IsValidTransitionCategory(MyMusicTransitionEnum transitionEnum, string category)
 {
     return(m_musicTransitionCues[(int)transitionEnum].ContainsKey(category));
 }
Пример #12
0
        public static bool ApplyTransition(MyMusicTransitionEnum transitionEnum, int priority = 0, string category = null, bool loop = true)
        {
            if (!m_canPlay)
                return false;

            if (!m_musicAllowed)
                return false;

            Debug.Assert(priority >= 0);
            if (category != null)
            {
                if (!m_cueBank.IsValidTransitionCategory(transitionEnum, category))
                {
                    Debug.Fail("This category doesn't exist for this transition!");
                    MyLog.Default.WriteLine(string.Format("Category {0} doesn't exist for this transition!", category));
                    return false;
                }
            }

            // if we try apply same transition and priority and category
            if ((m_currentTransition != null) &&
                (m_currentTransition.Value.Priority == priority) &&
                (m_currentTransition.Value.TransitionEnum == transitionEnum) &&
                ((category == null) || (m_currentTransition.Value.Category == category)))
            {
                if ((m_musicState == MyMusicState.Transition) && !m_transitionForward)
                {
                    m_musicState = MyMusicState.Playing;
                    return true;
                }
                else
                    return false;
            }

            // if category not set, we take random category from transition cues
            string transitionCategory = category ?? m_cueBank.GetRandomTransitionCategory(transitionEnum);
            // we set this transition as next
            m_nextTransitions[priority] = new MyMusicTransition(priority, transitionEnum, transitionCategory);
            MyTrace.Send(TraceWindow.Server, string.Format("Applying transition {0} {1} (priority = {2})", transitionEnum, transitionCategory, priority));

            // if new transition has lower priority then current, we don't want apply new transition now
            if ((m_currentTransition != null) && (m_currentTransition.Value.Priority > priority))
                return false;

            m_loopMusic = loop;

            if (m_musicState == MyMusicState.Playing)
                StartTransition(true);
            else if (m_musicState == MyMusicState.Transition)
            {
            }
            else if (m_musicState == MyMusicState.Stopped)
            {
            }
            else
                throw new InvalidBranchException();

            return true;
        }