Blame view

models/rolePlugin.go 2.5 KB
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
1
2
3
  package models
  
  import (
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
4
5
  	"fmt"
  	"github.com/golang/protobuf/proto"
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
6
  	"pro2d/common"
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
7
8
  	"pro2d/common/logger"
  	"pro2d/pb"
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
9
10
11
12
13
14
15
16
  )
  
  //背包系统
  func (m *RoleModel) GetItemCount(key string) uint32 {
  	c, ok := m.Items[key]
  	if !ok {
  		c = 0
  	}
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
17
  	return c.(uint32)
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
18
19
20
21
22
23
24
25
26
  }
  
  func (m *RoleModel) CostItem(key string, count int32) bool {
  	if uint32(count) > m.GetItemCount(key) {
  		return false
  	}
  	return m.AddItem(key, -count)
  }
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
27
  func (m *RoleModel) CostItems(params common.IMapString) bool {
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
28
  	for k, v := range params {
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
29
  		if v.(uint32) > m.GetItemCount(k) {
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
30
31
32
  			return false
  		}
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
33
  		m.AddItem(k, -v.(int32))
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
34
35
36
37
38
39
40
41
42
43
44
45
46
  	}
  	return true
  }
  
  func (m *RoleModel) AddItem(key string, count int32) bool {
  	c := m.GetItemCount(key)
  
  	num := int32(c) + count
  	if num > 0 {
  		m.Items[key] = uint32(num)
  	} else {
  		delete(m.Items, key)
  	}
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
47
  	m.SetProperty("items", common.MapToString(m.Items))
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
48
49
50
51
52
53
54
55
56
57
  
  	rsp, err := proto.Marshal(&pb.RoleUpdateItemsRsp{Items: fmt.Sprintf("%s=%d", key, num)})
  	if err != nil {
  		logger.Error(err.Error())
  		return true
  	}
  	m.GetConn().Send(0, uint32(pb.ProtoCode_RoleUpdateItemsRsp), rsp)
  	return true
  }
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
58
59
  func (m *RoleModel) AddItems(params common.IMapString) bool {
  	tmp := make(common.IMapString)
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
60
61
62
  	for k, v := range params {
  		c := m.GetItemCount(k)
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
63
  		num := c + v.(uint32)
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
64
65
66
67
68
69
70
71
  		if num > 0 {
  			m.Items[k] = num
  			tmp[k] = num
  		} else {
  			delete(m.Items, k)
  		}
  	}
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
72
  	m.SetProperty("items", common.MapToString(m.Items))
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
73
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
74
  	rsp, err := proto.Marshal(&pb.RoleUpdateItemsRsp{Items: common.MapToString(tmp)})
f631f225   zhangqijia   feat: 增加背包系统,以及背包...
75
76
77
78
79
80
81
82
83
84
85
  	if err != nil {
  		logger.Error(err.Error())
  		return true
  	}
  
  	if m.GetConn() != nil {
  		m.GetConn().Send(0, uint32(pb.ProtoCode_RoleUpdateItemsRsp), rsp)
  	}
  
  	return true
  }
c8509ef6   zhangqijia   fix: notify equip...
86
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
120
121
122
123
124
125
126
127
  
  func (m *RoleModel) AddHero(hero *pb.Hero) {
  	h := NewHero(hero)
  	h.Create()
  	m.Heros[hero.Id] = h
  }
  
  func (m *RoleModel) AddTeam(team *pb.Team) {
  	t := NewTeam(team)
  	t.Create()
  	m.Teams[team.Id] = t
  }
  
  func (m *RoleModel) UpdateTeam(teams []*pb.Team) {
  	for _, team := range teams {
  		team.RoleId = m.Role.Id
  		t := m.Teams[team.Id]
  		if t != nil {
  			t.UpdateSchema(team)
  		}
  	}
  }
  
  func (m *RoleModel) AddEquip(equip *pb.Equipment) *EquipModel {
  	e := NewEquip(equip)
  	e.Create()
  	m.Equipments[equip.Id] = e
  	m.EquipmentAddNotify(equip)
  	return e
  }
  
  func (m *RoleModel) EquipmentAddNotify(equip *pb.Equipment) {
  	update := &pb.EquipmentAddRsp{Equip: equip}
  	if rsp, err := proto.Marshal(update); err != nil {
  		logger.Error(" EquipmentAddNotify  err:", err.Error())
  		return
  	} else {
  		if m.GetConn() != nil {
  			m.GetConn().SendSuccess(uint32(pb.ProtoCode_EquipmentAddRsp), rsp)
  		}
  	}
  }