airobot/lib/scene.go
2022-12-09 18:41:12 +08:00

44 lines
812 B
Go

package lib
import "sync"
type scene struct {
ai *myAI
Name string
Desc string
callerQueue *Queue[ICaller] //确定运行的caller队列
data map[string][]byte //caller缓存数据
lock sync.Mutex
}
// 创建场景
func NewScene(ai *myAI, param SceneParam) *scene {
s := &scene{
ai: ai,
Name: param.Name,
Desc: param.Desc,
callerQueue: NewQueue[ICaller](),
data: make(map[string][]byte),
}
return s
}
// 给场景添加调用器
func (s *scene) AddCaller(caller ICaller) {
s.callerQueue.Add(caller)
}
// 列表
func (s *scene) CallerList() []ICaller {
return s.callerQueue.List()
}
// 取出
func (s *scene) PopCaller() ICaller {
action, err := s.callerQueue.Pop()
if err != nil {
return nil
}
return action
}