mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 17:02:26 +08:00
主协程操作命令管理器
This commit is contained in:
@@ -27,7 +27,7 @@ type Command struct {
|
||||
|
||||
// CommandManager 命令管理器
|
||||
type CommandManager struct {
|
||||
system *model.Player // 机器人 目前负责收发命令 以及 大世界
|
||||
system *model.Player // 机器人 目前负责收发消息 以及 大世界
|
||||
commandFuncRouter map[string]CommandFunc // 记录命令处理函数
|
||||
commandPermMap map[string]CommandPerm // 记录命令对应的权限
|
||||
commandTextInput chan *Command // 传输要处理的命令文本
|
||||
@@ -51,8 +51,6 @@ func NewCommandManager(g *GameManager) *CommandManager {
|
||||
r.commandTextInput = make(chan *Command, 1000)
|
||||
r.InitRouter() // 初始化路由
|
||||
|
||||
go r.HandleCommand() // 处理传入的命令
|
||||
|
||||
r.gameManager = g
|
||||
return r
|
||||
}
|
||||
@@ -133,20 +131,6 @@ func (c *CommandManager) NewCommand(executor *model.Player, text string) *Comman
|
||||
return &Command{executor, text, cmdName, cmdArgs}
|
||||
}
|
||||
|
||||
// HandleCommand 处理命令
|
||||
func (c *CommandManager) HandleCommand() {
|
||||
// 处理传入 commandTextInput 的所有命令文本
|
||||
// 为了避免主协程阻塞搞了个channel
|
||||
|
||||
for {
|
||||
// 取出要执行的命令
|
||||
cmd := <-c.commandTextInput
|
||||
|
||||
// 执行命令
|
||||
c.ExecCommand(cmd)
|
||||
}
|
||||
}
|
||||
|
||||
// ExecCommand 执行命令
|
||||
func (c *CommandManager) ExecCommand(cmd *Command) {
|
||||
player := cmd.Executor
|
||||
|
||||
@@ -62,6 +62,9 @@ func (g *GameManager) Start() {
|
||||
case localEvent := <-g.localEventManager.localEventChan:
|
||||
// 处理本地事件
|
||||
g.localEventManager.LocalEventHandle(localEvent)
|
||||
case command := <-g.commandManager.commandTextInput:
|
||||
// 处理传入的命令 (普通玩家 GM命令)
|
||||
g.commandManager.ExecCommand(command)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
Reference in New Issue
Block a user