源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

83 rader
2.8 KiB

4 veckor sedan
  1. ConfigParserManager = {}
  2. --解析配置中的物品
  3. --cfg_name:表名
  4. --id:id索引
  5. --prop:字段
  6. function ConfigParserManager:GetConfigGoods(cfg_name,id,prop)
  7. if not self[cfg_name] then
  8. self[cfg_name] = {}
  9. end
  10. if not self[cfg_name][id] then
  11. self[cfg_name][id] = {}
  12. end
  13. if not self[cfg_name][id][prop] then
  14. assert(Config[cfg_name],"找不到配置:" .. cfg_name)
  15. assert(Config[cfg_name][id],"找不到配置:[" .. cfg_name.."]中的key=>"..id)
  16. assert(Config[cfg_name][id][prop],"找不到配置:[" .. cfg_name.."]中的key=>"..id.."中的字段=>"..prop)
  17. local config_str = Config[cfg_name][id] and Config[cfg_name][id][prop] or ""
  18. local tbl = ErlangParser:GetInstance():Parse(config_str) or {}
  19. local tbl_goods = {}
  20. for k,v in ipairs(tbl) do
  21. table.insert(tbl_goods, {style = (v[1]),typeId = tonumber(v[2]),count = tonumber(v[3])})
  22. end
  23. self[cfg_name][id][prop] = tbl_goods
  24. end
  25. return self[cfg_name][id][prop]
  26. end
  27. --解析配置中的属性
  28. --cfg_name:表名
  29. --id:id索引
  30. --prop:字段
  31. function ConfigParserManager:GetConfigAttr(cfg_name,id,prop)
  32. if not self[cfg_name] then
  33. self[cfg_name] = {}
  34. end
  35. if not self[cfg_name][id] then
  36. self[cfg_name][id] = {}
  37. end
  38. if not self[cfg_name][id][prop] then
  39. assert(Config[cfg_name],"找不到配置:" .. cfg_name)
  40. assert(Config[cfg_name][id],"找不到配置:[" .. cfg_name.."]中的key=>"..id)
  41. assert(Config[cfg_name][id][prop],"找不到配置:[" .. cfg_name.."]中的key=>"..id.."中的字段=>"..prop)
  42. local config_str = Config[cfg_name][id] and Config[cfg_name][id][prop] or ""
  43. local tbl = ErlangParser:GetInstance():Parse(config_str) or {}
  44. local attr_tbl = {}
  45. for k,v in ipairs(tbl) do
  46. table.insert(attr_tbl, {attr_id = tonumber(v[1]), val = tonumber(v[2])})
  47. end
  48. self[cfg_name][id][prop] = attr_tbl
  49. end
  50. return self[cfg_name][id][prop]
  51. end
  52. --解析配置 直接保存解析结果
  53. --cfg_name:表名
  54. --id:id索引
  55. --prop:字段
  56. function ConfigParserManager:GetConfigParse(cfg_name,id,prop)
  57. if not self[cfg_name] then
  58. self[cfg_name] = {}
  59. end
  60. if not self[cfg_name][id] then
  61. self[cfg_name][id] = {}
  62. end
  63. if not self[cfg_name][id][prop] then
  64. if not Config[cfg_name] then
  65. if can_print_cmd then logWarn(string.format("找不到配置:%s", cfg_name)) end
  66. return nil
  67. end
  68. if not Config[cfg_name][id] then
  69. if can_print_cmd then logWarn(string.format("找不到配置:[%s]中的key=>%d", cfg_name, id)) end
  70. return nil
  71. end
  72. if not Config[cfg_name][id][prop] then
  73. if can_print_cmd then logWarn(string.format("找不到配置:[%s]中的key=>%d中的字段=>%s", cfg_name, id, prop)) end
  74. return nil
  75. end
  76. local config_str = Config[cfg_name][id] and Config[cfg_name][id][prop] or ""
  77. local tbl = ErlangParser:GetInstance():Parse(config_str) or {}
  78. self[cfg_name][id][prop] = tbl
  79. end
  80. return self[cfg_name][id][prop]
  81. end