支持获取下一个座位号

This commit is contained in:
kercylan98 2023-05-12 11:07:41 +08:00
parent c8d701bea5
commit 0741d19b7f
2 changed files with 40 additions and 0 deletions

View File

@ -172,6 +172,38 @@ func (slf *RoomSeat[PlayerID, Player]) GetSeatInfoWithPlayerIDMap() map[PlayerID
return slf.seatPS.Map()
}
func (slf *RoomSeat[PlayerID, Player]) GetNextSeat(seat int) int {
l := len(slf.seatSP)
if l == 0 || seat >= l || seat < 0 {
return -1
}
var target = seat
for {
target++
if target >= l {
target = 0
}
if target == seat {
return seat
}
if slf.seatSP[target] != nil {
return target
}
}
}
func (slf *RoomSeat[PlayerID, Player]) GetNextSeatVacancy(seat int) int {
l := len(slf.seatSP)
if l == 0 || seat >= l || seat < 0 {
return -1
}
seat++
if seat >= l {
seat = 0
}
return seat
}
func (slf *RoomSeat[PlayerID, Player]) onJoinRoom(room game.Room[PlayerID, Player], player Player) {
slf.AddSeat(player.GetID())
}

View File

@ -26,4 +26,12 @@ type RoomSeat[PlayerID comparable, P Player[PlayerID]] interface {
GetSeatInfoMapVacancy() map[int]*PlayerID
// GetSeatInfoWithPlayerIDMap 获取座位信息将以玩家ID作为key
GetSeatInfoWithPlayerIDMap() map[PlayerID]int
// GetNextSeat 获取下一个座位号,空缺的位置将会被跳过
// - 超出范围将返回-1
// - 当没有下一个座位号时将始终返回本身
GetNextSeat(seat int) int
// GetNextSeatVacancy 获取下一个座位号,空缺的位置将被保留
// - 超出范围将返回-1
// - 当没有下一个座位号时将始终返回本身
GetNextSeatVacancy(seat int) int
}