fix: 修复 room 包在使用 AddSeat 函数时无法加入空缺位置的问题

This commit is contained in:
kercylan98 2023-10-12 19:13:42 +08:00
parent 14f542e513
commit 295aaeb4c0
3 changed files with 57 additions and 0 deletions

View File

@ -73,6 +73,7 @@ func (slf *Seat[PlayerID, P, R]) RemoveSeat(id PlayerID) {
slf.mutex.Lock()
defer slf.mutex.Unlock()
seat := slf.seatPS.DeleteGet(id)
slf.vacancy = append(slf.vacancy, seat)
slf.seatSP[seat] = nil
}
@ -116,6 +117,7 @@ func (slf *Seat[PlayerID, P, R]) SetSeat(id PlayerID, seat int) int {
}
slf.seatSP[seat] = slf.seatSP[oldSeat]
slf.seatSP[oldSeat] = nil
slf.vacancy = append(slf.vacancy, oldSeat)
slf.seatPS.Set(id, seat)
}
slf.event.OnPlayerSeatChangeEvent(slf.room, slf.manager.GetPlayer(id), oldSeat, seat)

54
game/room/seat_test.go Normal file
View File

@ -0,0 +1,54 @@
package room_test
import (
"fmt"
"github.com/kercylan98/minotaur/game/room"
"github.com/kercylan98/minotaur/server"
"testing"
)
type Player struct {
}
func (slf *Player) GetID() string {
return ""
}
func (slf *Player) GetConn() *server.Conn {
return nil
}
func (slf *Player) UseConn(conn *server.Conn) {
}
func (slf *Player) Close(err ...error) {
}
type Room struct {
}
func (slf *Room) GetGuid() int64 {
return 0
}
func TestSeat_SetSeat(t *testing.T) {
rm := room.NewManager[string, *Player, *Room]()
r := &Room{}
rm.CreateRoom(r)
helper := rm.GetHelper(r)
helper.AddSeat("a")
helper.AddSeat("b")
helper.RemoveSeat("a")
helper.AddSeat("c")
for i, s := range helper.GetSeatInfo() {
if s == nil {
fmt.Println(i, "nil")
} else {
fmt.Println(i, *s)
}
}
}

1
go.sum
View File

@ -274,6 +274,7 @@ golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=