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); } }
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); }
public override void Exit() { for (int i = 0; i < Children.Count; i++) { ActBuffItem child = Children[i]; child.Exit(); } this.Status = EActStatus.SUCCESS; }
public override void Overlay() { CurOverlayNum++; for (int i = 0; i < Children.Count; i++) { ActBuffItem child = Children[i]; child.Overlay(); } }
public override void Refresh() { for (int i = 0; i < Children.Count; i++) { ActBuffItem child = Children[i]; child.Refresh(); } this.StatTime = Time.realtimeSinceStartup; }
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; }
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); } }
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(); } }
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; } }
public virtual void DelChild(ActBuffItem item) { Children.Remove(item); }
public virtual void AddChild(ActBuffItem item) { Children.Add(item); }