public void TestBoolDelegateRemoveAllDelegatesInLoop()
        {
            CVarChangedDelegate del1 = delegate(CVar cvar)
            {
                m_result.Add("delegate1 " + cvar.BoolValue);
            };

            CVarChangedDelegate del2 = delegate(CVar cvar)
            {
                m_result.Add("delegate2 " + cvar.BoolValue);
            };
            CVarChangedDelegate del3 = delegate(CVar cvar)
            {
                m_result.Add("delegate3 " + cvar.BoolValue);
                cvar.RemoveDelegates(del1.Target);
            };

            CVar cvarBool = new CVar("bool", false);

            cvarBool.AddDelegate(del3);
            cvarBool.AddDelegate(del2);
            cvarBool.AddDelegate(del1);

            Execute("bool 1");
            AssertList(m_result,
                       "delegate3 True"
                       );
            m_result.Clear();
        }
Пример #2
0
        public void RemoveDelegate(CVarChangedDelegate del)
        {
            if (del != null && m_delegateList != null)
            {
                m_delegateList.Remove(del);

                if (m_delegateList.Count == 0)
                {
                    m_delegateList = null;
                }
            }
        }
        public void TestBoolDelegateRemoveMultipleDelegates()
        {
            CVarChangedDelegate del1 = delegate(CVar cvar)
            {
                m_result.Add("delegate1 " + cvar.BoolValue);
            };
            CVarChangedDelegate del2 = delegate(CVar cvar)
            {
                m_result.Add("delegate2 " + cvar.BoolValue);
            };
            CVarChangedDelegate del3 = delegate(CVar cvar)
            {
                m_result.Add("delegate3 " + cvar.BoolValue);
            };

            CVar cvarBool = new CVar("bool", false);

            cvarBool.AddDelegate(del1);
            cvarBool.AddDelegate(del2);
            cvarBool.AddDelegate(del3);

            Execute("bool 0");
            AssertList(m_result);
            m_result.Clear();

            Execute("bool 1");
            AssertList(m_result,
                       "delegate1 True",
                       "delegate2 True",
                       "delegate3 True"
                       );
            m_result.Clear();

            cvarBool.RemoveDelegate(del3);
            Execute("bool 0");
            AssertList(m_result,
                       "delegate1 False",
                       "delegate2 False"
                       );
            m_result.Clear();

            cvarBool.RemoveDelegate(del2);
            Execute("bool 1");
            AssertList(m_result,
                       "delegate1 True"
                       );
            m_result.Clear();

            cvarBool.RemoveDelegate(del1);
            Execute("bool 0");
            AssertList(m_result);
        }
Пример #4
0
        public void AddDelegate(CVarChangedDelegate del)
        {
            if (del == null)
            {
                throw new ArgumentNullException("del");
            }

            if (m_delegateList == null)
            {
                m_delegateList = new CVarChangedDelegateList(1);
                m_delegateList.Add(del);
            }
            else if (!m_delegateList.Contains(del))
            {
                m_delegateList.Add(del);
            }
        }