| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package rezekislot
- import "bet24.com/log"
- type Fan struct {
- FanID int // 编号
- Win int // 赢金跟IsLevel相关
- IsLevel int // 是否跟随等级增加翻倍奖励
- IsAllWins int // 是否全赢记录的是全赢的倍数
- IsGrand int // 是否Grand大奖
- }
- type FanManager struct {
- fanConfig []Fan
- }
- func newFanManager(fanConfig []Fan) *FanManager {
- ret := new(FanManager)
- ret.fanConfig = fanConfig
- return ret
- }
- func (f *Fan) isLevel() bool {
- return f.IsLevel > 0
- }
- func (f *Fan) isAllWins() bool {
- return f.IsAllWins > 0
- }
- func (f *Fan) isGrand() bool {
- return f.IsGrand > 0
- }
- func (fm *FanManager) getFan(fanId int) *Fan {
- for _, v := range fm.fanConfig {
- if v.FanID == fanId {
- return &v
- }
- }
- return nil
- }
- func (fm *FanManager) isGrand(fanId int) bool {
- s := fm.getFan(fanId)
- if s == nil {
- log.Color(LogColor, "FanManager.isGrand invlaid FanId %d", fanId)
- return false
- }
- return s.isGrand()
- }
- func (fm *FanManager) isLevel(fanId int) bool {
- s := fm.getFan(fanId)
- if s == nil {
- log.Color(LogColor, "FanManager.isLevel invlaid FanId %d", fanId)
- return false
- }
- return s.isLevel()
- }
- func (fm *FanManager) isAllWins(fanId int) bool {
- s := fm.getFan(fanId)
- if s == nil {
- log.Color(LogColor, "FanManager.isAllWins invlaid FanId %d", fanId)
- return false
- }
- return s.isAllWins()
- }
- //获取所有的Jackpot扇子ID
- func (fm *FanManager) getJackpotFanId() []int {
- ret := []int{}
- for _, v := range fm.fanConfig {
- if v.isGrand() {
- ret = append(ret, v.FanID)
- }
- }
- return ret
- }
- func (fm *FanManager) getResults(fanId, betAmount, baseAmount, winAmount int) (ret FanResult) {
- ret.FanID = fanId
- ret.IsGrand = false
- //检查id是否正确
- if fanId == -1 {
- return ret
- }
- //检查配置表是否存在
- fan := fm.getFan(fanId)
- if fan == nil {
- return ret
- }
- //判断是否为 随着下注额倍数增加
- if fan.isLevel() {
- winRate := betAmount / baseAmount //获得倍数
- ret.WinAmount = fan.Win * winRate
- return ret
- } else if fan.isAllWins() {
- //全赢 当前线获胜金额乘以倍数
- ret.WinAmount = (fan.IsAllWins - 1) * winAmount
- return ret
- } else if fan.isGrand() {
- //判断是否为 Grand
- ret.IsGrand = true
- return ret
- }
- return ret
- }
|