From 85f5ed1c96b5be11b6063fc07de6def851ba8a4e Mon Sep 17 00:00:00 2001 From: UnKownOwO <80520429@qq.com> Date: Fri, 25 Nov 2022 11:23:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E5=8D=8F=E7=A8=8B=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E7=AE=A1=E7=90=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gs/game/command_manager.go | 18 +----------------- gs/game/game_manager.go | 3 +++ 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/gs/game/command_manager.go b/gs/game/command_manager.go index 50504e9c..d7ce943f 100644 --- a/gs/game/command_manager.go +++ b/gs/game/command_manager.go @@ -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 diff --git a/gs/game/game_manager.go b/gs/game/game_manager.go index 50d8f7a3..9b2b7554 100644 --- a/gs/game/game_manager.go +++ b/gs/game/game_manager.go @@ -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) } } }()