chapter.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package gmdata
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. model2 "leafstalk/covenant/model"
  6. "leafstalk/log"
  7. "os"
  8. )
  9. type Chapter struct {
  10. ID int64 `json:"ID"`
  11. Type int `json:"type"`
  12. Difficulty int64 `json:"difficulty"`
  13. Name string `json:"name"`
  14. RoomCount int32 `json:"chapter"`
  15. CombatEffe int `json:"combatEffe"`
  16. CombatEffeLimit [][]float64 `json:"combatEffeLimit"`
  17. DailyNumber int `json:"dailyNumber"`
  18. AdRefreshSkillTimes int `json:"adRefreshSkillTimes"`
  19. GoldRatio int `json:"goldRatio"`
  20. EndText string `json:"endText"`
  21. OP int `json:"OP"`
  22. SoundID int `json:"SoundID"`
  23. UnlockSkills []int `json:"unlockSkills"`
  24. EquipNumLimit int `json:"EquipNumLimit"`
  25. ReentryLimit int `json:"ReentryLimit"`
  26. }
  27. type ChapterOptionItem struct {
  28. Label string `json:"label"`
  29. Value string `json:"value"`
  30. }
  31. var (
  32. Chapters []*model2.LevelListItem
  33. ChapterOption []*ChapterOptionItem
  34. )
  35. // LoadChapter 加载配置信息
  36. func LoadChapter() {
  37. loadChapterFile(CurrentPath+"/"+"LevelList.json", &Chapters)
  38. // 根据 ID 和 Difficulty 排序,最小越靠前
  39. //sort.Slice(Chapters, func(i, j int) bool {
  40. // if Chapters[i].ID == Chapters[j].ID {
  41. // return Chapters[i].Difficulty < Chapters[j].Difficulty
  42. // }
  43. // return Chapters[i].ID < Chapters[j].ID
  44. //})
  45. for _, v := range Chapters {
  46. ChapterOption = append(ChapterOption, &ChapterOptionItem{
  47. Label: v.Name,
  48. Value: fmt.Sprintf("%v", v.Uid),
  49. })
  50. }
  51. }
  52. func loadChapterFile(filePath string, val interface{}) {
  53. ptrFile, err := os.Open(filePath)
  54. if err != nil {
  55. log.Fatalln("读取json文件失败", err)
  56. }
  57. defer ptrFile.Close()
  58. decoder := json.NewDecoder(ptrFile)
  59. if err = decoder.Decode(&val); err != nil {
  60. log.Fatalln("loadTreasureFile Decoder failed ", filePath, err.Error())
  61. }
  62. }
  63. func GetChaptersMap() map[string]*model2.LevelListItem {
  64. var data = make(map[string]*model2.LevelListItem, len(Chapters))
  65. for _, v := range Chapters {
  66. data[fmt.Sprintf("%d", v.Uid)] = v
  67. }
  68. return data
  69. }
  70. func GetMaxChapterForType() map[int64]int64 {
  71. maxChapters := make(map[int64]int64)
  72. for _, chapter := range Chapters {
  73. if _, ok := maxChapters[chapter.Type]; !ok || chapter.Uid > maxChapters[chapter.Type] {
  74. maxChapters[chapter.Type] = chapter.Uid
  75. }
  76. }
  77. return maxChapters
  78. }
  79. func GetChapterById(id int32) *model2.LevelListItem {
  80. for _, v := range Chapters {
  81. if v.Uid == int64(id) {
  82. return v
  83. }
  84. }
  85. return nil
  86. }
  87. func GetDifficultName(diff int64) string {
  88. if diff == 1 {
  89. return "困难"
  90. }
  91. if diff == 2 {
  92. return "噩梦"
  93. }
  94. return "普通"
  95. }