SchemeItem.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package scheme
  2. import (
  3. "Server-Core/Server/Base"
  4. "errors"
  5. "fmt"
  6. "net"
  7. "reflect"
  8. "strconv"
  9. )
  10. type ItemItem struct {
  11. Id int32
  12. Quality int32
  13. Price int32
  14. Type string
  15. Value int32
  16. }
  17. type Item struct {
  18. dataList map[int32]*ItemItem
  19. }
  20. var ip string = ""
  21. func getIp() string {
  22. addrList, err := net.InterfaceAddrs()
  23. if err != nil {
  24. panic(err)
  25. }
  26. for _, address := range addrList {
  27. if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
  28. if ipNet.IP.To4() != nil {
  29. fmt.Println(ipNet.IP.String())
  30. ip = ipNet.IP.String()
  31. break
  32. }
  33. }
  34. }
  35. return ip
  36. }
  37. func (scp *Item) Load() {
  38. scp.dataList = make(map[int32]*ItemItem)
  39. getIp()
  40. fmt.Printf("exPath", ip)
  41. //records := base.LoadCsvCfg("../Scp/Item.csv").Records
  42. //records := base.LoadCsvCfg("../Scp/Item.csv").Records
  43. //records := base.LoadCsvCfg("./Scp/Item.csv").Records
  44. var path string = ""
  45. if ip == "192.168.1.122" {
  46. path = "E://ChatGameService2/Bin/Scp/Item.csv"
  47. } else {
  48. // records := base.LoadCsvCfg("E://ChatGameService2/Bin/Scp/Level.csv").Records
  49. path = "../Scp/Item.csv"
  50. }
  51. records := base.LoadCsvCfg(path).Records
  52. // records := base.LoadCsvCfg("E://ChatGameService2/Bin/Scp/Item.csv").Records
  53. //file, err := os.Open(fmt.Sprintf("E://ChatGameService2/Scp/Item.csv", tag))
  54. for i := 4; i < len(records); i++ {
  55. item := new(ItemItem)
  56. cr := reflect.ValueOf(item).Elem()
  57. for k, v := range records[i].Record {
  58. k = base.StrFirstToUpper(k)
  59. a := cr.FieldByName(k)
  60. switch a.Type().String() {
  61. case "string":
  62. a.Set(reflect.ValueOf(v))
  63. case "int32":
  64. i, _ := strconv.Atoi(v)
  65. a.Set(reflect.ValueOf(int32(i)))
  66. case "float64":
  67. f, _ := strconv.ParseFloat(v, 64)
  68. a.Set(reflect.ValueOf(f))
  69. }
  70. }
  71. scp.dataList[item.Id] = item
  72. }
  73. }
  74. func (scp *Item) Get(key int32) (interface{}, error) {
  75. data, ok := scp.dataList[key]
  76. if ok {
  77. return data, nil
  78. } else {
  79. return nil, errors.New("not find")
  80. }
  81. }