SLValue.lua 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. local sformat = string.format
  2. local sgsub = string.gsub
  3. local Type = type
  4. local datas = nil
  5. local SVarMask = {
  6. ["<H>"] = "HUMAN(%s)",
  7. ["<G>"] = "GLOBAL(%s)",
  8. ["<U>"] = "GUILD(%s)",
  9. ["<N>"] = "NATION(%s)",
  10. ["<O>"] = "%s"
  11. }
  12. local function GetDatas()
  13. local data = {}
  14. for _, v in ipairs(SL:Require("GUIValue/GUIValueInit", true) or {}) do
  15. if type(v) == "table" then
  16. if next(data) then
  17. table.merge(data, v)
  18. else
  19. data = v
  20. end
  21. end
  22. end
  23. return data
  24. end
  25. function UpateGUIValueCfg()
  26. datas = GetDatas()
  27. end
  28. function VALUE(key, ...)
  29. if not datas then
  30. datas = GetDatas()
  31. end
  32. local value = ...
  33. if key == "<H>" or key == "<G>" or key == "<U>" or key == "<N>" or key == "<O>" then
  34. key, value = "TXT_VALUE", string.format(SVarMask[key], value)
  35. end
  36. local valueCustom = datas[key]
  37. if not valueCustom then
  38. local _, Is = sgsub(key, "<T_(.-)>", function ( )
  39. key, value = "TXT_VALUE", key
  40. end)
  41. if Is == 0 then
  42. sgsub(key, "<V_(.-)>", function ( )
  43. key, value = "TXT_VALUE", key
  44. end)
  45. end
  46. return SL:GetMetaValue(key, value)
  47. end
  48. if Type(valueCustom) == "table" then
  49. local func = valueCustom[value]
  50. if Type(func) == "function" then
  51. local T = {}
  52. T[value] = func()
  53. return T
  54. else
  55. return valueCustom
  56. end
  57. return valueCustom
  58. end
  59. if Type(valueCustom) == "function" then
  60. return valueCustom(value)
  61. end
  62. return valueCustom
  63. end
  64. function SET_VALUE(key, value)
  65. SL:SetMetaValue(key, value)
  66. end
  67. function L_VALUE(key, ...)
  68. local CodeDOMUIProxy = global.Facade:retrieveProxy(global.ProxyTable.CodeDOMUIProxy)
  69. local uiData = CodeDOMUIProxy:GetCurTxtUIData()
  70. if uiData and uiData[key] then
  71. return uiData[key]
  72. end
  73. return key
  74. end