diff --git a/game/room/seat.go b/game/room/seat.go index 5878991..8c722c1 100644 --- a/game/room/seat.go +++ b/game/room/seat.go @@ -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) diff --git a/game/room/seat_test.go b/game/room/seat_test.go new file mode 100644 index 0000000..d479341 --- /dev/null +++ b/game/room/seat_test.go @@ -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) + } + } +} diff --git a/go.sum b/go.sum index 3664cde..830e467 100644 --- a/go.sum +++ b/go.sum @@ -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=