Blame view

cmd/gameserver/action/RoleAction.go 2.21 KB
69d286a7   zhangqijia   fix: 插件用来做部分热更
1
  package action
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
2
3
  
  import (
29a163be   zhangqijia   fix: CreateReq ui...
4
  	"fmt"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
5
  	"github.com/golang/protobuf/proto"
765431a4   zhangqijia   增加schema接口, 抽象 mo...
6
  	"pro2d/common"
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
7
  	"pro2d/common/components"
29a163be   zhangqijia   fix: CreateReq ui...
8
  	"pro2d/common/db/redisproxy"
765431a4   zhangqijia   增加schema接口, 抽象 mo...
9
  	"pro2d/common/logger"
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
10
  	"pro2d/models"
7f269318   zhangqijia   add pb.go; 添加关闭连接...
11
  	"pro2d/pb"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
12
13
  )
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
14
  func HeartRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) {
0cc58315   zhangqijia   添加定时器, 检查心跳
15
  	//msg.Conn.SetLastHeartCheckTime()
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
16
17
18
  	return 0, nil
  }
  
29a163be   zhangqijia   fix: CreateReq ui...
19
20
  func getRandomName() string {
  	name := ""
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
21
  	for {
29a163be   zhangqijia   fix: CreateReq ui...
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  		name = common.RandomName(common.DefaultName)
  		if name == "" {
  			continue
  		}
  
  		relay, err := redisproxy.SETNX(fmt.Sprintf(common.NickNames, name), "1")
  		if err != nil {
  			continue
  		}
  		if relay.(int64) == 1 {
  			break
  		}
  	}
  	return name
  }
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
38
  func CreateRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) {
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
39
  	req := pb.CreateReq{}
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
40
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
41
  		logger.Error("CreateRpc err: %v", err)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
42
  		return 1, err
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
43
  	}
29a163be   zhangqijia   fix: CreateReq ui...
44
  	role := models.RoleExistByUid(req.Token)
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
45
  	if role != nil {
101d1cc1   zhangqijia   feat: 一个基于redis的自...
46
47
48
49
50
51
  		return 2, "role exists"
  	}
  
  	roleId, err := common.GetNextRoleId()
  	if err != nil {
  		return 3, err
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
52
53
  	}
  
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
54
  	role = models.NewRole(roleId)
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
55
  	role.Role.Uid = req.Token
29a163be   zhangqijia   fix: CreateReq ui...
56
  	role.Role.Nick = getRandomName()
69d286a7   zhangqijia   fix: 插件用来做部分热更
57
  	if err := role.Create(); err != nil {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
58
  		logger.Error("CreateRpc role create err: %v", err)
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
59
60
  		return 3, nil
  	}
8d983031   zhangqijia   loginReq uid -> t...
61
  	role.InitRole()
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
62
63
64
  	return 0, nil
  }
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
65
  func LoginRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) {
77f5eec7   zhangqijia   plugin 插件热更 接口
66
  	//logger.Debug("11111111cmd: %v, msg: %s", msg.GetHeader().GetMsgID(), msg.GetData())
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
67
  	req := pb.LoginReq{}
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
68
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
69
  		logger.Error("loginRpc err: %v", err)
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
70
71
72
  		return 1, nil
  	}
  
436e0af4   zhangqijia   reactor: dir; Ac...
73
  	role := models.RoleExistByUid(req.Token)
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
74
75
76
  	if role == nil {
  		return 2, nil
  	}
7f269318   zhangqijia   add pb.go; 添加关闭连接...
77
  	role.SetProperty("Device", req.Device)
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
78
79
80
81
82
83
84
85
86
  	protoMsg := &pb.RoleRsp{
  		Role: role.Role,
  		Hero: role.GetAllHero(),
  		Team: role.GetAllTeam(),
  	}
  	//登录成功,存储agent role
  	agent.SetSchema(role)
  	return 0, protoMsg
  }
7f269318   zhangqijia   add pb.go; 添加关闭连接...
87
  
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
88
89
90
91
92
93
94
95
96
97
98
99
100
  func GoIntoBattleRpc(agent components.IAgent, msg components.IMessage) (int32, interface{}) {
  	req := pb.GoIntoBattleReq{}
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
  		logger.Error("loginRpc err: %v", err)
  		return 1, nil
  	}
  	role := agent.GetSchema().(*models.RoleModel)
  	if role == nil {
  		return 2, nil
  	}
  
  	role.UpdateTeam(req.Team)
  	return 0, nil
69d286a7   zhangqijia   fix: 插件用来做部分热更
101
  }