slotmanager.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package manager
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "os"
  6. "strings"
  7. "bet24.com/log"
  8. "bet24.com/servers/games/TribalSlot"
  9. "bet24.com/servers/games/animalslot"
  10. "bet24.com/servers/games/minislot"
  11. "bet24.com/servers/games/rezekislot"
  12. "bet24.com/servers/games/slotcommon"
  13. "bet24.com/servers/games/slotcommon/admanager"
  14. "bet24.com/servers/games/slotcommon/usermanager"
  15. "bet24.com/servers/games/slotpanda"
  16. )
  17. type SlotMessage struct {
  18. MsgID int
  19. Data string
  20. }
  21. func RunAllSlots(sink slotcommon.SlotSink) {
  22. admanager.Run(sink.IsChipRoom())
  23. usermanager.Run()
  24. TribalSlot.Run(sink)
  25. animalslot.Run(sink)
  26. slotpanda.Run(sink)
  27. rezekislot.Run(sink)
  28. minislot.Run(sink)
  29. }
  30. func OnUserLogined(userId int) {
  31. usermanager.AddUser(userId)
  32. }
  33. func OnUserExit(userId int) {
  34. usermanager.RemoveUser(userId)
  35. slotpanda.OnUserExit(userId)
  36. animalslot.OnUserExit(userId)
  37. rezekislot.OnUserExit(userId)
  38. TribalSlot.OnUserExit(userId)
  39. }
  40. func OnGameMessage(userId int, msg, data string) bool {
  41. if strings.Contains(msg, TribalSlot.GAME_MESSAGE) { // tribalslot
  42. TribalSlot.OnGameMessage(userId, msg, data)
  43. return true
  44. }
  45. if strings.Contains(msg, minislot.GAME_MESSAGE) { // tribalslot
  46. minislot.OnGameMessage(userId, msg, data)
  47. return true
  48. }
  49. if strings.Contains(msg, animalslot.GAME_MESSAGE) { // tribalslot
  50. animalslot.OnGameMessage(userId, msg, data)
  51. return true
  52. }
  53. if strings.Contains(msg, rezekislot.GAME_MESSAGE) { // rezekislot
  54. rezekislot.OnGameMessage(userId, msg, data)
  55. return true
  56. }
  57. if strings.Contains(msg, slotpanda.GAME_MESSAGE) { // slotpanda
  58. slotpanda.OnGameMessage(userId, msg, data)
  59. return true
  60. }
  61. return false
  62. }
  63. func Dump(game string) {
  64. }
  65. type config_read struct {
  66. GameName string
  67. ConfigName string
  68. }
  69. type config_write struct {
  70. GameName string
  71. ConfigName string
  72. Data string
  73. }
  74. func GetConfigByCmd(requestData string) string {
  75. var f config_read
  76. err := json.Unmarshal([]byte(requestData), &f)
  77. if err != nil {
  78. log.Debug("slotmanager.GetConfig Unmarshal failed err:%s", requestData)
  79. return "invalid argument"
  80. }
  81. return GetConfig(f.GameName, f.ConfigName)
  82. }
  83. func GetConfig(gameName, configName string) string {
  84. data, e := os.ReadFile(fmt.Sprintf("slotconf/%s.json", configName))
  85. if e != nil {
  86. log.Debug("slotmanager.GetConfig config file[%s] not found", configName)
  87. return fmt.Sprintf("file[%s] not found", configName)
  88. }
  89. return string(data)
  90. }
  91. func WriteConfig(gameName, configName, data string) string {
  92. if !json.Valid([]byte(data)) {
  93. log.Debug("slotmanager.WriteConfig invalid data:%s", data)
  94. return "invalid data"
  95. }
  96. fileName := fmt.Sprintf("slotconf/%s.json", configName)
  97. _, e := os.ReadFile(fileName)
  98. if e != nil {
  99. log.Debug("slotmanager.GetConfig config file[%s] not found", fileName)
  100. return fmt.Sprintf("file[%s] not found", fileName)
  101. }
  102. os.WriteFile(fileName, []byte(data), 0644)
  103. return "ok"
  104. }
  105. func WriteConfigByCmd(requestData string) string {
  106. var f config_write
  107. err := json.Unmarshal([]byte(requestData), &f)
  108. if err != nil {
  109. log.Debug("slotmanager.WriteConfig Unmarshal failed err:%s", requestData)
  110. return "invalid argument"
  111. }
  112. return WriteConfig(f.GameName, f.ConfigName, f.Data)
  113. }
  114. func GetConfigList(gameName string) []string {
  115. var ret []string
  116. dir, err := os.ReadDir("slotconf")
  117. if err != nil {
  118. return ret
  119. }
  120. for _, fi := range dir {
  121. if !fi.IsDir() { // 忽略目录
  122. if gameName == "" {
  123. ret = append(ret, fi.Name())
  124. } else {
  125. if strings.Contains(fi.Name(), gameName) {
  126. ret = append(ret, fi.Name())
  127. }
  128. }
  129. }
  130. }
  131. return ret
  132. }