Blame view

src/models/role.go 1.82 KB
ee23102d   zhangqijia   支持mongo, grpc接服务器
1
2
3
  package models
  
  import (
eb417b0b   zhangqijia   reactor mongo
4
  	"fmt"
ee23102d   zhangqijia   支持mongo, grpc接服务器
5
  	"pro2d/protos/pb"
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
6
7
  	"pro2d/src/components/db"
  	"pro2d/src/components/logger"
ee23102d   zhangqijia   支持mongo, grpc接服务器
8
9
10
  )
  
  type RoleModel struct {
33ea26ab   zhangqijia   使用schema封装mongo
11
  	*db.Schema
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
12
  	Role  *pb.Role
eb417b0b   zhangqijia   reactor mongo
13
  	Heros HeroMap
1584eb4b   zhangqijia   修复创建唯一索引的bug
14
  	Teams *TeamModel
6f0d72bd   zhangqijia   定时器功能完善优化
15
16
  	Equip *EquipModels
  	Prop  *PropModels
ee23102d   zhangqijia   支持mongo, grpc接服务器
17
18
  }
  
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
19
  func RoleExistByUid(uid string) *RoleModel {
1584eb4b   zhangqijia   修复创建唯一索引的bug
20
21
22
  	data := &pb.Role{Uid: uid}
  
  	if err := db.FindOne(db.GetBsonM("uid", uid), data); err != nil {
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
23
  		logger.Error("Role exist err: %v", err)
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
24
  		return nil
ee23102d   zhangqijia   支持mongo, grpc接服务器
25
  	}
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
26
  
6f0d72bd   zhangqijia   定时器功能完善优化
27
28
  
  	r := &RoleModel{
33ea26ab   zhangqijia   使用schema封装mongo
29
  		Schema: db.NewSchema(data.Id, data),
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
30
  		Role:    data,
6f0d72bd   zhangqijia   定时器功能完善优化
31
32
33
34
  		Heros:   make(HeroMap),
  		Teams: new(TeamModel),
  		Equip: new(EquipModels),
  		Prop:  new(PropModels),
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
35
  	}
6f0d72bd   zhangqijia   定时器功能完善优化
36
37
  	r.LoadAll()
  	return r
ee23102d   zhangqijia   支持mongo, grpc接服务器
38
39
  }
  
33ea26ab   zhangqijia   使用schema封装mongo
40
  func NewRole(id string) *RoleModel {
1584eb4b   zhangqijia   修复创建唯一索引的bug
41
  	data := &pb.Role{Id: id}
ee23102d   zhangqijia   支持mongo, grpc接服务器
42
  	m := &RoleModel{
33ea26ab   zhangqijia   使用schema封装mongo
43
  		Schema: db.NewSchema(id, data),
cad2b7f3   zhangqijia   reactor: 重构目录, 重构...
44
45
  		Role:    data,
  		Heros:   make(HeroMap),
6f0d72bd   zhangqijia   定时器功能完善优化
46
47
48
  		Teams: new(TeamModel),
  		Equip: new(EquipModels),
  		Prop:  new(PropModels),
ee23102d   zhangqijia   支持mongo, grpc接服务器
49
  	}
ee23102d   zhangqijia   支持mongo, grpc接服务器
50
51
52
  	return m
  }
  
6f0d72bd   zhangqijia   定时器功能完善优化
53
  func (m *RoleModel) LoadHero() {
33ea26ab   zhangqijia   使用schema封装mongo
54
  	m.Heros["test"] = NewHero("")
6f0d72bd   zhangqijia   定时器功能完善优化
55
  	m.Heros["test"].Hero = &pb.Hero{
33ea26ab   zhangqijia   使用schema封装mongo
56
  		Id:         "1",
6f0d72bd   zhangqijia   定时器功能完善优化
57
58
59
60
61
62
63
  		RoleId:     m.Role.Id,
  		Type:       1,
  		Level:      1,
  		ReinCount:  0,
  		ReinPoint:  0,
  		Equipments: "123123",
  	}
ee23102d   zhangqijia   支持mongo, grpc接服务器
64
  }
eb417b0b   zhangqijia   reactor mongo
65
  
6f0d72bd   zhangqijia   定时器功能完善优化
66
  func (m *RoleModel) LoadTeams() {
33ea26ab   zhangqijia   使用schema封装mongo
67
  	m.Teams = NewTeam("0")
6f0d72bd   zhangqijia   定时器功能完善优化
68
  	m.Teams.Team = &pb.Team{
33ea26ab   zhangqijia   使用schema封装mongo
69
  		Id:      "1",
6f0d72bd   zhangqijia   定时器功能完善优化
70
71
72
73
74
  		HeroIds: "1",
  	}
  }
  
  func (m *RoleModel) LoadEquips() {
33ea26ab   zhangqijia   使用schema封装mongo
75
  	m.Equip = NewEquip("0")
6f0d72bd   zhangqijia   定时器功能完善优化
76
  	m.Equip.Equip = &pb.Equipment{
33ea26ab   zhangqijia   使用schema封装mongo
77
  		Id:           "0",
6f0d72bd   zhangqijia   定时器功能完善优化
78
79
80
81
82
83
84
85
86
87
88
  		RoleId:       m.Role.Id,
  		Type:         0,
  		Equip:        false,
  		EnhanceLevel: false,
  	}
  }
  
  func (m *RoleModel) LoadAll()  {
  	m.LoadHero()
  	m.LoadTeams()
  	m.LoadEquips()
eb417b0b   zhangqijia   reactor mongo
89
90
91
  }
  
  func (m *RoleModel) AddHero(hero *pb.Hero) {
3592dfd3   zhangqijia   重构models, 索引唯一索引
92
93
  	h := NewHero(hero.Id)
  	h.Hero = hero
eb417b0b   zhangqijia   reactor mongo
94
  	h.Create()
33ea26ab   zhangqijia   使用schema封装mongo
95
  	m.Heros[fmt.Sprintf("%s%s", m.Role.Id, h.Hero.Id)] = h
6f0d72bd   zhangqijia   定时器功能完善优化
96
97
98
99
100
101
102
103
104
  }
  
  func (m *RoleModel) GetAllHero() map[string]*pb.Hero {
  	h := make(map[string]*pb.Hero)
  	for k, hero := range m.Heros {
  		h[k] = hero.Hero
  	}
  	return h
  }