multipleslotcounts.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package slotcount
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "os"
  6. "bet24.com/log"
  7. )
  8. type mulcounts struct {
  9. Level int
  10. SlotCounts [][][]int
  11. }
  12. type MultipleSlotCountManager struct {
  13. mgr_list []*SlotCountManager
  14. }
  15. func NewMultipleSlotCountManager(configFile string) *MultipleSlotCountManager {
  16. ret := new(MultipleSlotCountManager)
  17. ret.loadData(configFile, 0, 0)
  18. return ret
  19. }
  20. func NewFafafaMultipleSlotCountManager(configFile string, goldFaId int, freeSlotId int) *MultipleSlotCountManager {
  21. ret := new(MultipleSlotCountManager)
  22. if ret.loadData(configFile, goldFaId, freeSlotId) {
  23. return ret
  24. }
  25. return nil
  26. }
  27. func (mscm *MultipleSlotCountManager) loadData(configFile string, goldFaId int, freeSlotId int) bool {
  28. defer func() {
  29. log.Debug("MultipleSlotCountManager.loadData(%s) manager count = %d", configFile, len(mscm.mgr_list))
  30. }()
  31. data, err := os.ReadFile(fmt.Sprintf("slotconf/%s.json", configFile))
  32. if err != nil {
  33. log.Debug("MultipleSlotCountManager.loadData read %s.json failed", configFile)
  34. return false
  35. }
  36. var multipleCounts []mulcounts
  37. err = json.Unmarshal(data, &multipleCounts)
  38. if err != nil {
  39. log.Release("MultipleSlotCountManager.loadData Unmarshal %s.json failed err:%v", configFile, err)
  40. return false
  41. }
  42. for _, v := range multipleCounts {
  43. sc := NewSlotCountManagerByConfig(v.Level, v.SlotCounts)
  44. sc.setFafafaInfo(goldFaId, freeSlotId)
  45. mscm.mgr_list = append(mscm.mgr_list, sc)
  46. }
  47. return true
  48. }
  49. func (mscm *MultipleSlotCountManager) GetMgr(level int) *SlotCountManager {
  50. count := len(mscm.mgr_list)
  51. if count == 0 {
  52. return nil
  53. }
  54. if count == 1 {
  55. return mscm.mgr_list[0]
  56. }
  57. for i := 0; i < len(mscm.mgr_list); i++ {
  58. if level == mscm.mgr_list[i].Level {
  59. return mscm.mgr_list[i]
  60. }
  61. }
  62. return mscm.mgr_list[0]
  63. }