等待插卡逻辑完成

This commit is contained in:
2024-11-22 14:48:05 +08:00
parent 2886009d4d
commit 4df77f15d9
4 changed files with 53 additions and 3 deletions

View File

@@ -22,6 +22,9 @@ func switchPoint(ctx context.Context, point int) leaf.HandlerFunc {
case 4:
// 4号点位(发卡机)
return play.PushCard(ctx)
case 5:
// 5号点位(等待插卡)
return play.WaitCard
default:
return play.Default
}

View File

@@ -26,7 +26,7 @@ func PushCard(ctx context.Context) leaf.HandlerFunc {
devices := make([]*card_device.Device, 0)
for _, group := range config.C.Game.CardGroups {
gv, _ := json.Marshal(group)
zap.S().Info("发卡指针初始化:", string(gv))
zap.S().Info("发卡指针:", string(gv))
device, err := card_device.New(group)
if err != nil {

View File

@@ -0,0 +1,43 @@
package play
import (
"game-driver/internal/middleware"
"game-driver/internal/schema"
"game-driver/leaf"
"sync"
"time"
)
func WaitCard(c *leaf.Context) {
payload := leaf.Value[*schema.PlayModal](c, middleware.PayloadJSONKey)
var waitCard time.Duration
if a, ok := payload.Game["wait_card"]; ok {
if v, ok := a.(float64); ok {
waitCard = time.Duration(v)
}
}
// 等待组
var wait sync.WaitGroup
defer wait.Wait()
a := make(chan string)
defer close(a)
wait.Add(1)
go func() {
defer wait.Done()
time.Sleep(3 * time.Second)
a <- "卡片数据"
}()
select {
case <-c.Done():
case <-time.After(waitCard * time.Second):
case _, ok := <-a: // 等待卡片插入
if ok { // 非关闭信号
Default(c)
}
}
}