1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package internal
- import (
- "reflect"
- redismgr "server/db/redis"
- "server/game/ludo"
- "server/msg"
- "github.com/name5566/leaf/gate"
- "github.com/name5566/leaf/log"
- )
- func handleMsg(m interface{}, h interface{}) {
- skeleton.RegisterChanRPC(reflect.TypeOf(m), h)
- }
- // 大厅有进入大厅,离开大厅,加入房间,玩法列表,商城
- func init() {
- handleMsg(&msg.EnterHall{}, enterHall)
- handleMsg(&msg.LeaveHall{}, leaveHall)
- }
- func enterHall(args []interface{}) {
- m := args[0].(*msg.EnterHall)
- a := args[1].(gate.Agent)
- _, err_info := redismgr.GetUserInfoFromRedis(m.UserId)
- if err_info != nil {
- a.WriteMsg(&msg.ResEnterHall{
- Success: false,
- ErrMsg: &msg.MsgError{
- ErrorCode: 101,
- ErrorMsg: "not find user",
- },
- })
- return
- }
- ud := a.UserData()
- room_id := ud.(*msg.UserInfo).RoomId
- var user_room *msg.RoomInfo = nil
- //如果玩家在某个游戏里,就进行重连
- if room_id != 0 {
- //暂时就一个ludo游戏
- wrapper := ludo.GetBattleRoomById(room_id)
- if wrapper != nil {
- wrapper.OptTime = wrapper.Get_cur_color_opt_time()
- user_room = wrapper.RoomInfo
- } else {
- redismgr.SaveUserInfoToRedis(&msg.UserInfo{
- UserId: ud.(*msg.UserInfo).UserId,
- Name: ud.(*msg.UserInfo).Name,
- MCoin: ud.(*msg.UserInfo).MCoin,
- MHead: ud.(*msg.UserInfo).MHead,
- RoomId: ud.(*msg.UserInfo).RoomId,
- })
- }
- //进行重连逻辑
- }
- a.WriteMsg(&msg.ResEnterHall{
- Success: true,
- ErrMsg: nil,
- ReconnectRoomInfo: user_room,
- })
- log.Debug("enterHallHandler, msg: %v, agent: %v", m, a)
- }
- func leaveHall(args []interface{}) {
- m := args[0].(*msg.LeaveHall)
- a := args[1].(gate.Agent)
- log.Debug("leaveHallHandler, msg: %v, agent: %v", m, a)
- }
|