package main import ( "context" "log/slog" "hakemsho/internal/economy" ) // gameSettler اینترفیس ws.Settler را با سرویس اقتصاد پیاده می‌کند. // tier را به ورودی/جایزه/XP/جام نگاشت کرده و تراکنش سکه را انجام می‌دهد. type gameSettler struct { eco *economy.Service } func (g gameSettler) ChargeEntry(userID int64, tier string) error { t := g.eco.FindTier(tier) if t == nil { return nil // tier ناشناخته ⇒ بدون ورودی } return g.eco.ChargeEntry(context.Background(), userID, t.Entry, "tier:"+tier) } func (g gameSettler) Refund(userID int64, tier string) { t := g.eco.FindTier(tier) if t == nil { return } if err := g.eco.Refund(context.Background(), userID, t.Entry, "tier:"+tier); err != nil { slog.Error("refund", "user", userID, "err", err) } } func (g gameSettler) AwardWinner(userID int64, tier string) { t := g.eco.FindTier(tier) if t == nil { return } if err := g.eco.AwardWinner(context.Background(), userID, t.Prize, t.XP, t.Trophy, "tier:"+tier); err != nil { slog.Error("award winner", "user", userID, "err", err) } } func (g gameSettler) RecordGame(room, playersJSON string, winnerTeam int, kot bool) { if err := g.eco.RecordGame(context.Background(), room, playersJSON, winnerTeam, kot); err != nil { slog.Error("record game", "room", room, "err", err) } } // TargetHands تعداد هَندِ لازم برای برد بازی در این tier (مثلاً مبتدی=۳). func (g gameSettler) TargetHands(tier string) int { t := g.eco.FindTier(tier) if t == nil || t.Hands <= 0 { return 7 } return t.Hands }