refactor(logic): 重构登录和地图相关逻辑

- 更新 Player 结构体,添加 Nick 字段
- 修改 ErrorCode 类型从 uint32 改为 int32
- 优化 SocketHandler 处理逻辑
- 重构 Controller 中的 Login 和地图相关方法
- 更新地图服务中的 MapIn 和 MapOut 方法
- 调整空间服务中的 Hot 和 Walk 方法
This commit is contained in:
2025-08-17 21:55:15 +08:00
parent 3bddd29daa
commit 9a6587a2da
15 changed files with 136 additions and 57 deletions

View File

@@ -210,17 +210,23 @@ func Recv(c *entity.Conn, data handler.TomeeHeader) {
}
aa, ok := ret[1].Interface().(errorcode.ErrorCode) //判断错误
data.Result = uint32(aa)
if aa == -1 {
return
}
if ok && aa != 0 { //这里实现回复错误包
cool.Loger.Error(context.Background(), aa.Code())
data.Result = uint32(aa)
c.SendPack(data.Pack(nil))
return
}
data.Result = 0 //默认成功
data.Version = "7"
c.SendPack(data.Pack(ret[0].Interface()))
}

View File

@@ -6,8 +6,12 @@ import (
"blazing/common/socket/errorcode"
"blazing/logic/service"
"blazing/logic/service/login"
"blazing/logic/service/space"
"blazing/modules/blazing/model"
"context"
"time"
"github.com/gogf/gf/v2/os/glog"
)
// 处理命令: 1001
@@ -22,17 +26,20 @@ func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.Ou
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
t.CompleteLogin() //通知客户端登录成功
t.MapId = 1
space.GetSpace(t.MapId).Set(t.UserID, t) //添加玩家
glog.Debug(context.Background(), "登录成功,初始地图 人数:", space.GetSpace(1).Len())
c.SendPack(data.Def())
return
t.Nick = "测试"
// c.SendPack(data.Def())
// return
result = login.NewOutInfo() //设置登录消息
result.UserID = 10002 //注释掉就能进入
result.UserID = 10001 //注释掉就能进入
result.RegisterTime = uint32(time.Now().Unix())
result.Nick = "骄阳号"
result.Color = 0x00FF00
result.Pos = model.Pos{X: 100, Y: 200}
result.Pos = model.Pos{X: 500, Y: 400}
result.Clothes = append(result.Clothes, model.PeopleItemInfo{ID: 100717, Level: 1})
result.MapID = 1
result.MapID = t.MapId
result.TimeLimit = 43200
result.TimeToday = 339

View File

@@ -11,8 +11,8 @@ func (h *Controller) MapIn(data *maps.InInfo, c *entity.Player) (result *maps.Ou
c.MapId = data.MapId //登录地图
space.GetSpace(c.MapId).Set(c.UserID, c) //添加玩家
//result = &maps.OutInfo{UserID: c.UserID} //设置广播信息
data.Broadcast(c.MapId, maps.OutInfo{UserID: c.UserID}) //同步广播
return
data.Broadcast(c.MapId, maps.OutInfo{UserID: c.UserID, Nick: c.Nick}) //同步广播
return nil, -1
}

View File

@@ -1,20 +1,20 @@
package controller
import (
"blazing/common/data/entity"
"blazing/common/socket/errorcode"
"blazing/logic/service/maphot"
"blazing/logic/service/space"
)
func (h Controller) MapHot(data *maphot.InInfo, c *entity.Player) (result *maphot.OutInfo, err errorcode.ErrorCode) {
result = &maphot.OutInfo{
HotInfos: space.GetMapHot(),
}
return
}
package controller
import (
"blazing/common/data/entity"
"blazing/common/socket/errorcode"
"blazing/logic/service/maphot"
"blazing/logic/service/space"
)
func (h Controller) MapHot(data *maphot.InInfo, c *entity.Player) (result *maphot.OutInfo, err errorcode.ErrorCode) {
result = &maphot.OutInfo{
HotInfos: space.GetMapHot(),
}
return
}

View File

@@ -4,10 +4,12 @@ import (
"blazing/common/data/entity"
"blazing/common/socket/errorcode"
"blazing/logic/service/maps"
"blazing/logic/service/space"
)
func (h *Controller) MapOut(data *maps.LeaveMapInboundInfo, c *entity.Player) (result *maps.LeaveMapOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
result = &maps.LeaveMapOutboundInfo{UserID: c.GetUserID()}
//result = &maps.LeaveMapOutboundInfo{UserID: c.GetUserID()}
data.Broadcast(c.MapId, maps.LeaveMapOutboundInfo{UserID: c.GetUserID()}) //同步广播
return
space.GetSpace(c.MapId).Delete(c.UserID)
return nil, -1
}

View File

@@ -0,0 +1,20 @@
package controller
import (
"blazing/common/data/entity"
"blazing/common/socket/errorcode"
"blazing/logic/service/maps"
)
func (h *Controller) MapList(data *maps.ListMapPlayerInboundInfo, c *entity.Player) (result *maps.ListMapPlayerOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
result = &maps.ListMapPlayerOutboundInfo{}
result.Player = make([]maps.OutInfo, 0)
result1 := maps.NewOutInfo()
result1.UserID = c.UserID
//result.Pos = model.Pos{X: 500, Y: 400}
result1.Nick = c.Nick
result.Player = append(result.Player, *result1)
return
}

View File

@@ -8,12 +8,10 @@ import (
func (h Controller) Walk(data *space.InInfo, c *entity.Player) (result *space.OutInfo, err errorcode.ErrorCode) {
result = &space.OutInfo{Flag: data.Flag,
data.Broadcast(c.MapId, space.OutInfo{Flag: data.Flag,
UserID: c.GetUserID(),
Reserve2: data.Reverse2,
Point: data.Point}
Point: data.Point}) //走路的广播
data.Broadcast(c.MapId, *result) //走路的广播
return
return nil, -1
}