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