ConditionProxy.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. local RemoteProxy = requireProxy("remote/RemoteProxy")
  2. local ConditionProxy = class("ConditionProxy", RemoteProxy)
  3. ConditionProxy.NAME = global.ProxyTable.ConditionProxy
  4. function ConditionProxy:ctor()
  5. ConditionProxy.super.ctor(self)
  6. self._cacheCondition = {}
  7. end
  8. ---$(LEVEL)
  9. function ConditionProxy:CheckCondition(conditionStr)
  10. if not conditionStr or conditionStr == "" then
  11. return true
  12. end
  13. if self._cacheCondition[conditionStr] then --取缓存
  14. return self._cacheCondition[conditionStr]()
  15. end
  16. local convertStr = string.gsub(conditionStr, "($%b())", function(valueStr)
  17. local metaParam = string.match(valueStr, "$%((.*)%)")
  18. local index = string.find(metaParam, ",")
  19. local metaKey = ""
  20. if index then
  21. metaKey = string.sub(metaParam, 1, index - 1)
  22. metaParam = string.sub(metaParam, index + 1)
  23. else
  24. metaKey = metaParam
  25. metaParam = nil
  26. end
  27. local str = ""
  28. if metaParam then
  29. str = string.format("metaValueProxy:GetValueByKey('%s',%s)", metaKey, metaParam)
  30. else
  31. str = string.format("metaValueProxy:GetValueByKey('%s')", metaKey)
  32. end
  33. return str or ""
  34. end)
  35. --args todo
  36. local successFunc = loadstring(string.format(
  37. [[
  38. local metaValueProxy = global.Facade:retrieveProxy(global.ProxyTable.MetaValueProxy)
  39. if (%s) then
  40. return true
  41. else
  42. return false
  43. end
  44. ]], convertStr))
  45. if not successFunc then
  46. SL:Print(string.format("error:条件错误!! %s", conditionStr))
  47. return false
  48. end
  49. self._cacheCondition[conditionStr] = successFunc
  50. return successFunc()
  51. end
  52. return ConditionProxy