From 4306ed586f20e58d1dd60763cc2a67aac12f85e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Sat, 16 Aug 2025 00:23:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor(logic):=20=E4=BC=98=E5=8C=96=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=92=8C=E5=9C=B0=E5=9B=BE=E7=9B=B8=E5=85=B3=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 登录逻辑中添加了默认用户信息 - 优化了地图进入和退出的广播逻辑 - 调整了数据结构和方法,提高了代码可读性和可维护性 --- logic/controller/login.go | 11 +++++++++++ logic/controller/mapin.go | 8 ++++---- logic/controller/mapout.go | 1 + logic/service/login/LoginSidInfo.go | 13 +++++++++++++ logic/service/maps/mapin.go | 2 +- logic/service/maps/mapout.go | 15 ++++++++++++++- 6 files changed, 44 insertions(+), 6 deletions(-) diff --git a/logic/controller/login.go b/logic/controller/login.go index d2a08454f..4d554a099 100644 --- a/logic/controller/login.go +++ b/logic/controller/login.go @@ -6,6 +6,8 @@ import ( "blazing/common/socket/errorcode" "blazing/logic/service" "blazing/logic/service/login" + "blazing/modules/blazing/model" + "time" ) // 处理命令: 1001 @@ -23,6 +25,15 @@ func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.Ou //c.SendPack(data.Def()) result = login.NewOutInfo() //设置登录消息 + result.UserID = 10002 //注释掉就能进入 + result.RegisterTime = uint32(time.Now().Unix()) + result.Nick = "骄阳号" + result.Color = 0x00FF00 + result.Pos = model.Pos{X: 100, Y: 200} + result.Clothes = append(result.Clothes, model.PeopleItemInfo{ID: 100717, Level: 1}) + result.MapID = 1 + result.TimeLimit = 43200 + result.TimeToday = 339 return result, 0 diff --git a/logic/controller/mapin.go b/logic/controller/mapin.go index 71731d938..d01586146 100644 --- a/logic/controller/mapin.go +++ b/logic/controller/mapin.go @@ -9,10 +9,10 @@ import ( func (h *Controller) MapIn(data *maps.InInfo, c *entity.Player) (result *maps.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的 - c.MapId = data.MapId //登录地图 - space.GetPlanet(c.UserID).Set(c.UserID, c) //添加玩家 - result = &maps.OutInfo{UserID: c.UserID} //设置广播信息 - data.Broadcast(c.MapId, *result) //同步广播 + c.MapId = data.MapId //登录地图 + space.GetPlanet(c.MapId).Set(c.UserID, c) //添加玩家 + //result = &maps.OutInfo{UserID: c.UserID} //设置广播信息 + data.Broadcast(c.MapId, maps.OutInfo{UserID: c.UserID}) //同步广播 return } diff --git a/logic/controller/mapout.go b/logic/controller/mapout.go index 63ad60a7f..7d4e02690 100644 --- a/logic/controller/mapout.go +++ b/logic/controller/mapout.go @@ -8,5 +8,6 @@ import ( func (h *Controller) MapOut(data *maps.LeaveMapInboundInfo, c *entity.Player) (result *maps.LeaveMapOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的 result = &maps.LeaveMapOutboundInfo{UserID: c.GetUserID()} + data.Broadcast(c.MapId, maps.LeaveMapOutboundInfo{UserID: c.GetUserID()}) //同步广播 return } diff --git a/logic/service/login/LoginSidInfo.go b/logic/service/login/LoginSidInfo.go index cb0c62dec..2b7d81110 100644 --- a/logic/service/login/LoginSidInfo.go +++ b/logic/service/login/LoginSidInfo.go @@ -6,6 +6,7 @@ import ( "blazing/modules/blazing/model" "context" "encoding/hex" + "fmt" "github.com/creasty/defaults" "github.com/gogf/gf/v2/os/glog" @@ -19,6 +20,18 @@ type InInfo struct { //这里直接使用组合来实现将传入的原始头部 } +func (s *InInfo) Def() []byte { //默认返回方法 + t1, _ := hex.DecodeString("0000045D37000003E9000027110000000000002711683F89CF6E69656F0000000000000000000000000008000F00000000000000000000000000000000000000000000000000000001000001DB0000018B000000000000A8C000000000000000000000000000000000000000080001388000000001000000017FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000064000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001FFFFFFFF000000004E4F4E4F0000000000000000000000000000000000000001000000010000000100000001000000010000000100000001000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000100000064000000000000000000000000000000000000001F000000000000006400000000000093F4000093F4000000D5000000F7000000AD00000088000000920000008C0000009C00000000000000000000000000000000000000000000000000000004000027900000001B00004E6200000014000028380000002800004E3E0000002368493DC60000000000000000000000000000000000000000000100000000000000A937000007D10000271100000000000027116E69656F00000000000000000000000000000000000000000000000F0000000000000000000001DB0000018B0000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000") + //t1 = t1[17:] + fmt.Println(t1[:40]) + s.Head.Version = "7" + s.Head.UserID = 10001 + s.Head.Result = 0 + //s //return data.Head.Pack(t1[17:])[:40] + return s.Head.Pack(t1[17:]) //返回传参 + //return t1[:40] + +} func (l *InInfo) CheakSession() bool { // tt, _ := cool.CacheManager.Keys(context.Background()) //g.Dump(tt) diff --git a/logic/service/maps/mapin.go b/logic/service/maps/mapin.go index 274085748..2d19e5253 100644 --- a/logic/service/maps/mapin.go +++ b/logic/service/maps/mapin.go @@ -17,7 +17,7 @@ type InInfo struct { Point model.Pos `fieldDesc:"直接给坐标x,y"` // Reverse2: 暂定 占位字符2 - Reverse2 string `struc:"[2]byte"` + //Reverse2 string `struc:"[2]byte"` } func (t *InInfo) Broadcast(mapid uint32, o OutInfo) { diff --git a/logic/service/maps/mapout.go b/logic/service/maps/mapout.go index f1be5e0c0..63d4e3809 100644 --- a/logic/service/maps/mapout.go +++ b/logic/service/maps/mapout.go @@ -1,6 +1,10 @@ package maps -import "blazing/common/socket/handler" +import ( + "blazing/common/data/entity" + "blazing/common/socket/handler" + "blazing/logic/service/space" +) type LeaveMapOutboundInfo struct { // 米米号 @@ -10,3 +14,12 @@ type LeaveMapOutboundInfo struct { type LeaveMapInboundInfo struct { Head handler.TomeeHeader `cmd:"2002" struc:"[0]pad"` //切换地图 } + +func (t *LeaveMapInboundInfo) Broadcast(mapid uint32, o LeaveMapOutboundInfo) { + + space.GetPlanet(mapid).Range(func(playerID uint32, player *entity.Player) bool { + + player.SendPack(t.Head.Pack(o)) + return true + }) +}