Example #1
0
        public static ActBuff Create(int id, Character carryer, Character caster)
        {
            ActBuff tempBuff = null;

            Buffs.TryGetValue(id, out tempBuff);
            if (tempBuff == null)
            {
                Debug.LogError("找不到该Buff的模版, ID =" + id);
                return(null);
            }
            else
            {
                ActBuff buff = ActBuffItem.Clone <ActBuff>(tempBuff);
                buff.ID      = id;
                buff.Carryer = carryer;
                buff.Caster  = caster;
                for (int i = 0; i < buff.Children.Count; i++)
                {
                    buff.Children[i].Buff    = buff;
                    buff.Children[i].Carryer = carryer;
                    buff.Children[i].Caster  = caster;
                }
                return(buff);
            }
        }
Example #2
0
        public static T Clone <T>(ActBuffItem src) where T : ActBuffItem
        {
            T item = Activator.CreateInstance <T>();

            FieldInfo[] fields = item.GetType().GetFields();
            for (int i = 0; i < fields.Length; i++)
            {
                FieldInfo newField = fields[i];
                if (newField.IsDefined(typeof(SerializeField), true) &&
                    newField.IsDefined(typeof(ActFieldAttribute), true) == false)
                {
                    FieldInfo oldField = src.GetType().GetField(newField.Name);
                    if (oldField != null)
                    {
                        newField.SetValue(item, oldField.GetValue(src));
                    }
                }
            }
            for (int i = 0; i < src.Children.Count; i++)
            {
                ActBuffItem child = Clone(src.Children[i]);
                item.AddChild(child);
            }
            return(item);
        }
Example #3
0
 public override void Exit()
 {
     for (int i = 0; i < Children.Count; i++)
     {
         ActBuffItem child = Children[i];
         child.Exit();
     }
     this.Status = EActStatus.SUCCESS;
 }
Example #4
0
 public override void Overlay()
 {
     CurOverlayNum++;
     for (int i = 0; i < Children.Count; i++)
     {
         ActBuffItem child = Children[i];
         child.Overlay();
     }
 }
Example #5
0
 public override void Refresh()
 {
     for (int i = 0; i < Children.Count; i++)
     {
         ActBuffItem child = Children[i];
         child.Refresh();
     }
     this.StatTime = Time.realtimeSinceStartup;
 }
Example #6
0
 public override void Enter()
 {
     this.StatTime = Time.realtimeSinceStartup;
     this.CurOverlayNum++;
     for (int i = 0; i < Children.Count; i++)
     {
         ActBuffItem child = Children[i];
         child.Enter();
     }
     this.Status = EActStatus.STARTUP;
 }
Example #7
0
 public override void SaveDoc(XmlDocument doc, XmlElement element)
 {
     base.SaveDoc(doc, element);
     for (int i = 0; i < Children.Count; i++)
     {
         ActBuffItem act   = Children[i];
         XmlElement  child = doc.CreateElement(act.GetType().Name);
         element.AppendChild(child);
         act.SaveDoc(doc, child);
     }
 }
Example #8
0
 public override void Execute()
 {
     for (int i = 0; i < Children.Count; i++)
     {
         ActBuffItem child = Children[i];
         child.Execute();
     }
     this.Status = EActStatus.RUNNING;
     if (Carryer.IsDead())
     {
         Stop();
     }
 }
Example #9
0
        public override void LoadDoc(XmlElement element)
        {
            base.LoadDoc(element);
            XmlElement child = element.FirstChild as XmlElement;

            while (child != null)
            {
                Type        type = System.Type.GetType("ACT" + "." + child.Name);
                ActBuffItem act  = (ActBuffItem)System.Activator.CreateInstance(type);
                act.LoadDoc(child);
                AddChild(act);
                child = child.NextSibling as XmlElement;
            }
        }
Example #10
0
 public virtual void DelChild(ActBuffItem item)
 {
     Children.Remove(item);
 }
Example #11
0
 public virtual void AddChild(ActBuffItem item)
 {
     Children.Add(item);
 }