game_sync/worldsrv/coinscenepool_interface.go

51 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"mongo.games.com/game/protocol/gamehall"
)
var coinScenePools = map[int32]ICoinScenePool{}
// RegisterCoinScenePool 注册房间池规则
func RegisterCoinScenePool(gameId int32, policy ICoinScenePool) {
coinScenePools[gameId] = policy
}
func GetCoinScenePool(gameId int32) ICoinScenePool {
return coinScenePools[gameId]
}
// ICoinScenePool 定义房间池规则的接口
// 公共处理逻辑可以写在 CoinScenePool不能满足需求时再实现 ICoinScenePool
type ICoinScenePool interface {
// New 创建房间池
New() interface{}
// CanEnter 玩家是否可以进入
CanEnter(pool *CoinScenePool, p *Player) gamehall.OpResultCode
// CanAudienceEnter 观众是否可以进入
CanAudienceEnter(pool *CoinScenePool, p *Player) gamehall.OpResultCode
// PlayerEnter 玩家进入(匹配房间)
// exclude 排除的房间列表
// isChangeRoom 是否是换房间
PlayerEnter(pool *CoinScenePool, p *Player, exclude []int32, isChangeRoom bool) (ret gamehall.OpResultCode, scene *Scene)
// AudienceEnter 观众进入(匹配房间)
AudienceEnter(pool *CoinScenePool, p *Player, exclude []int32, isChangeRoom bool) (ret gamehall.OpResultCode, scene *Scene)
// OnPlayerEnter 玩家进入房间之后
OnPlayerEnter(pool *CoinScenePool, p *Player, scene *Scene)
// PlayerLeave 玩家离开
PlayerLeave(pool *CoinScenePool, p *Player, reason int) bool
// AudienceLeave 观众离开
AudienceLeave(pool *CoinScenePool, p *Player, reason int) bool
// OnPlayerLeave 玩家离开房间之后
OnPlayerLeave(pool *CoinScenePool, s *Scene, p *Player)
// NewScene 创建房间
NewScene(pool *CoinScenePool, p *Player) *Scene
// NewPreCreateScene 创建预创建房间
NewPreCreateScene(pool *CoinScenePool) *Scene
// OnDestroyScene 房间解散之后
OnDestroyScene(pool *CoinScenePool, sceneId int)
}