Browse Source

fix lock choose chair

tl 1 year ago
parent
commit
e8d72d8f14
2 changed files with 9 additions and 9 deletions
  1. 7 7
      game/qznn/qznn.go
  2. 2 2
      handler/room/room.go

+ 7 - 7
game/qznn/qznn.go

@@ -417,6 +417,7 @@ func (p *Game) Leave(playerID int32) error {
 
 func (p *Game) ChooseRndChair(playerID int32) error {
 	p.locker.Lock()
+	defer p.locker.Unlock()
 
 	p.EventInfo(playerID, "随机选桌子", "开始")
 
@@ -458,20 +459,19 @@ func (p *Game) ChooseRndChair(playerID int32) error {
 	if maxRoomID != -1 && maxChairID != -1 {
 		p.EventInfo(playerID, "随机选桌子", fmt.Sprintf("找到桌子:%d-%d", maxRoomID, maxChairID))
 
-		p.locker.Unlock()
-		return p.ChooseChair(playerID, int32(maxRoomID), int32(maxChairID), "")
+		return p.ChooseChair(playerID, int32(maxRoomID), int32(maxChairID), "", false)
 	}
 
 	p.EventInfo(playerID, "随机选桌子", "没有找到桌子")
 
-	p.locker.Unlock()
-
 	return ErrNotFound
 }
 
-func (p *Game) ChooseChair(playerID int32, roomID int32, chairID int32, passwd string) error {
-	p.locker.Lock()
-	defer p.locker.Unlock()
+func (p *Game) ChooseChair(playerID int32, roomID int32, chairID int32, passwd string, userLock bool) error {
+	if userLock {
+		p.locker.Lock()
+		defer p.locker.Unlock()
+	}
 
 	p.EventInfo(playerID, "选桌子", "开始")
 

+ 2 - 2
handler/room/room.go

@@ -41,7 +41,7 @@ func Join(req api.PerformReq) error {
 	gameInstance.Join(int32(userModel.ID))
 
 	err = gameInstance.ChooseChair(int32(userModel.ID), int32(joinRoomReq.RoomID),
-		int32(joinRoomReq.ChairID), joinRoomReq.Passwd)
+		int32(joinRoomReq.ChairID), joinRoomReq.Passwd, true)
 	if err != nil {
 		logrus.Error(err)
 
@@ -75,7 +75,7 @@ func Leave(req api.PerformReq) error {
 	userModel := req.UserModel
 
 	gameInstance := gameQZ.GetInstance()
-	err := gameInstance.ChooseChair(int32(userModel.ID), 0, 0, "")
+	err := gameInstance.ChooseChair(int32(userModel.ID), 0, 0, "", true)
 	if err != nil {
 		logrus.Error(err)