using System; using System.Collections.Generic; using System.Timers; namespace Bunifu.Licensing.Views.Transitions { // Token: 0x02000017 RID: 23 internal class TransitionManager { // Token: 0x06000157 RID: 343 RVA: 0x00014160 File Offset: 0x00012360 public static TransitionManager getInstance() { bool flag = TransitionManager.m_Instance == null; if (flag) { TransitionManager.m_Instance = new TransitionManager(); } return TransitionManager.m_Instance; } // Token: 0x06000158 RID: 344 RVA: 0x00014190 File Offset: 0x00012390 public void register(Transition transition) { object @lock = this.m_Lock; lock (@lock) { this.removeDuplicates(transition); this.m_Transitions[transition] = true; transition.TransitionCompletedEvent += this.onTransitionCompleted; } } // Token: 0x06000159 RID: 345 RVA: 0x000141F8 File Offset: 0x000123F8 private void removeDuplicates(Transition transition) { foreach (KeyValuePair keyValuePair in this.m_Transitions) { this.removeDuplicates(transition, keyValuePair.Key); } } // Token: 0x0600015A RID: 346 RVA: 0x00014254 File Offset: 0x00012454 private void removeDuplicates(Transition newTransition, Transition oldTransition) { IList transitionedProperties = newTransition.TransitionedProperties; IList transitionedProperties2 = oldTransition.TransitionedProperties; for (int i = transitionedProperties2.Count - 1; i >= 0; i--) { Transition.TransitionedPropertyInfo transitionedPropertyInfo = transitionedProperties2[i]; foreach (Transition.TransitionedPropertyInfo transitionedPropertyInfo2 in transitionedProperties) { bool flag = transitionedPropertyInfo.target == transitionedPropertyInfo2.target && transitionedPropertyInfo.propertyInfo == transitionedPropertyInfo2.propertyInfo; if (flag) { oldTransition.removeProperty(transitionedPropertyInfo); } } } } // Token: 0x0600015B RID: 347 RVA: 0x00014308 File Offset: 0x00012508 private TransitionManager() { this.m_Timer = new Timer(15.0); this.m_Timer.Elapsed += this.onTimerElapsed; this.m_Timer.Enabled = true; } // Token: 0x0600015C RID: 348 RVA: 0x00014374 File Offset: 0x00012574 private void onTimerElapsed(object sender, ElapsedEventArgs e) { bool flag = this.m_Timer == null; if (!flag) { this.m_Timer.Enabled = false; object @lock = this.m_Lock; IList list; lock (@lock) { list = new List(); foreach (KeyValuePair keyValuePair in this.m_Transitions) { list.Add(keyValuePair.Key); } } foreach (Transition transition in list) { transition.onTimer(); } this.m_Timer.Enabled = true; } } // Token: 0x0600015D RID: 349 RVA: 0x00014478 File Offset: 0x00012678 private void onTransitionCompleted(object sender, Transition.Args e) { Transition transition = (Transition)sender; transition.TransitionCompletedEvent -= this.onTransitionCompleted; object @lock = this.m_Lock; lock (@lock) { this.m_Transitions.Remove(transition); } } // Token: 0x04000108 RID: 264 private static TransitionManager m_Instance; // Token: 0x04000109 RID: 265 private IDictionary m_Transitions = new Dictionary(); // Token: 0x0400010A RID: 266 private Timer m_Timer = null; // Token: 0x0400010B RID: 267 private object m_Lock = new object(); } }