fix: 修复 room 包在使用 AddSeat 函数时无法加入空缺位置的问题
This commit is contained in:
parent
14f542e513
commit
295aaeb4c0
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
1
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=
|
||||
|
|
|
|||
Loading…
Reference in New Issue