diff --git a/game/builtin/room.go b/game/builtin/room.go index efe24c0..1327252 100644 --- a/game/builtin/room.go +++ b/game/builtin/room.go @@ -57,6 +57,13 @@ func (slf *Room[PlayerID, Player]) IsOwner(id PlayerID) bool { return !slf.noMaster && slf.owner == id } +func (slf *Room[PlayerID, Player]) ChangeOwner(id PlayerID) { + if slf.noMaster || slf.owner == id { + return + } + slf.owner = id +} + func (slf *Room[PlayerID, Player]) Join(player Player) error { if slf.players.Size() >= slf.playerLimit && slf.playerLimit > 0 { return ErrWorldPlayerLimit diff --git a/game/room.go b/game/room.go index 61cf54c..e62be66 100644 --- a/game/room.go +++ b/game/room.go @@ -18,6 +18,8 @@ type Room[PlayerID comparable, P Player[PlayerID]] interface { IsExistPlayer(id PlayerID) bool // IsOwner 检查玩家是否是房主 IsOwner(id PlayerID) bool + // ChangeOwner 设置玩家为房主 + ChangeOwner(id PlayerID) // Join 使特定玩家加入房间 Join(player P) error