Blame view

cmd/gameserver/action/RoleAction.go 3.31 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"
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
8
  	"pro2d/common/db/mongoproxy"
29a163be   zhangqijia   fix: CreateReq ui...
9
  	"pro2d/common/db/redisproxy"
765431a4   zhangqijia   增加schema接口, 抽象 mo...
10
  	"pro2d/common/logger"
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
11
  	"pro2d/models"
7f269318   zhangqijia   add pb.go; 添加关闭连接...
12
  	"pro2d/pb"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
13
14
  )
  
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
15
  func HeartRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
0cc58315   zhangqijia   添加定时器, 检查心跳
16
  	//msg.Conn.SetLastHeartCheckTime()
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
17
18
19
  	return 0, nil
  }
  
29a163be   zhangqijia   fix: CreateReq ui...
20
21
  func getRandomName() string {
  	name := ""
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
22
  	for {
29a163be   zhangqijia   fix: CreateReq ui...
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  		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
  }
  
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
39
  func CreateRpc(role1 *models.RoleModel, msg components.IMessage) (int32, interface{}) {
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
40
  	req := pb.CreateReq{}
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
41
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
42
  		logger.Error("CreateRpc err: %v", err)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
43
  		return 1, err
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
44
  	}
29a163be   zhangqijia   fix: CreateReq ui...
45
  	role := models.RoleExistByUid(req.Token)
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
46
  	if role != nil {
101d1cc1   zhangqijia   feat: 一个基于redis的自...
47
48
49
50
51
52
  		return 2, "role exists"
  	}
  
  	roleId, err := common.GetNextRoleId()
  	if err != nil {
  		return 3, err
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
53
54
  	}
  
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
55
  	role = models.NewRole(roleId)
c47aa250   zhangqijia   feat: 增加GM相关接口。详情...
56
  	role.Role.Uid = req.Token
29a163be   zhangqijia   fix: CreateReq ui...
57
  	role.Role.Nick = getRandomName()
69d286a7   zhangqijia   fix: 插件用来做部分热更
58
  	if err := role.Create(); err != nil {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
59
  		logger.Error("CreateRpc role create err: %v", err)
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
60
  		return 4, nil
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
61
  	}
8d983031   zhangqijia   loginReq uid -> t...
62
  	role.InitRole()
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
63
64
65
  	return 0, nil
  }
  
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
66
  func ChangeTeamRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
67
  	req := pb.ChangeTeamReq{}
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
68
69
70
71
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
  		logger.Error("loginRpc err: %v", err)
  		return 1, nil
  	}
eadc9aff   zhangqijia   feat: 增加上阵下阵协议,增加...
72
73
74
  
  	role.UpdateTeam(req.Team)
  	return 0, nil
69d286a7   zhangqijia   fix: 插件用来做部分热更
75
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
76
  
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
77
  func HeroEquipReferRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
78
79
80
81
82
  	req := pb.HeroEquipReferReq{}
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
  		logger.Error("loginRpc err: %v", err)
  		return 1, nil
  	}
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
83
84
85
  
  	e, ok := role.Equipments[req.EquipId]
  	if !ok {
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
86
  		return 2, nil
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  	}
  
  	equip := e.(*models.EquipModel)
  
  	// 装备未被穿戴
  	if equip.Equip.HeroId == "" {
  
  		h, ok := role.Heros[req.HeroId]
  		if ok {
  			hero := h.(*models.HeroModel)
  			hero.UpdateEquipment(equip.Equip.Id, equip.Equip.Type)
  		}
  		equip.SetProperty("heroid", req.HeroId)
  	} else {
  		//装备已经被穿戴
  		if req.HeroId != equip.Equip.HeroId {
  			h, ok := role.Heros[equip.Equip.HeroId]
  			if ok {
  				hero := h.(*models.HeroModel)
  				hero.UpdateEquipment(equip.Equip.Id, "")
  			}
  
  			h, ok = role.Heros[req.HeroId]
  			if ok {
  				hero := h.(*models.HeroModel)
  				hero.UpdateEquipment(equip.Equip.Id, equip.Equip.Type)
  			}
  
  			equip.SetProperty("heroid", req.HeroId)
  		}
  	}
  	return 0, nil
  }
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
120
  
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
121
  func RoleClearItemsRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
122
123
124
125
126
  	req := pb.RoleClearItemsReq{}
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
  		logger.Error("loginRpc err: %v", err)
  		return 1, nil
  	}
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
127
128
129
  
  	if !role.CostItem(req.Id, req.Count) {
  		logger.Error("cost err: %s, %d", req.Id, req.Count)
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
130
  		return 2, nil
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
131
132
133
134
  	}
  	return 0, nil
  }
  
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
135
  func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, interface{}) {
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
136
137
138
139
140
  	req := pb.EquipmentDelReq{}
  	if err := proto.Unmarshal(msg.GetData(), &req); err != nil {
  		logger.Error("loginRpc err: %v", err)
  		return 1, nil
  	}
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
141
  
a9813bb9   zhangqijia   fix: update
142
  	if err := mongoproxy.DelOne("equipment", "id", req.Id); err != nil {
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
143
  		logger.Error(err.Error())
3e92be67   zhangqijia   fix: 优化协议,除了登录和创建...
144
  		return 2, nil
51d48d11   zhangqijia   fix: 删除装备 删除物品请求
145
146
147
148
149
  	}
  	delete(role.Equipments, req.Id)
  
  	return 0, nil
  }