ReadARKShopConfig.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package util
  2. import (
  3. "ARKItems/entity/ark"
  4. "encoding/json"
  5. "fmt"
  6. "io"
  7. "os"
  8. "strings"
  9. )
  10. //读取ark shop配置
  11. func LoadArkShopConfig(url string) (
  12. ark.Config, map[string]ark.ShopItem, map[string]ark.ShopDino,
  13. map[string]ark.ShopBeacon, map[string]ark.ShopExperience,
  14. map[string]ark.ShopUnlockengram, map[string]ark.ShopCommand) {
  15. file, err := os.OpenFile(url, os.O_RDWR, 0666)
  16. if err != nil {
  17. panic(err)
  18. }
  19. defer file.Close()
  20. all, err := io.ReadAll(file)
  21. if err != nil {
  22. panic(err)
  23. }
  24. index := strings.Index(string(all), "{")
  25. all = []byte(string(all)[index:])
  26. return LoadArkShopConfigByString(all)
  27. }
  28. func LoadArkShopConfigByString(jsonContent []byte) (
  29. ark.Config, map[string]ark.ShopItem, map[string]ark.ShopDino,
  30. map[string]ark.ShopBeacon, map[string]ark.ShopExperience,
  31. map[string]ark.ShopUnlockengram, map[string]ark.ShopCommand) {
  32. var config ark.Config
  33. var ARKShopItems = make(map[string]ark.ShopItem)
  34. var ARKShopDines = make(map[string]ark.ShopDino)
  35. var ARKShopBeacons = make(map[string]ark.ShopBeacon)
  36. var ARKShopExperiences = make(map[string]ark.ShopExperience)
  37. var ARKShopUnlockengram = make(map[string]ark.ShopUnlockengram)
  38. var ARKShopCommands = make(map[string]ark.ShopCommand)
  39. err := json.Unmarshal(jsonContent, &config)
  40. if err != nil {
  41. panic(err)
  42. }
  43. //接卸shopItems内容
  44. var m map[string]interface{}
  45. err = json.Unmarshal(jsonContent, &m)
  46. if err != nil {
  47. panic(err)
  48. }
  49. ShopItems, ok := m["ShopItems"].(map[string]interface{})
  50. if ok {
  51. for key := range ShopItems {
  52. item := ShopItems[key].(map[string]interface{})
  53. t := item["Type"]
  54. switch t {
  55. case "item":
  56. var obj ark.ShopItem
  57. DataToObject(item, &obj)
  58. ARKShopItems[key] = obj
  59. continue
  60. case "dino":
  61. var obj ark.ShopDino
  62. DataToObject(item, &obj)
  63. ARKShopDines[key] = obj
  64. continue
  65. case "beacon":
  66. var obj ark.ShopBeacon
  67. DataToObject(item, &obj)
  68. ARKShopBeacons[key] = obj
  69. continue
  70. case "experience":
  71. var obj ark.ShopExperience
  72. DataToObject(item, &obj)
  73. ARKShopExperiences[key] = obj
  74. continue
  75. case "unlockengram":
  76. var obj ark.ShopUnlockengram
  77. DataToObject(item, &obj)
  78. ARKShopUnlockengram[key] = obj
  79. continue
  80. case "command":
  81. var obj ark.ShopCommand
  82. DataToObject(item, &obj)
  83. ARKShopCommands[key] = obj
  84. continue
  85. default:
  86. fmt.Println("=================>", t)
  87. }
  88. }
  89. } else {
  90. panic("ShopItems is not a map")
  91. }
  92. return config, ARKShopItems, ARKShopDines, ARKShopBeacons, ARKShopExperiences, ARKShopUnlockengram, ARKShopCommands
  93. }