package models import ( "pro2d/common" "pro2d/common/components" "pro2d/csvdata" "pro2d/pb" ) type HeroModel struct { components.ISchema Hero *pb.Hero Equipments common.IMapStringNum } func NewHero(hero *pb.Hero) *HeroModel { m := &HeroModel{ ISchema: NewSchema(hero.Id, hero), Hero: hero, Equipments: common.StringToMapNum(hero.Equipments), } return m } func (m *HeroModel) DelEquipment(key string) { delete(m.Equipments, key) m.SetProperty("equipments", common.MapNumToString(m.Equipments)) } func (m *HeroModel) AddEquipment(key string, pos int32) { m.Equipments[key] = pos m.SetProperty("equipments", common.MapNumToString(m.Equipments)) } 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 }