MeridianProxy.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. local RemoteProxy = requireProxy("remote/RemoteProxy")
  2. local MeridianProxy = class("MeridianProxy", RemoteProxy)
  3. MeridianProxy.NAME = global.ProxyTable.MeridianProxy
  4. local cjson = require("cjson")
  5. function MeridianProxy:ctor()
  6. MeridianProxy.super.ctor(self)
  7. -- 人物
  8. self._meridianLvList = {}
  9. self._meridianOpenList = {}
  10. -- 英雄
  11. self._heroMeridianLvList = {}
  12. self._heroMeridianOpenList = {}
  13. self._config = {}
  14. self._ng_hud_show = true -- 内功hud显示
  15. self:LoadConfig()
  16. end
  17. function MeridianProxy:LoadConfig()
  18. self._config = requireGameConfig("cfg_PulsDesc")
  19. end
  20. function MeridianProxy:GetTipsConfig()
  21. return self._config
  22. end
  23. function MeridianProxy:GetAucPointStateByType(type, isHero)
  24. if type then
  25. if isHero then
  26. return self["_mHeroAucPointList_".. type] or {}
  27. else
  28. return self["_mAucPointList_".. type] or {}
  29. end
  30. end
  31. return nil
  32. end
  33. function MeridianProxy:GetMeridianOpenList(isHero)
  34. if isHero then
  35. return self._heroMeridianOpenList
  36. else
  37. return self._meridianOpenList
  38. end
  39. end
  40. function MeridianProxy:GetMeridianLvByType(type, isHero)
  41. if isHero then
  42. return self._heroMeridianLvList[type] or 0
  43. else
  44. return self._meridianLvList[type] or 0
  45. end
  46. end
  47. function MeridianProxy:GetNGHudShow()
  48. return self._ng_hud_show
  49. end
  50. function MeridianProxy:SetNGHudShow( state )
  51. self._ng_hud_show = state
  52. end
  53. function MeridianProxy:OnRefreshNGHudShow()
  54. local optionsUtils = requireProxy( "optionsUtils" )
  55. local players = global.playerManager:GetPlayersInCurrViewField()
  56. for i,player in ipairs(players) do
  57. if player then
  58. optionsUtils:InitHUDVisibleValue(player, global.MMO.HUD_NGBAR_VISIBLE)
  59. optionsUtils:CheckHUDNGBarVisible(player)
  60. end
  61. end
  62. end
  63. function MeridianProxy:RequestAucPointOpen(typeID, aucPointID, isHero)
  64. LuaSendMsg(global.MsgType.MSG_CS_MERIDIAN_ACUPOINT_OPEN, typeID, aucPointID, isHero and 1 or 0)
  65. end
  66. function MeridianProxy:RequestMeridianLevelUp(typeID, isHero)
  67. LuaSendMsg(global.MsgType.MSG_CS_MERIDIAN_LEVELUP, typeID, isHero and 1 or 0)
  68. end
  69. function MeridianProxy:RequestGetMeridianInfo(isHero)
  70. LuaSendMsg(global.MsgType.MSG_CS_MERIDIAN_GET_INFO, isHero and 1 or 0)
  71. end
  72. -- 经络ID 冲脉=1 阴跷=2 阴维=3 任脉=4 奇经=5 (服务端-1)
  73. function MeridianProxy:handle_MSG_SC_MERIDIAN_GET_INFO(msg)
  74. local jsonData = ParseRawMsgToJson(msg)
  75. if not jsonData then
  76. return
  77. end
  78. local header = msg:GetHeader()
  79. local type = header.param1
  80. dump(jsonData, "________handle_MSG_SC_MERIDIAN_GET_INFO"..type)
  81. if type == 0 then --人物
  82. -- 各经络对应等级
  83. self._meridianLvList = jsonData.NGPulseMainLv
  84. -- 各经络各穴位开关状态 0为未激活 1已激活
  85. for i = 1, 5 do
  86. if not self["_mAucPointList_".. i] then
  87. self["_mAucPointList_".. i] = {}
  88. end
  89. self["_mAucPointList_" .. i] = jsonData["NGPulseSubLv" .. i]
  90. end
  91. -- 各经络开关状态
  92. self._meridianOpenList = jsonData.NGPulseState
  93. SLBridge:onLUAEvent(LUA_EVENT_MERIDIAN_DATA_REFRESH)
  94. elseif type == 1 then -- 英雄
  95. self._heroMeridianLvList = jsonData.NGPulseMainLv
  96. for i = 1, 5 do
  97. if not self["_mHeroAucPointList_".. i] then
  98. self["_mHeroAucPointList_".. i] = {}
  99. end
  100. self["_mHeroAucPointList_" .. i] = jsonData["NGPulseSubLv" .. i]
  101. end
  102. self._heroMeridianOpenList = jsonData.NGPulseState
  103. SLBridge:onLUAEvent(LUA_EVENT_HERO_MERIDIAN_DATA_REFRESH)
  104. end
  105. end
  106. function MeridianProxy:handle_MSG_SC_MERIDIAN_INFO_UPDATE(msg)
  107. local jsonData = ParseRawMsgToJson(msg)
  108. if not jsonData then
  109. return
  110. end
  111. local header = msg:GetHeader()
  112. local type = header.param1
  113. dump(jsonData, "_______handle_MSG_SC_MERIDIAN_INFO_UPDATE"..type)
  114. if type == 0 then
  115. -- 各经络对应等级
  116. if jsonData.NGPulseMainLv then
  117. self._meridianLvList = jsonData.NGPulseMainLv
  118. end
  119. -- 各经络各穴位开关状态
  120. for i = 1, 5 do
  121. if jsonData["NGPulseSubLv" .. i] then
  122. self["_mAucPointList_" .. i] = jsonData["NGPulseSubLv" .. i]
  123. end
  124. end
  125. -- 各经络开关状态
  126. if jsonData.NGPulseState then
  127. self._meridianOpenList = jsonData.NGPulseState
  128. end
  129. SLBridge:onLUAEvent(LUA_EVENT_MERIDIAN_DATA_REFRESH)
  130. else
  131. -- 各经络对应等级
  132. if jsonData.NGPulseMainLv then
  133. self._heroMeridianLvList = jsonData.NGPulseMainLv
  134. end
  135. -- 各经络各穴位开关状态
  136. for i = 1, 5 do
  137. if jsonData["NGPulseSubLv" .. i] then
  138. self["_mHeroAucPointList_" .. i] = jsonData["NGPulseSubLv" .. i]
  139. end
  140. end
  141. -- 各经络开关状态
  142. if jsonData.NGPulseState then
  143. self._heroMeridianOpenList = jsonData.NGPulseState
  144. end
  145. SLBridge:onLUAEvent(LUA_EVENT_HERO_MERIDIAN_DATA_REFRESH)
  146. end
  147. end
  148. function MeridianProxy:RegisterMsgHandler()
  149. MeridianProxy.super.RegisterMsgHandler(self)
  150. local msgType = global.MsgType
  151. LuaRegisterMsgHandler(msgType.MSG_SC_MERIDIAN_GET_INFO, handler(self, self.handle_MSG_SC_MERIDIAN_GET_INFO)) -- 初始化经络信息
  152. LuaRegisterMsgHandler(msgType.MSG_SC_MERIDIAN_INFO_UPDATE, handler(self, self.handle_MSG_SC_MERIDIAN_INFO_UPDATE)) -- 刷新经络信息
  153. end
  154. return MeridianProxy