game/common/baseroom/playerMgr.go

52 lines
961 B
Go
Raw Permalink Normal View History

2025-06-07 01:58:14 +08:00
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
}