Blame view

models/rolePlugin.go 1.63 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
  }