|
@@ -870,6 +870,9 @@ func (p *Game) Ready(playerID int32) error {
|
|
|
if allReady {
|
|
|
p.EventInfo(playerID, "准备", "全部准备好,发送通知")
|
|
|
go func() {
|
|
|
+ defer func() {
|
|
|
+ recover()
|
|
|
+ }()
|
|
|
roomItem.ReadyCh <- true
|
|
|
}()
|
|
|
}
|
|
@@ -908,32 +911,14 @@ func (p *Game) Ready(playerID int32) error {
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
- allReady := true
|
|
|
p.locker.Lock()
|
|
|
{
|
|
|
- roomItem := p.RoomMap[roomItem.ID]
|
|
|
- for _, chairItem := range roomItem.ChairList {
|
|
|
- if chairItem.PlayerID == 0 {
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- chairPlayer := p.PlayerMap[chairItem.PlayerID]
|
|
|
- if chairPlayer.Status != PlayerStatusReady {
|
|
|
- allReady = false
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if !allReady {
|
|
|
p.EventInfo(playerID, "准备", fmt.Sprintf("等待房间准备:%d", roomItem.ID))
|
|
|
- p.locker.Unlock()
|
|
|
|
|
|
- p.WaitReady(roomItem)
|
|
|
- } else {
|
|
|
- p.EventInfo(playerID, "准备", "全部都是等待状态,无需等待,马上开始")
|
|
|
- p.locker.Unlock()
|
|
|
}
|
|
|
+ p.locker.Unlock()
|
|
|
+
|
|
|
+ p.WaitReady(roomItem)
|
|
|
|
|
|
func() {
|
|
|
//TODO: 优化并发
|
|
@@ -1119,6 +1104,9 @@ func (p *Game) ChooseMaster(playerID int32, mul int32) error {
|
|
|
//全部选完,就进入下一阶段
|
|
|
if allChoose {
|
|
|
go func() {
|
|
|
+ defer func() {
|
|
|
+ recover()
|
|
|
+ }()
|
|
|
roomItem.ChooseMasterCh <- true
|
|
|
}()
|
|
|
}
|
|
@@ -1192,6 +1180,9 @@ func (p *Game) ChooseMul(playerID int32, mul int32) error {
|
|
|
//全部选完,就进入下一阶段
|
|
|
if allChoose {
|
|
|
go func() {
|
|
|
+ defer func() {
|
|
|
+ recover()
|
|
|
+ }()
|
|
|
roomItem.ChooseMulCh <- true
|
|
|
}()
|
|
|
}
|
|
@@ -1249,6 +1240,9 @@ func (p *Game) OpenCard(playerID int32) error {
|
|
|
//全部选完,就进入下一阶段
|
|
|
if allOpen {
|
|
|
go func() {
|
|
|
+ defer func() {
|
|
|
+ recover()
|
|
|
+ }()
|
|
|
roomItem.OpenCh <- true
|
|
|
}()
|
|
|
}
|