| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package slotcount
- import (
- "encoding/json"
- "fmt"
- "os"
- "bet24.com/log"
- )
- type mulcounts struct {
- Level int
- SlotCounts [][][]int
- }
- type MultipleSlotCountManager struct {
- mgr_list []*SlotCountManager
- }
- func NewMultipleSlotCountManager(configFile string) *MultipleSlotCountManager {
- ret := new(MultipleSlotCountManager)
- ret.loadData(configFile, 0, 0)
- return ret
- }
- func NewFafafaMultipleSlotCountManager(configFile string, goldFaId int, freeSlotId int) *MultipleSlotCountManager {
- ret := new(MultipleSlotCountManager)
- if ret.loadData(configFile, goldFaId, freeSlotId) {
- return ret
- }
- return nil
- }
- func (mscm *MultipleSlotCountManager) loadData(configFile string, goldFaId int, freeSlotId int) bool {
- defer func() {
- log.Debug("MultipleSlotCountManager.loadData(%s) manager count = %d", configFile, len(mscm.mgr_list))
- }()
- data, err := os.ReadFile(fmt.Sprintf("slotconf/%s.json", configFile))
- if err != nil {
- log.Debug("MultipleSlotCountManager.loadData read %s.json failed", configFile)
- return false
- }
- var multipleCounts []mulcounts
- err = json.Unmarshal(data, &multipleCounts)
- if err != nil {
- log.Release("MultipleSlotCountManager.loadData Unmarshal %s.json failed err:%v", configFile, err)
- return false
- }
- for _, v := range multipleCounts {
- sc := NewSlotCountManagerByConfig(v.Level, v.SlotCounts)
- sc.setFafafaInfo(goldFaId, freeSlotId)
- mscm.mgr_list = append(mscm.mgr_list, sc)
- }
- return true
- }
- func (mscm *MultipleSlotCountManager) GetMgr(level int) *SlotCountManager {
- count := len(mscm.mgr_list)
- if count == 0 {
- return nil
- }
- if count == 1 {
- return mscm.mgr_list[0]
- }
- for i := 0; i < len(mscm.mgr_list); i++ {
- if level == mscm.mgr_list[i].Level {
- return mscm.mgr_list[i]
- }
- }
- return mscm.mgr_list[0]
- }
|