//@File     global.go
//@Time     2022/05/12
//@Author   #Suyghur,

package ext

import (
	"github.com/liyue201/gostl/ds/list/simplelist"
	"github.com/liyue201/gostl/ds/map"
	"ylink/comm/model"
)

var (
	// GameVipMap vip玩家信息(GameId,*PlayerInfoMap)
	GameVipMap *treemap.Map
	// CsInfoMap 客服信息(CsId,*CsInfo)
	CsInfoMap *treemap.Map
	// GameOnlinePlayerMap 在线玩家信息
	GameOnlinePlayerMap *treemap.Map
	// GameConnectedMap 已连接客服玩家
	GameConnectedMap *treemap.Map
	// WaitingList 玩家等待队列
	WaitingList *simplelist.List
)

func GetVipPlayer(gameId, playerId string) *model.PlayerInfo {
	if GameVipMap.Contains(gameId) {
		playerInfoMap := GameVipMap.Get(gameId).(*treemap.Map)
		if playerInfoMap.Contains(playerId) {
			return playerInfoMap.Get(playerId).(*model.PlayerInfo)
		}
	}
	return nil
}

func GetCsInfo(csId string) *model.CsInfo {
	if CsInfoMap.Contains(csId) {
		return CsInfoMap.Get(csId).(*model.CsInfo)
	}
	return nil
}

func GetConnectedPlayerInfo(gameId, playerId string) *model.PlayerInfo {
	if GameConnectedMap.Contains(gameId) {
		connectedMap := GameConnectedMap.Get(gameId).(*treemap.Map)
		if connectedMap.Contains(playerId) {
			return connectedMap.Get(playerId).(*model.PlayerInfo)
		}
	}
	return nil
}

func RemoveConnectedPlayerInfo(gameId, playerId string) {
	if GameConnectedMap.Contains(gameId) {
		connectedMap := GameConnectedMap.Get(gameId).(*treemap.Map)
		if connectedMap.Contains(playerId) {
			connectedMap.Erase(playerId)
		}
	}
}

func GetOnlinePlayerInfo(gameId, playerId string) *model.PlayerInfo {
	if GameOnlinePlayerMap.Contains(gameId) {
		onlinePlayerMap := GameOnlinePlayerMap.Get(gameId).(*treemap.Map)
		if onlinePlayerMap.Contains(playerId) {
			return onlinePlayerMap.Get(playerId).(*model.PlayerInfo)
		}
	}
	return nil
}