SchemeLevel.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package scheme
  2. import (
  3. "Server-Core/Server/Base"
  4. "errors"
  5. "reflect"
  6. "strconv"
  7. )
  8. type LevelItem struct {
  9. Level int32
  10. Exp int32
  11. HeroMaxLevel int32
  12. MaxEnergy int32
  13. MaxStorageEnergy int32
  14. LevelPrize string
  15. }
  16. type Level struct {
  17. dataList map[int32]*LevelItem
  18. }
  19. func (scp *Level) Load() {
  20. scp.dataList = make(map[int32]*LevelItem)
  21. //records := base.LoadCsvCfg("../Scp/Level.csv").Records
  22. //records := base.LoadCsvCfg("E://ChatGameService2/Bin/Scp/Level.csv").Records
  23. var path string = ""
  24. if ip == "192.168.1.122" {
  25. path = "E://ChatGameService2/Bin/Scp/Level.csv"
  26. } else {
  27. // records := base.LoadCsvCfg("E://ChatGameService2/Bin/Scp/Level.csv").Records
  28. path = "../Scp/Level.csv"
  29. }
  30. records := base.LoadCsvCfg(path).Records
  31. for i := 4; i < len(records); i++ {
  32. item := new(LevelItem)
  33. cr := reflect.ValueOf(item).Elem()
  34. for k, v := range records[i].Record {
  35. k = base.StrFirstToUpper(k)
  36. a := cr.FieldByName(k)
  37. switch a.Type().String() {
  38. case "string":
  39. a.Set(reflect.ValueOf(v))
  40. case "int32":
  41. i, _ := strconv.Atoi(v)
  42. a.Set(reflect.ValueOf(int32(i)))
  43. case "float64":
  44. f, _ := strconv.ParseFloat(v, 64)
  45. a.Set(reflect.ValueOf(f))
  46. }
  47. }
  48. scp.dataList[item.Level] = item
  49. }
  50. }
  51. func (scp *Level) Get(key int32) (interface{}, error) {
  52. data, ok := scp.dataList[key]
  53. if ok {
  54. return data, nil
  55. } else {
  56. return nil, errors.New("not find")
  57. }
  58. }
  59. func (scp *Level) GetMaxLevel() int32 {
  60. var maxLevel int32 = 0
  61. for _, item := range scp.dataList {
  62. if item.Level > maxLevel {
  63. maxLevel = item.Level
  64. }
  65. }
  66. return maxLevel
  67. }