Blame view

models/hero.go 1.28 KB
eb417b0b   zhangqijia   reactor mongo
1
2
3
  package models
  
  import (
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
4
  	"pro2d/common"
8d983031   zhangqijia   loginReq uid -> t...
5
  	"pro2d/common/components"
92256e32   zhangqijia   fix: 结束战斗的协议加上队伍id
6
  	"pro2d/csvdata"
7f269318   zhangqijia   add pb.go; 添加关闭连接...
7
  	"pro2d/pb"
eb417b0b   zhangqijia   reactor mongo
8
9
10
  )
  
  type HeroModel struct {
8d983031   zhangqijia   loginReq uid -> t...
11
  	components.ISchema
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
12
  	Hero       *pb.Hero
02d11cb7   zhangqijia   fix: update 装备脱/戴
13
  	Equipments common.IMapStringNum
eb417b0b   zhangqijia   reactor mongo
14
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
15
  
8d983031   zhangqijia   loginReq uid -> t...
16
  func NewHero(hero *pb.Hero) *HeroModel {
eb417b0b   zhangqijia   reactor mongo
17
  	m := &HeroModel{
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
18
19
  		ISchema:    NewSchema(hero.Id, hero),
  		Hero:       hero,
02d11cb7   zhangqijia   fix: update 装备脱/戴
20
  		Equipments: common.StringToMapNum(hero.Equipments),
eb417b0b   zhangqijia   reactor mongo
21
  	}
eb417b0b   zhangqijia   reactor mongo
22
23
  	return m
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
24
  
3cd84ccc   zhangqijia   fix: 裝備位置修改
25
26
27
28
  func (m *HeroModel) DelEquipment(key string) {
  	delete(m.Equipments, key)
  	m.SetProperty("equipments", common.MapNumToString(m.Equipments))
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
29
  
3cd84ccc   zhangqijia   fix: 裝備位置修改
30
31
  func (m *HeroModel) AddEquipment(key string, pos int32) {
  	m.Equipments[key] = pos
02d11cb7   zhangqijia   fix: update 装备脱/戴
32
  	m.SetProperty("equipments", common.MapNumToString(m.Equipments))
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
33
  }
92256e32   zhangqijia   fix: 结束战斗的协议加上队伍id
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  func (m *HeroModel) UpLevel(exp int32) (int32, int32) {
  	level := m.Hero.Level
  	oldLevelExp := csvdata.Get().TbHeroLevelExp.Get(level)
  	if oldLevelExp == nil {
  		return level, m.Hero.Exp
  	}
  	if exp >= oldLevelExp.NeedExp-m.Hero.Exp {
  		exp = exp - (oldLevelExp.NeedExp - m.Hero.Exp)
  		level++
  
  		for exp > 0 {
  			oldLevelExp = csvdata.Get().TbHeroLevelExp.Get(level)
  			if oldLevelExp == nil {
  				return level, exp
  			}
  
  			if exp >= oldLevelExp.NeedExp {
  				exp = exp - oldLevelExp.NeedExp
  				level++
  			} else {
  				exp = exp + m.Hero.Exp
  				break
  			}
  		}
  
  	} else {
  		exp = exp + m.Hero.Exp
  	}
  	return level, exp
  }