44 lines
812 B
Go
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
|
|
}
|