feat(maps): 重构移动广播逻辑并优化数据结构

将 WalkOutInfo 结构体迁移至 maps/info 包,并调整相关引用。
移除旧广播逻辑,改用 Space.Walk 方法进行统一广播处理。
新增 PlayerI 接口方法 SendWalkMapInfo 以支持行走信息发送。
在 Player 和 AI_player 中实现 SendWalkMapInfo 方法。
引入限流器到 space 包,用于控制广播频率。
```
This commit is contained in:
2025-11-16 12:10:27 +08:00
parent 0a8ef3d555
commit 4c21c4ac78
7 changed files with 53 additions and 48 deletions

View File

@@ -3,22 +3,19 @@ package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/maps"
"blazing/logic/service/maps/info"
"blazing/logic/service/player"
)
func (h Controller) Walk(data *maps.WalkInInfo, c *player.Player) (result *maps.WalkOutInfo, err errorcode.ErrorCode) {
result = &maps.WalkOutInfo{
Flag: data.Flag,
Point: data.Point,
Path: data.Path,
}
func (h Controller) Walk(data *maps.WalkInInfo, c *player.Player) (result *info.WalkOutInfo, err errorcode.ErrorCode) {
result.UserID = data.Head.UserID
go c.GetSpace().Walk(info.WalkOutInfo{
Flag: data.Flag,
Point: data.Point,
Path: data.Path,
UserID: c.Info.UserID,
})
//glog.Debug(context.Background(), err1)
if !c.Info.Pos.BothLessThan50(data.Point) { //距离超过50才广播
data.Broadcast(c.Info.MapID, *result) //走路的广播
}
c.Info.Pos = data.Point
return nil, -1
}