Ejemplo n.º 1
0
        public List <CombatEventTree> GetChildren(eCombatEventTiming timing)
        {
            if (m_children.ContainsKey(timing))
            {
                return(m_children[timing]);
            }

            return(null);
        }
Ejemplo n.º 2
0
        protected static eCombatEventTiming ParseTiming(Hashtable info)
        {
            eCombatEventTiming timing = eCombatEventTiming.AUTO;

            string timing_info = EB.Dot.String("timing", info, null);

            if (!string.IsNullOrEmpty(timing_info))
            {
                timing = CombatUtil.GetTiming(timing_info);
            }

            return(timing);
        }
Ejemplo n.º 3
0
        public bool IsChild(CombatEventTree sub_tree)
        {
            if (sub_tree.Parent != this)
            {
                return(false);
            }

            eCombatEventTiming     timing   = sub_tree.Event.Timing;
            List <CombatEventTree> children = GetChildren(timing);

            if (children == null)
            {
                return(false);
            }

            return(children.Contains(sub_tree));
        }
Ejemplo n.º 4
0
        public virtual bool Parse(Hashtable info)
        {
            m_type = ParseType(info);
            if (m_type == eCombatEventType.INVALID)
            {
                EB.Debug.LogWarning("CombatEvent.Parse: invalid type = {0}", m_type);
                return(false);
            }

            m_timing = ParseTiming(info);
            if (m_timing == eCombatEventTiming.INVALID)
            {
                EB.Debug.LogWarning("CombatEvent.Parse: invalid timing = {0}", m_timing);
                return(false);
            }

            m_parent = EB.Dot.Integer("parent", info, -1);

            return(true);
        }
Ejemplo n.º 5
0
        public bool AddChild(CombatEventTree sub_tree)
        {
            if (sub_tree.Parent != null)
            {
                EB.Debug.LogError("AddChild: parent is set");
                return(false);
            }

            eCombatEventTiming timing = sub_tree.Event.Timing;

            if (!HasChildren(timing))
            {
                m_children[timing] = new List <CombatEventTree>();
            }

            List <CombatEventTree> children = GetChildren(timing);

            if (ILRDefine.UNITY_EDITOR && children.Contains(sub_tree))
            {
                EB.Debug.LogError("AddChild: child exists");
                return(false);
            }

            sub_tree.Parent = this;
            children.Add(sub_tree);

            if (ILRDefine.UNITY_EDITOR && s_nodeCache.ContainsKey(sub_tree.GetHashCode()))
            {
                EB.Debug.LogError("AddChild: cache exists");
            }

            s_nodeCache[sub_tree.GetHashCode()] = sub_tree;

            if (ILRDefine.UNITY_EDITOR && timing == eCombatEventTiming.AUTO && children.Count > 1)
            {
                EB.Debug.LogError("AddChild: auto children great than one");
            }

            return(true);
        }
Ejemplo n.º 6
0
        public bool RemoveChild(CombatEventTree sub_tree)
        {
            if (sub_tree.Parent != this)
            {
                EB.Debug.LogError("RemoveChild: parent not match, this = {0}, target = {1}", Event.GetLogId(), sub_tree.Parent != null ? sub_tree.Parent.Event.GetLogId() : null);
                return(false);
            }

            eCombatEventTiming     timing   = sub_tree.Event.Timing;
            List <CombatEventTree> children = GetChildren(timing);

            if (children == null)
            {
                EB.Debug.LogError("RemoveChild: timing not match, {0}", timing);
                return(false);
            }

            if (!children.Remove(sub_tree))
            {
                EB.Debug.LogError("RemoveChild: child not found, {0}", sub_tree.Event.GetLogId());
                return(false);
            }

            if (children.Count == 0 && !m_children.Remove(timing))
            {
                EB.Debug.LogError("RemoveChild: remove empty timing failed, {0}", timing);
                return(false);
            }

            sub_tree.Parent = null;
            if (ILRDefine.UNITY_EDITOR && !s_nodeCache.ContainsKey(sub_tree.GetHashCode()))
            {
                EB.Debug.LogError("RemoveChild: cache not exists");
            }
            s_nodeCache.Remove(sub_tree.GetHashCode());

            return(true);
        }
Ejemplo n.º 7
0
        public bool RemoveChildren(eCombatEventTiming timing)
        {
            if (m_children.ContainsKey(timing))
            {
                List <CombatEventTree> children = GetChildren(timing);

                int len = children.Count;
                for (int i = 0; i < len; i++)
                {
                    CombatEventTree child = children[i];
                    child.Parent = null;
                    if (ILRDefine.UNITY_EDITOR && !s_nodeCache.ContainsKey(child.GetHashCode()))
                    {
                        EB.Debug.LogError("RemoveChildren: cache not exists");
                    }
                    s_nodeCache.Remove(child.GetHashCode());
                }
                //children.Clear();
                return(m_children.Remove(timing));
            }

            return(true);
        }
Ejemplo n.º 8
0
 public bool HasChildren(eCombatEventTiming timing)
 {
     return(m_children.ContainsKey(timing));
 }