1
This commit is contained in:
parent
114ab01a4a
commit
eaf14d6b2d
@ -27,6 +27,7 @@ const (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
MAX_PACKET_LEN = 1024 * 64
|
MAX_PACKET_LEN = 1024 * 64
|
||||||
|
MAX_GUILD_TOP = 50
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -21,6 +21,7 @@ type guild struct {
|
|||||||
maxMemberNum int32
|
maxMemberNum int32
|
||||||
createTime int32
|
createTime int32
|
||||||
modifyTime int32
|
modifyTime int32
|
||||||
|
totalStars int32
|
||||||
idHash map[string]*member
|
idHash map[string]*member
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,16 +9,11 @@ import (
|
|||||||
"mt"
|
"mt"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
LoadGuildFlag = iota
|
|
||||||
LoadGuildMemberFlag
|
|
||||||
LoadGuildReqFlag
|
|
||||||
LoadGuildLogFlag
|
|
||||||
)
|
|
||||||
|
|
||||||
type guildMgr struct {
|
type guildMgr struct {
|
||||||
idHash map[string]*guild
|
idHash map[string]*guild
|
||||||
nameHash map[string]*guild
|
nameHash map[string]*guild
|
||||||
|
guildRankList []*guild
|
||||||
|
guildRankHash map[string]*guild
|
||||||
memberIdHash map[string]*member
|
memberIdHash map[string]*member
|
||||||
usingNameHash map[string]int64
|
usingNameHash map[string]int64
|
||||||
}
|
}
|
||||||
@ -26,6 +21,8 @@ type guildMgr struct {
|
|||||||
func (this *guildMgr) Init() {
|
func (this *guildMgr) Init() {
|
||||||
this.idHash = make(map[string]*guild)
|
this.idHash = make(map[string]*guild)
|
||||||
this.nameHash = make(map[string]*guild)
|
this.nameHash = make(map[string]*guild)
|
||||||
|
this.guildRankList = []*guild{}
|
||||||
|
this.guildRankHash = make(map[string]*guild)
|
||||||
this.memberIdHash = make(map[string]*member)
|
this.memberIdHash = make(map[string]*member)
|
||||||
this.usingNameHash = make(map[string]int64)
|
this.usingNameHash = make(map[string]int64)
|
||||||
this.loadFromDB()
|
this.loadFromDB()
|
||||||
@ -834,10 +831,51 @@ func (this *guildMgr) asyncSetApplyStatus(accountId string, guildId string, stat
|
|||||||
cb)
|
cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *guildMgr) AsyncGetGuildRank(int32, func(int32, string, []string)) {
|
func (this *guildMgr) AsyncGetGuildRank(num int32, cb func(int32, string, []string)) {
|
||||||
|
guildIds := []string{}
|
||||||
|
this.rearrangement()
|
||||||
|
cb(0, "", guildIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *guildMgr) AsyncGetRecommendGuild(int32, func(int32, string, []string)) {
|
func (this *guildMgr) AsyncGetRecommendGuild(int32, func(int32, string, []string)) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *guildMgr) rearrangement() {
|
||||||
|
this.guildRankList = []*guild{}
|
||||||
|
this.guildRankHash = make(map[string]*guild)
|
||||||
|
this.traverseGuild(
|
||||||
|
func (g *guild) bool {
|
||||||
|
this.updateGuildRank(g)
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this* guildMgr) updateGuildRank(guild *guild) {
|
||||||
|
if _, ok := this.guildRankHash[guild.guildId]; ok {
|
||||||
|
this.rankSort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(this.guildRankList) < constant.MAX_GUILD_TOP {
|
||||||
|
q5.AppendSlice(&this.guildRankList, guild)
|
||||||
|
this.guildRankHash[guild.guildId] = guild
|
||||||
|
this.rankSort()
|
||||||
|
} else if guild.totalStars > this.guildRankList[len(this.guildRankList) - 1].totalStars {
|
||||||
|
lastGuild := this.guildRankList[len(this.guildRankList) - 1]
|
||||||
|
delete(this.guildRankHash, lastGuild.guildId)
|
||||||
|
this.guildRankList[len(this.guildRankList) - 1] = guild
|
||||||
|
this.rankSort()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this* guildMgr) rankSort() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this* guildMgr) traverseGuild(cb func(*guild) bool) {
|
||||||
|
for _, g := range(this.idHash) {
|
||||||
|
if !cb(g) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user