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 }