52 lines
961 B
Go
52 lines
961 B
Go
package baseroom
|
|
|
|
import (
|
|
"game/common/proto/pb"
|
|
)
|
|
|
|
type PlayerMgr struct {
|
|
players map[int64]IPlayer
|
|
createPlayer ICreatePlayer
|
|
}
|
|
|
|
func NewPlayerMgr(create ICreatePlayer) *PlayerMgr {
|
|
return &PlayerMgr{
|
|
players: make(map[int64]IPlayer),
|
|
createPlayer: create,
|
|
}
|
|
}
|
|
|
|
func (s *PlayerMgr) Count() int {
|
|
return len(s.players)
|
|
}
|
|
|
|
func (s *PlayerMgr) Init() {
|
|
}
|
|
|
|
func (s *PlayerMgr) Add(player IPlayer) {
|
|
s.players[player.Id()] = player
|
|
}
|
|
|
|
func (s *PlayerMgr) Del(uid int64) {
|
|
delete(s.players, uid)
|
|
}
|
|
|
|
func (s *PlayerMgr) Find(uid int64) IPlayer {
|
|
return s.players[uid]
|
|
}
|
|
|
|
func (s *PlayerMgr) Filter(predicate func(player IPlayer) bool) []IPlayer {
|
|
players := make([]IPlayer, 0)
|
|
for _, player := range s.players {
|
|
if predicate(player) {
|
|
players = append(players, player)
|
|
}
|
|
}
|
|
return players
|
|
}
|
|
|
|
func (s *PlayerMgr) CreatePlayer(uid int64) (player IPlayer, code pb.ErrCode) {
|
|
player, code = s.createPlayer.CreatePlayer(uid)
|
|
return
|
|
}
|