36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
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]
|
|
}
|
|
|
|
type ICoinScenePool interface {
|
|
New() interface{}
|
|
CanEnter(pool *CoinScenePool, p *Player) gamehall.OpResultCode
|
|
CanAudienceEnter(pool *CoinScenePool, p *Player) gamehall.OpResultCode
|
|
|
|
PlayerEnter(pool *CoinScenePool, p *Player, exclude []int32, ischangeroom bool) (ret gamehall.OpResultCode, scene *Scene)
|
|
AudienceEnter(pool *CoinScenePool, p *Player, exclude []int32, ischangeroom bool) (ret gamehall.OpResultCode, scene *Scene)
|
|
OnPlayerEnter(pool *CoinScenePool, p *Player, scene *Scene)
|
|
|
|
PlayerLeave(pool *CoinScenePool, p *Player, reason int) bool
|
|
AudienceLeave(pool *CoinScenePool, p *Player, reason int) bool
|
|
OnPlayerLeave(pool *CoinScenePool, s *Scene, p *Player)
|
|
|
|
NewScene(pool *CoinScenePool, p *Player) *Scene
|
|
NewPreCreateScene(pool *CoinScenePool) *Scene
|
|
|
|
OnDestroyScene(pool *CoinScenePool, sceneId int)
|
|
}
|