修改房间推荐算法每次推荐不同房间
This commit is contained in:
parent
0176f59e76
commit
8444db2e85
|
@ -26,6 +26,7 @@ var SceneMgrSingleton = &SceneMgr{
|
||||||
coinSceneAutoId: common.CoinSceneStartId,
|
coinSceneAutoId: common.CoinSceneStartId,
|
||||||
hundredSceneAutoId: common.HundredSceneStartId,
|
hundredSceneAutoId: common.HundredSceneStartId,
|
||||||
password: make(map[string]struct{}),
|
password: make(map[string]struct{}),
|
||||||
|
pushList: make(map[int]struct{}),
|
||||||
}
|
}
|
||||||
|
|
||||||
// SceneMgr 房间管理器
|
// SceneMgr 房间管理器
|
||||||
|
@ -38,6 +39,8 @@ type SceneMgr struct {
|
||||||
coinSceneAutoId int // 金币场房间号
|
coinSceneAutoId int // 金币场房间号
|
||||||
hundredSceneAutoId int // 百人场房间号
|
hundredSceneAutoId int // 百人场房间号
|
||||||
password map[string]struct{} // 密码
|
password map[string]struct{} // 密码
|
||||||
|
pushList map[int]struct{} // 已经推荐过的房间列表
|
||||||
|
lastPushSceneId int // 最后推荐的房间id
|
||||||
}
|
}
|
||||||
|
|
||||||
// AllocReplayCode 获取回访码
|
// AllocReplayCode 获取回访码
|
||||||
|
@ -422,7 +425,49 @@ func (m *SceneMgr) FindCustomInviteRoom(p *Player) *Scene {
|
||||||
return ret[i].createTime.Unix() < ret[j].createTime.Unix()
|
return ret[i].createTime.Unix() < ret[j].createTime.Unix()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 删除没有的房间
|
||||||
|
var list []*Scene
|
||||||
|
var pushList = map[int]struct{}{}
|
||||||
|
for k := range m.pushList {
|
||||||
|
var has bool
|
||||||
|
for _, v := range ret {
|
||||||
|
if v.sceneId == k {
|
||||||
|
has = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if has {
|
||||||
|
pushList[k] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.pushList = pushList
|
||||||
|
|
||||||
|
// 删除推荐过的房间
|
||||||
|
for _, v := range ret {
|
||||||
|
if _, ok := m.pushList[v.sceneId]; !ok {
|
||||||
|
list = append(list, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(list) > 0 {
|
||||||
|
m.pushList[list[0].sceneId] = struct{}{}
|
||||||
|
return list[0]
|
||||||
|
}
|
||||||
|
|
||||||
if len(ret) > 0 {
|
if len(ret) > 0 {
|
||||||
|
// 全都推荐过了,循环推荐房间
|
||||||
|
var b bool
|
||||||
|
for _, v := range ret {
|
||||||
|
if b {
|
||||||
|
m.lastPushSceneId = v.sceneId
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
if v.sceneId == m.lastPushSceneId {
|
||||||
|
b = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 没找到,从头开始
|
||||||
|
m.lastPushSceneId = ret[0].sceneId
|
||||||
return ret[0]
|
return ret[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue