package models import ( "fmt" "pro2d/protos/pb" "pro2d/src/components/db" "pro2d/src/components/logger" ) type RoleModel struct { *db.Schema Role *pb.Role Heros HeroMap Teams *TeamModel Equip *EquipModels Prop *PropModels } func RoleExistByUid(uid string) *RoleModel { data := &pb.Role{Uid: uid} if err := db.FindOne(db.GetBsonM("uid", uid), data); err != nil { logger.Error("Role exist err: %v", err) return nil } r := &RoleModel{ Schema: db.NewSchema(data.Id, data), Role: data, Heros: make(HeroMap), Teams: new(TeamModel), Equip: new(EquipModels), Prop: new(PropModels), } r.LoadAll() return r } func NewRole(id string) *RoleModel { data := &pb.Role{Id: id} m := &RoleModel{ Schema: db.NewSchema(id, data), Role: data, Heros: make(HeroMap), Teams: new(TeamModel), Equip: new(EquipModels), Prop: new(PropModels), } return m } func (m *RoleModel) LoadHero() { m.Heros["test"] = NewHero("") m.Heros["test"].Hero = &pb.Hero{ Id: "1", RoleId: m.Role.Id, Type: 1, Level: 1, ReinCount: 0, ReinPoint: 0, Equipments: "123123", } } func (m *RoleModel) LoadTeams() { m.Teams = NewTeam("0") m.Teams.Team = &pb.Team{ Id: "1", HeroIds: "1", } } func (m *RoleModel) LoadEquips() { m.Equip = NewEquip("0") m.Equip.Equip = &pb.Equipment{ Id: "0", RoleId: m.Role.Id, Type: 0, Equip: false, EnhanceLevel: false, } } func (m *RoleModel) LoadAll() { m.LoadHero() m.LoadTeams() m.LoadEquips() } func (m *RoleModel) AddHero(hero *pb.Hero) { h := NewHero(hero.Id) h.Hero = hero h.Create() m.Heros[fmt.Sprintf("%s%s", m.Role.Id, h.Hero.Id)] = h } 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 }