SchemeRoleLevel.go 1.4 KB

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