You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.6 KiB
Go
137 lines
3.6 KiB
Go
2 years ago
|
package config
|
||
|
|
||
|
import "github.com/pkg/errors"
|
||
|
|
||
|
type (
|
||
|
Elite struct {
|
||
|
LiveDict map[int32]int64 // 直播间序号对应ID
|
||
|
Default struct {
|
||
|
Id int64
|
||
|
Sort int32
|
||
|
} // 默认
|
||
|
Items []EliteItem
|
||
|
}
|
||
|
// EliteItem 精英单位
|
||
|
EliteItem struct {
|
||
|
Id int64 // 单位ID
|
||
|
PriceDay int64 // 每天价格(弹币)
|
||
|
PriceForever int64 // 永久价格
|
||
|
}
|
||
|
Title struct {
|
||
|
LiveDict map[int32]int64 // 直播间序号对应ID
|
||
|
Items []TitleItem
|
||
|
}
|
||
|
// TitleItem 称号
|
||
|
TitleItem struct {
|
||
|
Id int64 // 称号ID
|
||
|
Name string // 称号名
|
||
|
Type string // 称号类型
|
||
|
RankType int32 // 作用的排行榜类型
|
||
|
PriceDay int64 // 每天价格(弹币)
|
||
|
PriceForever int64 // 永久价格(弹币)
|
||
|
}
|
||
|
GiftPack struct {
|
||
|
PackType string // 礼包类型
|
||
|
PackName string // 礼包名称
|
||
|
// Condition 领取条件
|
||
|
Condition struct {
|
||
|
UserLimit int32 // 单人可领取数量
|
||
|
UserResetType string // 用户礼包重置类型: 不重置(unset)|每天(daily)|每周(weekly)|每月(monthly)
|
||
|
StartTime string // 可领取时间(开始) 两个时间相等则不限期领取
|
||
|
EndTime string // 可领取时间(结束)
|
||
|
}
|
||
|
// Content 礼包内容
|
||
|
Content struct {
|
||
|
Coin int64 // 积分数
|
||
|
Coins []int64 // 积分数(多次领取,每次不同)
|
||
|
|
||
|
// Title 奖励称号列表
|
||
|
Title []struct {
|
||
|
Id int64 // 称号ID
|
||
|
Duration int64 // 持续时长,单位: 秒 -1无限
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
GameConfig struct {
|
||
|
UserRetriever struct {
|
||
|
Enabled bool // 是否开启
|
||
|
UpdateDuration int64 // 用户信息更新最短间隔 单位 h
|
||
|
NobilityPlatforms []string // 需要获取贵族的平台
|
||
|
Cron struct {
|
||
|
PlatformUser string
|
||
|
Nobility string
|
||
|
}
|
||
|
Bilibili struct {
|
||
|
RoomId int64 // 直播房间号
|
||
|
Mid int64 // 主播UID 不输入就通过API获取
|
||
|
RoomShortInfoApi string // 房间简短信息API
|
||
|
TopListApi string
|
||
|
}
|
||
|
}
|
||
|
Rank struct {
|
||
|
Enabled bool // 是否开启
|
||
|
Cron struct {
|
||
|
Update string // 更新榜单
|
||
|
Persistence string // 持久化
|
||
|
}
|
||
|
}
|
||
|
GiftCollector struct {
|
||
|
Enabled bool // 是否开启
|
||
|
Platforms []string // 需搜集的平台
|
||
|
Cron struct {
|
||
|
CollectGift string
|
||
|
}
|
||
|
}
|
||
|
// 弹币
|
||
|
Coin struct {
|
||
|
// CheckIn 签到
|
||
|
CheckIn struct {
|
||
|
Points []int64 // 签到积分 次数分数
|
||
|
Critical float32 // 暴击率(百分比)
|
||
|
CriticalRadio []float32 // 暴击倍数
|
||
|
}
|
||
|
RMBToCoin float64 // RMB到弹币的转换
|
||
|
GiftToRMB map[string]float64 // 平台礼物到RMB的转换
|
||
|
FreeToCoin map[string]float64 // 平台免费礼物到弹币的转换
|
||
|
}
|
||
|
// 精英单位
|
||
|
Elite Elite
|
||
|
// 称号
|
||
|
Title Title
|
||
|
// GiftPack 礼包配置
|
||
|
GiftPackMap []GiftPack
|
||
|
}
|
||
|
)
|
||
|
|
||
|
func (c *Title) FindTitleCfg(id int64) (*TitleItem, error) {
|
||
|
for _, item := range c.Items {
|
||
|
if id == item.Id {
|
||
|
return &item, nil
|
||
|
}
|
||
|
}
|
||
|
return nil, errors.New("未找到ID对应的称号配置")
|
||
|
}
|
||
|
|
||
|
func (c *Title) FindTitleCfgByLive(sort int32) (*TitleItem, error) {
|
||
|
if id, ok := c.LiveDict[sort]; ok {
|
||
|
return c.FindTitleCfg(id)
|
||
|
}
|
||
|
return nil, errors.New("未找到sort对应的称号配置")
|
||
|
}
|
||
|
|
||
|
func (c *Elite) FindEliteCfg(id int64) (*EliteItem, error) {
|
||
|
for _, item := range c.Items {
|
||
|
if id == item.Id {
|
||
|
return &item, nil
|
||
|
}
|
||
|
}
|
||
|
return nil, errors.New("未找到ID对应的精英单位配置")
|
||
|
}
|
||
|
|
||
|
func (c *Elite) FindEliteCfgByLive(sort int32) (*EliteItem, error) {
|
||
|
if id, ok := c.LiveDict[sort]; ok {
|
||
|
return c.FindEliteCfg(id)
|
||
|
}
|
||
|
return nil, errors.New("未找到sort对应的精英单位配置")
|
||
|
}
|