RankProxy.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. local RemoteProxy = requireProxy("remote/RemoteProxy")
  2. local RankProxy = class("RankProxy", RemoteProxy)
  3. RankProxy.NAME = global.ProxyTable.RankProxy
  4. function RankProxy:ctor()
  5. RankProxy.super.ctor(self)
  6. self.rankData = {}
  7. self._game_data_RankList = nil --cfg_game_data的RankingList
  8. end
  9. function RankProxy:SetListRankData(rankID, data)
  10. self.rankData[rankID] = data
  11. SLBridge:onLUAEvent(LUA_EVENT_RANK_DATA_UPDATE, rankID)
  12. end
  13. function RankProxy:GetRankingPlayers(rankID)
  14. if not rankID or not self.rankData or not next(self.rankData) then
  15. return nil
  16. end
  17. return self.rankData[rankID]
  18. end
  19. --获取cfg_game_data表的RankingList字段的数据
  20. function RankProxy:GetRankListGameData()
  21. if not self._game_data_RankList then
  22. if not self._game_data_RankList then
  23. self._game_data_RankList = {}
  24. end
  25. local rankingList = SL:GetMetaValue("GAME_DATA","RankingList")
  26. if rankingList and string.len(rankingList) > 0 then
  27. local rankListArray = string.split(rankingList, "|")
  28. for i, v in ipairs(rankListArray) do
  29. if v and string.len(v) > 0 then
  30. local valueArray = string.split(v, "#")
  31. if valueArray[1] then
  32. table.insert(self._game_data_RankList, {
  33. RankType = tonumber(valueArray[1]),
  34. BtnName = valueArray[2]
  35. })
  36. end
  37. end
  38. end
  39. end
  40. end
  41. return self._game_data_RankList
  42. end
  43. function RankProxy:RequestListData(rankType)
  44. LuaSendMsg(global.MsgType.MSG_CS_RANK_LIST_DATA_REQUEST, rankType, 0, 0, 0)
  45. end
  46. function RankProxy:RequestPlayerShowData(playerUid, type)
  47. LuaSendMsg(global.MsgType.MSG_CS_RANK_PLAYER_DATA_REQUEST, type, 0, 0, 0, playerUid, string.len(playerUid))
  48. end
  49. function RankProxy:RequestNotifyClickRankType(type)
  50. -- 0玩家 1英雄
  51. type = type - 1
  52. LuaSendMsg(global.MsgType.MSG_CS_CLICK_RANK_TYPE, type)
  53. end
  54. function RankProxy:RequestNotifyClickRankValue(rank)
  55. LuaSendMsg(global.MsgType.MSG_CS_CLICK_RANK_VALUE, rank)
  56. end
  57. function RankProxy:handle_MSG_SC_RANK_LIST_DATA_RESPONSE(msg)
  58. local data = ParseRawMsgToJson(msg)
  59. local header = msg:GetHeader()
  60. if not data or not header then
  61. return
  62. end
  63. local rankID = header.recog
  64. local rankData = data
  65. self:SetListRankData(rankID, rankData)
  66. end
  67. function RankProxy:handle_MSG_SC_RANK_PLAYER_DATA_RESPONSE(msg)
  68. local data = ParseRawMsgToJson(msg)
  69. if not data then
  70. return
  71. end
  72. SLBridge:onLUAEvent(LUA_EVENT_RANK_PLAYER_UPDATE, data)
  73. end
  74. function RankProxy:handle_MSG_SC_CUSTOM_RANK_LIST_DATA_RESPONSE(msg)
  75. local data = ParseRawMsgToJson(msg)
  76. local header = msg:GetHeader()
  77. if not data or not header then
  78. return
  79. end
  80. local rankID = header.recog
  81. local rankData = data
  82. self:SetListRankData(rankID, rankData)
  83. end
  84. function RankProxy:RegisterMsgHandler()
  85. RankProxy.super.RegisterMsgHandler(self)
  86. local msgType = global.MsgType
  87. LuaRegisterMsgHandler(msgType.MSG_SC_RANK_LIST_DATA_RESPONSE, handler(self, self.handle_MSG_SC_RANK_LIST_DATA_RESPONSE))
  88. LuaRegisterMsgHandler(msgType.MSG_SC_RANK_PLAYER_DATA_RESPONSE, handler(self, self.handle_MSG_SC_RANK_PLAYER_DATA_RESPONSE))
  89. LuaRegisterMsgHandler(msgType.MSG_SC_CUSTOM_RANK_LIST_DATA_RESPONSE, handler(self, self.handle_MSG_SC_CUSTOM_RANK_LIST_DATA_RESPONSE))
  90. end
  91. return RankProxy