From 13b37b432a84c9bc13081582070530948b7d1b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Fri, 10 Oct 2025 20:46:16 +0800 Subject: [PATCH] =?UTF-8?q?```=20refactor(controller):=20=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E7=94=A8=E6=88=B7=E9=81=8D=E5=8E=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=B8=BA=E8=BF=AD=E4=BB=A3=E5=9B=9E=E8=B0=83=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将多个控制器中使用的 `Items()` 方法遍历用户列表的方式, 统一修改为通过 `IterCb()` 回调函数方式进行处理, 提升代码一致性与可维护性。 同时引入 `blazing/logic/service/common` 包以支持 PlayerI 接口调用。 此外,移除了未使用的 `model.Pos` 类型及相关注释,精简结构体定义。 ``` --- logic/controller/CreatePlayer.go | 7 ++++--- logic/controller/login.go | 13 +++++++------ logic/controller/map.go | 9 +++++---- logic/service/maps/mapout.go | 9 +++++---- logic/service/maps/walk.go | 12 +++++------- logic/service/space/space.go | 4 +--- 6 files changed, 27 insertions(+), 27 deletions(-) diff --git a/logic/controller/CreatePlayer.go b/logic/controller/CreatePlayer.go index a8f428f8..e0037173 100644 --- a/logic/controller/CreatePlayer.go +++ b/logic/controller/CreatePlayer.go @@ -4,6 +4,7 @@ import ( "blazing/common/socket/errorcode" "blazing/cool" + "blazing/logic/service/common" "blazing/logic/service/player" "blazing/logic/service/space" "blazing/logic/service/user" @@ -26,10 +27,10 @@ func (h *Controller) ChangePlayerName(data *user.ChangePlayerNameInboundInfo, c Nickname: newnice, UserID: c.Info.UserID, } - for _, player := range space.GetSpace(c.Info.MapID).User.Items() { - player.SendPack(data.Head.Pack(&result)) - } + space.GetSpace(c.Info.MapID).User.IterCb(func(playerID uint32, player common.PlayerI) { + player.SendPack(data.Head.Pack(&result)) + }) return result, 0 } diff --git a/logic/controller/login.go b/logic/controller/login.go index c7871441..c0cdc9eb 100644 --- a/logic/controller/login.go +++ b/logic/controller/login.go @@ -5,6 +5,7 @@ import ( "blazing/common/socket/errorcode" + "blazing/logic/service/common" "blazing/logic/service/user" "blazing/logic/service/maps" @@ -61,8 +62,7 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c *player.Conn) (result *us } t.Service.Talk(func(m *map[uint32]uint32) bool { - m1 := map[uint32]uint32{} - m = &m1 + m = nil return true }) }() @@ -83,10 +83,11 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c *player.Conn) (result *us defer func() { space.GetSpace(t.Info.MapID).User.Set(t.Info.UserID, t) - space.GetSpace(t.Info.MapID).User.IterCb() - for _, v := range space.GetSpace(t.Info.MapID).User.Items() { - v.SendPack(t1.Pack(&tt)) - } + space.GetSpace(t.Info.MapID).User.IterCb(func(playerID uint32, player common.PlayerI) { + player.SendPack(t1.Pack(&tt)) + + }) + }() return result, 0 diff --git a/logic/controller/map.go b/logic/controller/map.go index b1f83aa2..4b1b57d0 100644 --- a/logic/controller/map.go +++ b/logic/controller/map.go @@ -3,6 +3,7 @@ package controller import ( "blazing/common/socket/errorcode" + "blazing/logic/service/common" "blazing/logic/service/maphot" "blazing/logic/service/maps" "blazing/logic/service/player" @@ -47,12 +48,12 @@ func (h *Controller) MapList(data *maps.ListMapPlayerInboundInfo, c *player.Play result = &maps.ListMapPlayerOutboundInfo{} result.Player = make([]maps.OutInfo, 0) - - for _, v := range space.GetSpace(c.Info.MapID).User.Items() { + space.GetSpace(c.Info.MapID).User.IterCb(func(playerID uint32, player common.PlayerI) { result1 := maps.NewOutInfo() - copier.Copy(result1, v.GetInfo()) + copier.Copy(result1, player.GetInfo()) result.Player = append(result.Player, *result1) - } + }) + c.Canmon = true //可以刷怪 return } diff --git a/logic/service/maps/mapout.go b/logic/service/maps/mapout.go index 83a83070..a4183d05 100644 --- a/logic/service/maps/mapout.go +++ b/logic/service/maps/mapout.go @@ -1,6 +1,7 @@ package maps import ( + "blazing/logic/service/common" "blazing/logic/service/player" "blazing/logic/service/space" ) @@ -10,10 +11,10 @@ type LeaveMapInboundInfo struct { } func (t *LeaveMapInboundInfo) Broadcast(mapid uint32, o space.LeaveMapOutboundInfo) { - - for _, v := range space.GetSpace(mapid).User.Items() { + space.GetSpace(mapid).User.IterCb(func(playerID uint32, player common.PlayerI) { t.Head.Result = 0 - v.SendPack(t.Head.Pack(&o)) - } + player.SendPack(t.Head.Pack(&o)) + }) + } diff --git a/logic/service/maps/walk.go b/logic/service/maps/walk.go index 3596ef6b..5404573b 100644 --- a/logic/service/maps/walk.go +++ b/logic/service/maps/walk.go @@ -1,6 +1,7 @@ package maps import ( + "blazing/logic/service/common" "blazing/logic/service/player" "blazing/logic/service/space" @@ -21,15 +22,12 @@ type WalkInInfo struct { func (t *WalkInInfo) Broadcast(mapid uint32, o WalkOutInfo) { - //tt := planetmap - //g.Dump(GetSpace(mapid).Len()) - - for _, v := range space.GetSpace(mapid).User.Items() { + space.GetSpace(mapid).User.IterCb(func(playerID uint32, player common.PlayerI) { t.Head.Result = 0 tt := t.Head.Pack(&o) - v.SendPack(tt) - - } + player.SendPack(tt) + }) + } // PeopleWalkOutboundInfo PeopleWalkOutboundInfo类,实现OutboundMessage接口 diff --git a/logic/service/space/space.go b/logic/service/space/space.go index ab0f7541..1d3a60ac 100644 --- a/logic/service/space/space.go +++ b/logic/service/space/space.go @@ -5,8 +5,6 @@ import ( "blazing/common/utils" "blazing/logic/service/common" - - "blazing/modules/blazing/model" ) // Space 针对Player的并发安全map,键为uint32类型 @@ -15,7 +13,7 @@ type Space struct { CanRefresh bool //是否能够刷怪 ID uint32 // 地图ID Name string //地图名称 - DefaultPos model.Pos //默认位置DefaultPos + // DefaultPos model.Pos //默认位置DefaultPos //Positions map[uint32]model.Pos //从上一个地图跳转后默认位置 无任何写操作 }