支持获取下一个座位号
This commit is contained in:
parent
c8d701bea5
commit
0741d19b7f
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue