diff --git a/modules/items/modelitems.go b/modules/items/modelitems.go index 415518e9a..22162ee97 100644 --- a/modules/items/modelitems.go +++ b/modules/items/modelitems.go @@ -162,7 +162,6 @@ func (this *ModelItemsComp) UpdateUserPack(uid string, itmes ...*pb.DB_UserItemD }) } } - return } diff --git a/modules/timer/parkour.go b/modules/timer/parkour.go index 731026099..e0f0d3d28 100644 --- a/modules/timer/parkour.go +++ b/modules/timer/parkour.go @@ -20,6 +20,11 @@ import ( "go.mongodb.org/mongo-driver/mongo/options" ) +type ParkourTeam struct { + member []*pb.DBRaceMember + ais []*pb.DBRaceMember +} + /* 捕羊大赛 维护服务 */ @@ -31,7 +36,7 @@ type ParkourComp struct { ulock sync.RWMutex users []*pb.DBRaceMember //推荐用户信息 tlock sync.RWMutex - teams map[string][]*pb.DBRaceMember + teams map[string]*ParkourTeam timerlock int32 total int32 } @@ -42,7 +47,7 @@ func (this *ParkourComp) Init(service core.IService, module core.IModule, comp c this.service = service.(base.IRPCXService) this.module = module.(*Timer) this.timerlock = 1 - this.teams = make(map[string][]*pb.DBRaceMember) + this.teams = make(map[string]*ParkourTeam) return } @@ -112,7 +117,10 @@ func (this *ParkourComp) refreshlist() { // 加入匹配中 func (this *ParkourComp) join(ctx context.Context, req *pb.RPCParkourJoinMatchReq, resp *pb.RPCParkourJoinMatchResp) (err error) { this.tlock.Lock() - this.teams[req.Captainid] = req.Member + this.teams[req.Captainid] = &ParkourTeam{ + member: req.Member, + ais: req.Ais, + } this.total += int32(len(req.Member)) this.tlock.Unlock() if this.total >= 6 && atomic.LoadInt32(&this.timerlock) == 1 { @@ -152,23 +160,25 @@ func (this *ParkourComp) match() { ok bool err error users []*pb.DBRaceMember - teams1 []string = make([]string, 0) - teams2 []string = make([]string, 0) - teams3 []string = make([]string, 0) - left int32 = this.total - red []string = make([]string, 0) - rednum int = 0 - reduser []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0) - bule []string = make([]string, 0) - bulenum int = 0 - buleuser []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0) - order bool = false + teams1 []string = make([]string, 0) + teams2 []string = make([]string, 0) + teams3 []string = make([]string, 0) + left int32 = this.total + red []string = make([]string, 0) + rednum int = 0 + reduser []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0) + bule []string = make([]string, 0) + bulenum int = 0 + buleuser []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0) + aismap map[string]*pb.DBRaceMember = make(map[string]*pb.DBRaceMember) + ais []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0) + order bool = false ) this.tlock.Lock() for k, v := range this.teams { - if len(v) == 1 { + if len(v.member) == 1 { teams1 = append(teams1, k) - } else if len(v) == 2 { + } else if len(v.member) == 2 { teams2 = append(teams2, k) } else { teams3 = append(teams3, k) @@ -181,7 +191,7 @@ func (this *ParkourComp) match() { for _, v1 := range this.users { ok = false for _, v := range this.teams { - for _, v2 := range v { + for _, v2 := range v.member { if v1.Uid == v2.Uid { ok = true } @@ -193,9 +203,9 @@ func (this *ParkourComp) match() { } this.ulock.RUnlock() - if len(users)+int(this.total) < 6 { //人员不足 - return - } + // if len(users)+int(this.total) < 6 { //人员不足 + // return + // } var fn = func() { if order { @@ -283,50 +293,45 @@ func (this *ParkourComp) match() { } this.tlock.RLock() for _, v := range red { - reduser = append(reduser, this.teams[v]...) + reduser = append(reduser, this.teams[v].member...) + for _, ai := range this.teams[v].ais { + aismap[ai.Name] = ai + } } for _, v := range bule { - buleuser = append(buleuser, this.teams[v]...) + buleuser = append(buleuser, this.teams[v].member...) + for _, ai := range this.teams[v].ais { + aismap[ai.Name] = ai + } + } + for _, v := range aismap { + ais = append(ais, v) } this.tlock.RUnlock() if len(users)+rednum+bulenum < 6 { return } - + n := len(reduser) //补充人员 if len(reduser) < 3 { - n := len(reduser) - reduser = append(reduser, users[0:(3-len(reduser))]...) - users = users[(3 - n):] - for _, v := range reduser[rednum:3] { - if v.Name == "" { //同步用户数据 - if user, err := this.getuser(v.Uid); err != nil { - this.module.Errorln(err) - return - } else { - v.Name = user.Name - v.Sex = user.Gender - v.Lv = user.Lv - } - } + if len(users) > 3-n { + reduser = append(reduser, users[0:(3-n)]...) + users = users[(3 - n):] + } else { + reduser = append(reduser, ais[0:(3-n)]...) + ais = ais[(3 - n):] } + } + n = len(buleuser) if len(buleuser) < 3 { - n := len(buleuser) - buleuser = append(buleuser, users[0:(3-len(buleuser))]...) - users = users[(3 - n):] - for _, v := range buleuser[bulenum:3] { - if v.Name == "" { //同步用户数据 - if user, err := this.getuser(v.Uid); err != nil { - this.module.Errorln(err) - return - } else { - v.Name = user.Name - v.Sex = user.Gender - v.Lv = user.Lv - } - } + if len(users) > 3-n { + buleuser = append(buleuser, users[0:(3-n)]...) + users = users[(3 - n):] + } else { + buleuser = append(buleuser, ais[0:(3-n)]...) + ais = ais[(3 - n):] } }