89 lines
2.9 KiB
Go
89 lines
2.9 KiB
Go
package economy
|
|
|
|
// مقادیر اقتصادی پایه (قابل تنظیم بر اساس بیزینسپلن).
|
|
const (
|
|
DailyReward = 200 // سکه روزانه
|
|
AdReward = 50 // سکه به ازای هر تبلیغ rewardedِ کامل
|
|
AdDailyCap = 50 // سقف تعداد تبلیغ پاداشدار در روز
|
|
)
|
|
|
|
// CoinPackage بستهی سکه با پول واقعی (IAP) — ممکن است VIP هم بدهد.
|
|
type CoinPackage struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Coins int64 `json:"coins"`
|
|
VIPDays int `json:"vip_days"`
|
|
PriceToman int `json:"price_toman"`
|
|
BonusPct int `json:"bonus_pct"`
|
|
}
|
|
|
|
// TicketPackage بستهی بلیط با پول واقعی (IAP).
|
|
type TicketPackage struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Tickets int64 `json:"tickets"`
|
|
PriceToman int `json:"price_toman"`
|
|
}
|
|
|
|
// CardSkin اسکین کارت که با سکه باز میشود (قیمت ۰ یعنی پیشفرض رایگان).
|
|
type CardSkin struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
PriceCoins int64 `json:"price_coins"`
|
|
}
|
|
|
|
// Booster بوستر XP با پول واقعی (IAP).
|
|
type Booster struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Multiplier int `json:"multiplier"`
|
|
Hours int `json:"hours"`
|
|
PriceToman int `json:"price_toman"`
|
|
}
|
|
|
|
// VIPPackage بستهی اشتراک VIP با پول واقعی (IAP).
|
|
type VIPPackage struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Months int `json:"months"`
|
|
PriceToman int `json:"price_toman"`
|
|
}
|
|
|
|
// TableTier نوع میز: تعداد دست، ورودی، جایزه، XP و جام.
|
|
type TableTier struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Hands int `json:"hands"`
|
|
Entry int64 `json:"entry"`
|
|
Prize int64 `json:"prize"`
|
|
XP int `json:"xp"`
|
|
Trophy int `json:"trophy"`
|
|
}
|
|
|
|
// Catalog کل کاتالوگ فروشگاه (برای GET /api/shop). از دیتابیس بارگذاری میشود.
|
|
type Catalog struct {
|
|
CoinPackages []CoinPackage `json:"coin_packages"`
|
|
TicketPackages []TicketPackage `json:"ticket_packages"`
|
|
CardSkins []CardSkin `json:"card_skins"`
|
|
Boosters []Booster `json:"boosters"`
|
|
VIPPackages []VIPPackage `json:"vip_packages"`
|
|
TableTiers []TableTier `json:"table_tiers"`
|
|
}
|
|
|
|
// LevelInfo سطح فعلی، XP درونسطح و XP لازم برای سطح بعد را از XP کل محاسبه میکند.
|
|
// نیاز هر سطح: ۵۰ × شماره سطح (مثلاً سطح ۸ ⇒ ۴۰۰).
|
|
func LevelInfo(totalXP int64) (level int, into int64, need int64) {
|
|
level = 1
|
|
remaining := totalXP
|
|
for {
|
|
need = int64(50 * level)
|
|
if remaining < need {
|
|
break
|
|
}
|
|
remaining -= need
|
|
level++
|
|
}
|
|
into = remaining
|
|
return level, into, need
|
|
}
|