//效果移除 func (self *EffectBase) Remove() bool { //如果当前效果还有效、有接受对象 if self.Alive && self.Target != nil { //判断接收对象是否可以取消本效果 isTargetRemove := self.Target.RemoveEffect(self.Holder) // fmt.Printf("如果对象答应取消该效果:%v \n",isTargetRemove) //如果对象答应取消该效果 if isTargetRemove { self.RemoveTime = time.GetNow() self.From = nil self.Target = nil self.Alive = false return true } else { return false } } else { return false } }
//尝试给对象添加一个效果 func (self *EffectBase) PutOn(from interface{}, target effect.EffectCarrier) bool { //如果效果还没有对象产生 if self.Target == nil { //判断接收对象是否可以放置本效果 isTargetReceive := target.PutOnEffect(self.Holder, from) if isTargetReceive { self.PutOnTime = time.GetNow() self.From = from self.Target = target self.Alive = true return true } else { //效果不被对方接收(比如:可能对方在效果 OnBeforePutOn 事件中,被其他效果取消了) return false } } else { //效果已经被附加过了,不能被重新附加 return false } }