package game type areaEffect interface { onEntering(Permanent) onLeaving(Permanent) } type dynamicAreaEffect struct { _onEntering func(Permanent) _onLeaving func(Permanent) } func newDynamicAreaEffect(enter func(Permanent), leave func(Permanent)) *dynamicAreaEffect { return &dynamicAreaEffect{enter, leave} } func (e *dynamicAreaEffect) onEntering(p Permanent) { if e._onEntering != nil { e._onEntering(p) } } func (e *dynamicAreaEffect) onLeaving(p Permanent) { if e._onLeaving != nil { e._onLeaving(p) } }