Beispiel #1
0
//效果移除
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
	}
}
Beispiel #2
0
//尝试给对象添加一个效果
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
	}
}