refactor(logic): 重构登录和地图相关逻辑
- 更新 Player 结构体,添加 Nick 字段 - 修改 ErrorCode 类型从 uint32 改为 int32 - 优化 SocketHandler 处理逻辑 - 重构 Controller 中的 Login 和地图相关方法 - 更新地图服务中的 MapIn 和 MapOut 方法 - 调整空间服务中的 Hot 和 Walk 方法
This commit is contained in:
@@ -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()))
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
20
logic/controller/map_list.go
Normal file
20
logic/controller/map_list.go
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user