167 lines
4.0 KiB
Go
167 lines
4.0 KiB
Go
package gameServerMgr
|
||
|
||
import (
|
||
"fmt"
|
||
|
||
. "Framework/managecenterModel"
|
||
)
|
||
|
||
var (
|
||
mServerMap = make(map[int32][]*Server, 0)
|
||
)
|
||
|
||
//合作商、服务器组合列表
|
||
type PartnerServer struct {
|
||
//合作商Id
|
||
mPartnerId int32
|
||
|
||
//服务器Id
|
||
mServerId int32
|
||
}
|
||
|
||
//解析服务器信息
|
||
func ParseServerInfo(serverList []*Server) {
|
||
tempServerMap := make(map[int32][]*Server, 0)
|
||
for _, server := range serverList {
|
||
_, exist := tempServerMap[server.PartnerId]
|
||
if !exist {
|
||
tempServerMap[server.PartnerId] = make([]*Server, 0)
|
||
}
|
||
tempServerMap[server.PartnerId] = append(tempServerMap[server.PartnerId], server)
|
||
}
|
||
mServerMap = tempServerMap
|
||
}
|
||
|
||
//获取服务器对象
|
||
func GetServerItem(partnerId, serverId int32) (server *Server, exist bool) {
|
||
serverList, existServer := mServerMap[partnerId]
|
||
if !existServer {
|
||
return
|
||
}
|
||
for _, serverItem := range serverList {
|
||
if serverItem.Id == serverId {
|
||
server = serverItem
|
||
exist = true
|
||
break
|
||
}
|
||
}
|
||
return
|
||
}
|
||
|
||
//判断服务器是否存在
|
||
func IfServerExists(partnerId, serverId int32) (exists bool) {
|
||
_, exists = GetPartnerItem(partnerId)
|
||
if !exists {
|
||
return
|
||
}
|
||
_, exists = GetServerItem(partnerId, serverId)
|
||
if !exists {
|
||
return
|
||
}
|
||
|
||
return
|
||
}
|
||
|
||
//获取服务器名称
|
||
func GetServerName(partnerId, serverId int32) (serverName string) {
|
||
_, existPartner := GetPartnerItem(partnerId)
|
||
if !existPartner {
|
||
return
|
||
}
|
||
server, existServer := GetServerItem(partnerId, serverId)
|
||
if !existServer {
|
||
return
|
||
}
|
||
serverName = server.Name
|
||
|
||
return
|
||
}
|
||
|
||
//检测是否有游戏版本更新
|
||
func CheckNewGameVersion(partnerId, serverId, gameVersionId int32) (gameVersionUrl string, exist bool) {
|
||
server, existServer := GetServerItem(partnerId, serverId)
|
||
if !existServer {
|
||
exist = existServer
|
||
return
|
||
}
|
||
|
||
if gameVersionId < server.MinGameVersionId {
|
||
partner, existPartner := GetPartnerItem(partnerId)
|
||
if !existPartner {
|
||
exist = existPartner
|
||
return
|
||
}
|
||
exist = true
|
||
gameVersionUrl = partner.GameVersionUrl
|
||
}
|
||
|
||
return
|
||
}
|
||
|
||
//获取合作商、服务器的组合字符串
|
||
//字符串格式:PartnerId_ServerId|PartnerId_ServerId|
|
||
func GetPartnerServerPairString() (partnerServerPair string) {
|
||
for _, ps := range GetPartnerServerPairList() {
|
||
partnerServerPair += fmt.Sprintf("%d_%d|", ps.mPartnerId, ps.mServerId)
|
||
}
|
||
return
|
||
}
|
||
|
||
//获取合作商、服务器的组合列表
|
||
func GetPartnerServerPairList() (partnerServerList []*PartnerServer) {
|
||
for key := range mServerMap {
|
||
for _, server := range mServerMap[key] {
|
||
if server.GroupId == GetServerGroup().Id {
|
||
var ps *PartnerServer = &PartnerServer{server.PartnerId, server.Id}
|
||
partnerServerList = append(partnerServerList, ps)
|
||
}
|
||
}
|
||
}
|
||
|
||
return
|
||
}
|
||
|
||
// // 获取合作商、服务器的组合字符串
|
||
// // serverGroupId:服务器组Id
|
||
// // 返回值
|
||
// // 合作商、服务器的组合字符串
|
||
// func (this *ManageCenterUtil) GetPartnerServerPairString(serverGroupId int32) string {
|
||
// var buf bytes.Buffer
|
||
|
||
// serverList := managecenterMgr.GetServerList(serverGroupId)
|
||
// for _, item := range serverList {
|
||
// buf.WriteString(fmt.Sprintf("%d_%d|", item.PartnerId, item.Id))
|
||
// }
|
||
|
||
// return buf.String()
|
||
// }
|
||
|
||
// // 是否是有效的合作商、服务器组合
|
||
// // partnerId:合作商Id
|
||
// // serverId:服务器Id
|
||
// // parnterServerPairString:合作商、服务器的组合字符串,格式为:PartnerId_ServerId|PartnerId_ServerId|
|
||
// // 返回值
|
||
// // 是否有效
|
||
// func (this *ManageCenterUtil) IfValidPartnerServerPair(partnerId, serverId int32, parnterServerPairString string) bool {
|
||
// if parnterServerPairString == "" {
|
||
// return false
|
||
// }
|
||
|
||
// partnerServerPairStringList := strings.Split(parnterServerPairString, "|")
|
||
// if len(partnerServerPairStringList) == 0 {
|
||
// return false
|
||
// }
|
||
|
||
// // 获得玩家的合作商、服务器组合字符串
|
||
// partnerServerPair := fmt.Sprintf("%d_%d", partnerId, serverId)
|
||
|
||
// // 遍历寻找
|
||
// for _, item := range partnerServerPairStringList {
|
||
// if item == partnerServerPair {
|
||
// return true
|
||
// }
|
||
// }
|
||
|
||
// return false
|
||
// }
|