ProtocalDataNormal.lua 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910
  1. local ProtocalDataNormal = {}
  2. local SkillData = require('SkillData')
  3. --- 协议数据格式化成lua自己的格式(角色用于表现的数据,头发,眼睛,头发颜色,时装)
  4. function ProtocalDataNormal.FashionDataToViewData(serverFashionData)
  5. if serverFashionData == nil then return nil end
  6. local viewData = {}
  7. viewData.eye = serverFashionData.eye
  8. viewData.hairColor = serverFashionData.hair
  9. viewData.hair = serverFashionData.hair_avatar
  10. viewData.fashionData = ProtocalDataNormal.FashionUpDataToData(serverFashionData.fashion_up_list)
  11. return viewData
  12. end
  13. --- 更新表现数据 把newViewData赋值给oldViewData
  14. function ProtocalDataNormal.UpdateViewData(oldViewData, newViewData)
  15. if newViewData.eye then oldViewData.eye = newViewData.eye end
  16. if newViewData.hairColor then oldViewData.hairColor = newViewData.hairColor end
  17. if newViewData.hair then oldViewData.hair = newViewData.hair end
  18. if newViewData.fashionData then oldViewData.fashionData = newViewData.fashionData end
  19. end
  20. --- 协议数据格式化成lua自己的格式(角色身上装备的时装数据)
  21. function ProtocalDataNormal.FashionUpDataToData(fashionUpData)
  22. local fashionData = {}
  23. for _, value in pairs(fashionUpData) do
  24. local fashionCfg = ManagerContainer.CfgMgr:GetFashionById(value)
  25. if fashionCfg then
  26. fashionData[fashionCfg.FashionLocation] = value
  27. end
  28. end
  29. return fashionData
  30. end
  31. function ProtocalDataNormal.ParseFightPowerData(message)
  32. local data = {}
  33. data.totalFightpower = message.total_fightpower
  34. data.slotFightpower = {}
  35. for _,v in pairs(message.slot_fightpower) do
  36. data.slotFightpower[v.key] = v.value
  37. end
  38. return data
  39. end
  40. function ProtocalDataNormal.ParseBattleBoxData(message)
  41. local data = {}
  42. data.id = message.id
  43. data.boxId = message.box_id
  44. data.coolTime = message.cool_time
  45. data.heroCoolList = message.hero_cool_list
  46. data.state = message.state
  47. return data
  48. end
  49. --TASK_REWARD_STATE_NONE = 0 //未完成
  50. --TASK_REWARD_STATE_COMPLETED = 1 //任务完成未领取奖励
  51. --TASK_REWARD_STATE_REWARD = 2 //已经领取奖励
  52. --
  53. --TASK_CONDITION_NONE = 4
  54. --TASK_CONDITION_CHANGE = 5
  55. --TASK_CONDITION_OK = 6
  56. function ProtocalDataNormal.ParseTaskData(message)
  57. local data = {}
  58. data.taskId = message.task_id
  59. data.progress = message.progress
  60. data.state = message.state
  61. data.begin_time = message.beginTime
  62. return data
  63. end
  64. function ProtocalDataNormal.ParseTaskDataList(message)
  65. local list = nil
  66. for k,v in pairs(message) do
  67. if list == nil then
  68. list = {}
  69. end
  70. local data = ProtocalDataNormal.ParseTaskData(v)
  71. list[v.task_id] = data
  72. end
  73. return list
  74. end
  75. function ProtocalDataNormal.ParseRoleTaskData(message)
  76. if message == nil then return nil end
  77. local list = {}
  78. list.condition = {}
  79. for k,v in pairs(message.condition) do
  80. local taskList = ProtocalDataNormal.ParseTaskDataList(v.task_list)
  81. list.condition[v.hero_id] = taskList
  82. end
  83. return list
  84. end
  85. function ProtocalDataNormal.ParseHeroData(heroData, userData, isMainRole, isRole)
  86. local baseAttr = SInt.Convert(GlobalConfig.Instance:GetConfigIntValue(GlobalConfig.c_base_attr_id))
  87. local data = {}
  88. data.id = heroData.id
  89. data.configId = heroData.config_id
  90. data.avatar = heroData.avatar
  91. data.isBattle = heroData.is_battle
  92. data.headFrame = heroData.headFrame
  93. data.baseLevel = heroData.base_level
  94. data.fightPower = heroData.fight_power
  95. data.skillData = SkillData:new()
  96. data.skillData:InitData(heroData.skill)
  97. data.slot = heroData.slot
  98. data.advanceLevel = heroData.advance_level or 0
  99. data.strengthLevel = heroData.strength_level or 0
  100. data.titleId = heroData.head_id
  101. data.owned = true --查看别人的信息需要用到的字段,服务器发过来的队友都是获得的
  102. data.attrs = {[Enum.HeroAttrType.STR] = baseAttr, [Enum.HeroAttrType.AGI] = baseAttr, [Enum.HeroAttrType.INT] = baseAttr,
  103. [Enum.HeroAttrType.DEX] = baseAttr, [Enum.HeroAttrType.VIT] = baseAttr, [Enum.HeroAttrType.LUK] = baseAttr}
  104. if userData ~= nil then
  105. userData.roleCfgId = CommonUtil.JobIdToRoleId(data.configId, userData.gender)
  106. else
  107. data.post = ManagerContainer.CfgMgr:GetPartnerDataById(data.configId).PostId
  108. end
  109. data.buffs = {}
  110. if heroData.slot ~= nil and #heroData.slot.slot_list > 0 then
  111. for k,v in pairs(heroData.slot.slot_list) do
  112. if #v.card_id_list > 0 then
  113. for _,v1 in pairs(v.card_id_list) do
  114. if v1 > 0 then
  115. local cardData = ManagerContainer.CfgMgr:GetCardDataById(v1)
  116. if cardData.BUFF and #cardData.BUFF > 0 then
  117. data.buffs[#data.buffs + 1] = cardData.BUFF
  118. end
  119. end
  120. end
  121. end
  122. end
  123. end
  124. data.attrList = clone(heroData.attr_list)
  125. for _,v in pairs(data.attrList) do
  126. v.value = SInt.Convert(v.value)
  127. end
  128. data.attrPoint = SInt.Convert(heroData.attr_point)
  129. data.isMainRole = isMainRole
  130. data.isRole = isRole
  131. data.battlePetId = heroData.battle_pet_id
  132. data.petFightPower = heroData.pet_fight_power or 0
  133. data.battle_attr_list = heroData.battle_attr_list
  134. data.skillEquipSlot = ProtocalDataNormal.ParseSkillEquipSlotData(data.skillEquipSlot, heroData.skill_equip_slot)
  135. data.petQiyueData = ProtocalDataNormal.ParsePetQiyueData(data.petQiyueData, heroData.pet_qiyue_data)
  136. return data
  137. end
  138. function ProtocalDataNormal.ParsePlayerBriefInfo(briefInfoMessage, userData)
  139. if userData == nil then userData = {} end
  140. if briefInfoMessage then
  141. userData.uid = briefInfoMessage.uid
  142. userData.nickName = CommonUtil.GetVaildNickName(briefInfoMessage.nick_name)
  143. userData.headPortraitId = briefInfoMessage.img_id
  144. userData.gender = briefInfoMessage.gender == 0 and 1 or briefInfoMessage.gender
  145. userData.level = briefInfoMessage.level
  146. userData.configId = briefInfoMessage.config_id
  147. userData.fightPower = briefInfoMessage.fight_power
  148. userData.onlineState = briefInfoMessage.online_state
  149. userData.onlineTime = briefInfoMessage.online_time
  150. userData.towerLevel = briefInfoMessage.tower_level
  151. userData.towerTime = briefInfoMessage.tower_time
  152. userData.headFrame = briefInfoMessage.head_frame_id
  153. userData.vipLv = briefInfoMessage.vip_level
  154. userData.headPortraitName = CommonUtil.GetPlayerHeadIcon(briefInfoMessage)
  155. userData.hundredDojoSlogan = briefInfoMessage.daochang100_tips
  156. userData.roleCfgId = CommonUtil.JobIdToRoleId(userData.configId, userData.gender)
  157. userData.selectZone = briefInfoMessage.select_zone
  158. userData.titleId = briefInfoMessage.head_id
  159. end
  160. return userData
  161. end
  162. function ProtocalDataNormal.ParseRobotHeroData(id, configId, robotCfgData, isMainRole, isRole)
  163. local baseAttr = SInt.Convert(GlobalConfig.Instance:GetConfigIntValue(GlobalConfig.c_base_attr_id))
  164. local data = {}
  165. data.id = id
  166. data.configId = configId
  167. data.avatar = robotCfgData.RobotAvatar
  168. data.isBattle = true
  169. data.baseLevel = id == 1 and robotCfgData.RobotLevel or robotCfgData.PartnerLevel[id - 1]
  170. data.attrs = {[Enum.HeroAttrType.STR] = baseAttr, [Enum.HeroAttrType.AGI] = baseAttr, [Enum.HeroAttrType.INT] = baseAttr,
  171. [Enum.HeroAttrType.DEX] = baseAttr, [Enum.HeroAttrType.VIT] = baseAttr, [Enum.HeroAttrType.LUK] = baseAttr}
  172. data.strengthLevel = 0
  173. if id > 1 then
  174. data.advanceLevel = 0
  175. end
  176. data.skills = {}
  177. -- 和真实玩家一样,对齐技能格式
  178. local unlockSkillList = {}
  179. local skillList = {}
  180. local skill = {job_skill_list = {{unlock_skill_list = unlockSkillList}}, skill_list = skillList}
  181. if id == 1 then
  182. for k,v in pairs(robotCfgData.RobotSkill) do
  183. local skillId = GetMathInteger(v,1000)
  184. local skillLv = GetMathRemainder(v,1000)
  185. skillList[#skillList + 1] = {skill_id = skillId, unlock = 1}
  186. unlockSkillList[#unlockSkillList + 1] = {key = skillId, value = skillLv}
  187. end
  188. else
  189. for k,v in pairs(robotCfgData.PartnerSkill[id - 1]) do
  190. local skillId = GetMathInteger(v,1000)
  191. local skillLv = GetMathRemainder(v,1000)
  192. skillList[#skillList + 1] = {skill_id = skillId, unlock = 1}
  193. unlockSkillList[#unlockSkillList + 1] = {key = skillId, value = skillLv}
  194. end
  195. end
  196. data.skillData = SkillData:new()
  197. data.skillData:InitData(skill)
  198. data.slot = {}
  199. data.slot.hero_id = id
  200. data.slot.slot_list = {}
  201. if id == 1 then
  202. for i = 1,6 do
  203. local data1 = {}
  204. data1.level = 0
  205. data1.equip_id = robotCfgData.RobotEquip[i]
  206. data1.card_id_list = {}
  207. data.slot.slot_list[i] = data1
  208. end
  209. else
  210. for k,v in pairs(robotCfgData.PartnerEquip[id - 1]) do
  211. local data1 = {}
  212. data1.level = 0
  213. data1.equip_id = v
  214. data1.card_id_list = {}
  215. data.slot.slot_list[k] = data1
  216. end
  217. end
  218. data.buffs = {}
  219. data.isMainRole = isMainRole or false
  220. data.isRole = isRole or false
  221. data.battlePetId = 0
  222. data.skillEquipSlot = nil
  223. return data
  224. end
  225. function ProtocalDataNormal.ParseMailContentData(message)
  226. local data = {}
  227. data.id = message.id
  228. data.configId = message.config_id
  229. data.type = message.type
  230. data.rewardList = message.reward_list
  231. data.beginTime = message.begin_time
  232. data.expireTime = message.expire_time
  233. data.state = message.state
  234. data.paramList = message.param_list
  235. data.title = message.title
  236. data.content = message.content
  237. return data
  238. end
  239. function ProtocalDataNormal.ParseWorldBossContentInfoData(message)
  240. if not message then return nil end
  241. local data = {}
  242. data.cfgId = message.cfg_id
  243. data.bossId = message.boss_id
  244. data.bossSummonIdx = message.boss_summon_idx
  245. data.boss_summon_type = message.boss_summon_type
  246. data.brief = ProtocalDataNormal.ParsePlayerBriefInfo(message.brief)
  247. data.fighterNum = message.fighter_num
  248. data.expireTime = message.expire_time
  249. data.nextTime = message.next_refresh_time
  250. data.totalHp = message.total_hp
  251. data.curHp = message.cur_hp
  252. data.isFight = message.is_fight
  253. return data
  254. end
  255. function ProtocalDataNormal.ParseWorldBossRandPointInfoData(message)
  256. if not message then return nil end
  257. local data = {}
  258. data.rewardList = message.reward_list
  259. data.bossId = message.boss_id
  260. data.bossSummonIdx = message.boss_summon_idx
  261. return data
  262. end
  263. -- 赛季解析
  264. function ProtocalDataNormal.ParseCompetitionRewardInfo(message)
  265. if not message then return end
  266. local data = {}
  267. data.rewardIdx = message.reward_idx
  268. data.rewardEndTme = message.reward_end_tme
  269. data.paramList = message.param_list
  270. return data
  271. end
  272. function ProtocalDataNormal.ParseCompetitionData(message)
  273. if not message then return nil end
  274. local data = {}
  275. data.competitionId = message.competition_id
  276. data.curEndTime = message.cur_end_time
  277. data.comParam = message.com_param
  278. data.nextComScore = message.next_com_score
  279. data.lastComScore = message.last_com_score
  280. data.comParamAddTime = message.com_param_add_time
  281. data.selfRank = message.self_rank
  282. data.totalRank = message.total_rank
  283. data.rewardInfoList = {}
  284. for _,v in pairs(message.reward_info_list) do
  285. local data1 = ProtocalDataNormal.ParseCompetitionRewardInfo(v)
  286. data.rewardInfoList[data1.rewardIdx] = data1
  287. end
  288. if data.rewardInfoList[3] and not data.rewardInfoList[1] then
  289. local data1 = clone(data.rewardInfoList[3])
  290. data1.rewardIdx = 1
  291. data1.rewardEndTme = data1.rewardEndTme - 2 * ManagerContainer.LuaTimerMgr:GetOneDaySeconds()*2000
  292. data.rewardInfoList[1] = data1
  293. end
  294. if data.rewardInfoList[1] and not data.rewardInfoList[2] then
  295. local data1 = clone(data.rewardInfoList[1])
  296. data1.rewardIdx = 2
  297. data1.rewardEndTme = data1.rewardEndTme + ManagerContainer.LuaTimerMgr:GetOneDaySeconds()*2000
  298. data.rewardInfoList[2] = data1
  299. end
  300. if data.rewardInfoList[2] and not data.rewardInfoList[3] then
  301. local data1 = clone(data.rewardInfoList[2])
  302. data1.rewardIdx = 3
  303. data1.rewardEndTme = data1.rewardEndTme + ManagerContainer.LuaTimerMgr:GetOneDaySeconds()*2000
  304. data.rewardInfoList[3] = data1
  305. end
  306. if data.rewardInfoList[3] and not data.rewardInfoList[1] then
  307. local data1 = clone(data.rewardInfoList[3])
  308. data1.rewardIdx = 1
  309. data1.rewardEndTme = data1.rewardEndTme - 2 * ManagerContainer.LuaTimerMgr:GetOneDaySeconds()*2000
  310. data.rewardInfoList[1] = data1
  311. end
  312. return data
  313. end
  314. function ProtocalDataNormal.ParseArenaRankInfo(message)
  315. local data = {}
  316. data.rank = message.rank
  317. data.briefInfo = ProtocalDataNormal.ParsePlayerBriefInfo(message.brief_info)
  318. data.score = message.score
  319. return data
  320. end
  321. function ProtocalDataNormal.ParseSeasonData(message)
  322. local data = {}
  323. data.competitionData = ProtocalDataNormal.ParseCompetitionData(message.competition_data)
  324. data.rankList = {}
  325. for _,v in pairs(message.rank_list) do
  326. data.rankList[#data.rankList + 1] = ProtocalDataNormal.ParseArenaRankInfo(v)
  327. end
  328. data.nextCompetitionTime = message.next_competition_time
  329. return data
  330. end
  331. function ProtocalDataNormal.ParseChatMessageInfo(message)
  332. if message == nil then return end
  333. local data = {}
  334. data.message = message.message
  335. local time = message.send_time/1000
  336. data.sendTime = time
  337. data.sendTime64 = message.send_time
  338. data.subType = message.sub_type
  339. data.used = false
  340. return data
  341. end
  342. function ProtocalDataNormal.ParseChatPlayerBriefInfo(message)
  343. local data = {}
  344. data.uid = tostring(message.uid)
  345. data.nickname = message.nick_name
  346. data.imgId = CommonUtil.GetPlayerHeadIcon(message)
  347. data.jobId = message.config_id
  348. data.level = message.level
  349. data.headFrameId = message.head_frame_id
  350. data.sex = message.gender
  351. data.vipLv = message.vip_level
  352. data.titleId = message.head_id
  353. return data
  354. end
  355. function ProtocalDataNormal.ParseChatData(message)
  356. if message == nil then return end
  357. local data = {}
  358. data.type = message.type
  359. data.message = ProtocalDataNormal.ParseChatMessageInfo(message.message)
  360. data.targetId = tostring(message.target_id)
  361. data.fromData = ProtocalDataNormal.ParseChatPlayerBriefInfo(message.from_id)
  362. return data
  363. end
  364. function ProtocalDataNormal.ParseSystemMessageData(message)
  365. if message == nil then return end
  366. local data = {}
  367. data.type = message.type
  368. data.nickname = message.nick_name
  369. data.paramIds = message.param_id
  370. local time = message.send_time/1000
  371. data.sendTime = time
  372. data.sendTime64 = message.send_time
  373. return data
  374. end
  375. function ProtocalDataNormal.ParseGMNoticeData(message)
  376. if message == nil then return end
  377. local data = {}
  378. data.content = message.notice_color;
  379. data.speed = message.notice_speed;
  380. data.count = message.notice_count;
  381. data.interval = message.notice_interval;
  382. return data
  383. end
  384. function ProtocalDataNormal.ParseCardHandBook(message)
  385. if message == nil then return end
  386. local data = {}
  387. data.cardId = message.card_id;
  388. data.cardLevel = message.card_level;
  389. data.rewardRec = message.reward_rec;
  390. return data
  391. end
  392. function ProtocalDataNormal.ParsePetSkillData(message)
  393. if message == nil then return end
  394. local data = {}
  395. data.cfgId = message.config_id;
  396. data.level = message.level;
  397. data.rate = message.rate;
  398. return data
  399. end
  400. function ProtocalDataNormal.ParsePetData(message, data)
  401. if message == nil then return end
  402. if not data then
  403. data = {}
  404. end
  405. data.id = message.id;
  406. data.cfgId = message.config_id;
  407. data.level = message.level;
  408. data.advanceLevel = message.advance_level;
  409. data.heroId = message.hero_id;
  410. data.isBattle = data.heroId > 0
  411. data.isRelevant = false
  412. data.isSupport = false
  413. data.totalFightPower = 0
  414. data.pet_svrfight_power = message.pet_fight_power
  415. data.battle_attr_list = message.battle_attr_list
  416. data.skillList = {}
  417. data.totalSkillUpCount = 0
  418. for _,v in pairs(message.skill_list) do
  419. local skillData = ProtocalDataNormal.ParsePetSkillData(v)
  420. data.skillList[#data.skillList + 1] = skillData
  421. data.totalSkillUpCount = data.totalSkillUpCount + (skillData.level - 1)
  422. end
  423. local cfgData = ManagerContainer.CfgMgr:GetPetDataById(data.cfgId)
  424. data.quality = cfgData.Quality
  425. data.natureType = cfgData.NatureType
  426. data.slots = {}
  427. if message.slot_equip_list then
  428. for i = 1, #message.slot_equip_list do
  429. local slotData = message.slot_equip_list[i]
  430. data.slots[slotData.idx] = {idx = slotData.idx, stampId = slotData.equip_id, stoneIdList = slotData.stone_id_list}
  431. end
  432. end
  433. data.qiyueHeroId = message.qiyue_hero_id
  434. return data
  435. end
  436. function ProtocalDataNormal.ParsePetBondPosData(message)
  437. if message == nil then return end
  438. local data = {}
  439. data.uid = message.owner_uid;
  440. data.petId = message.pet_id;
  441. data.cfgId = message.pet_cfg_id;
  442. data.advanceLevel = message.advance_level
  443. return data
  444. end
  445. function ProtocalDataNormal.ParsePetBondData(message)
  446. if message == nil then return end
  447. local data = {}
  448. data.cfgId = message.bond_cfg_id;
  449. data.relationPets = {}
  450. for _,v in pairs(message.bond_list) do
  451. data.relationPets[#data.relationPets + 1] = ProtocalDataNormal.ParsePetBondPosData(v)
  452. end
  453. return data
  454. end
  455. function ProtocalDataNormal.ParseAssistData(message)
  456. if message == nil then return end
  457. local data = {}
  458. data.uid = message.owner_uid;
  459. data.nickname = message.owner_nick_name
  460. data.supportPets = {}
  461. for _,v in pairs(message.pet_info_list) do
  462. data.supportPets[#data.supportPets + 1] = ProtocalDataNormal.ParsePetData(v)
  463. end
  464. return data
  465. end
  466. function ProtocalDataNormal.ParseCurRoundSign(message)
  467. if message == nil then return end
  468. local data = {}
  469. data.lastSign = message.last_sign;
  470. return data
  471. end
  472. function ProtocalDataNormal.ParseSignUp(message)
  473. if message == nil then return end
  474. local data = {}
  475. data.curDay = message.cur_day;
  476. data.curSignInfo = ProtocalDataNormal.ParseCurRoundSign(message.cur_sign_info);
  477. return data
  478. end
  479. function ProtocalDataNormal.ParseSignInfo(message)
  480. if message == nil then return end
  481. local data = {}
  482. data.signUp = ProtocalDataNormal.ParseSignUp(message.sign_info);
  483. data.curSignDay = message.cur_sign_day;
  484. data.nextSignTime = message.next_sign_time;
  485. return data
  486. end
  487. function ProtocalDataNormal.ParseInvitationTaskData(message)
  488. if message == nil then return end
  489. local data = {}
  490. data.taskId = message.task_id;
  491. data.progress = message.progress;
  492. data.rewardedCount = message.rewarded_count;
  493. data.rewardCount = message.reward_count ;
  494. data.completeMaxCount = message.complete_max_count
  495. data.state = Enum.InvitationTaskStateType.NoCompeleted
  496. if data.rewardedCount == data.rewardCount and data.rewardCount < data.completeMaxCount then
  497. elseif data.rewardedCount < data.rewardCount then
  498. data.state = Enum.InvitationTaskStateType.CompletedAndNoReceive
  499. elseif data.rewardedCount == data.rewardCount and data.rewardCount == data.completeMaxCount then
  500. data.state = Enum.InvitationTaskStateType.Received
  501. end
  502. return data
  503. end
  504. function ProtocalDataNormal.ParseInvitationLogData(message)
  505. if message == nil then return end
  506. local data = {}
  507. data.memberNickName = message.member_nick_name;
  508. data.processTime = message.process_time;
  509. data.resVal = message.res_val;
  510. return data
  511. end
  512. function ProtocalDataNormal.ParseInvitationMemberValData(message)
  513. if message == nil then return end
  514. local data = {}
  515. data.uid = message.uid;
  516. data.resVal = message.res_val;
  517. return data
  518. end
  519. function ProtocalDataNormal.ParseRoleInvitation(message)
  520. if message == nil then return end
  521. local data = {}
  522. data.clickNum = message.click_num;
  523. data.selfInvitationNumber = message.self_invitation_number;
  524. data.masterUid = message.master_uid;
  525. data.masterEndTime = message.master_end_time ;
  526. data.clickMemberList = message.click_member_list
  527. data.taskList = {}
  528. if message.task_list then
  529. for i = 1, #message.task_list do
  530. local task = ProtocalDataNormal.ParseInvitationTaskData(message.task_list[i])
  531. --table.insert(data.taskList, task)
  532. data.taskList[task.taskId] = task
  533. end
  534. end
  535. data.memberUidList = {}
  536. if message.member_uid_list then
  537. for i = 1, #message.member_uid_list do
  538. local data1 = ProtocalDataNormal.ParseInvitationMemberValData(message.member_uid_list[i])
  539. table.insert(data.memberUidList, data1)
  540. --data.memberUidList[data1.uid] = data1
  541. end
  542. end
  543. data.logList = {}
  544. if message.log_list then
  545. for i = 1, #message.log_list do
  546. local log = ProtocalDataNormal.ParseInvitationLogData(message.log_list[i])
  547. table.insert(data.logList, log)
  548. end
  549. end
  550. data.clickReplayMasterList = message.click_replay_master_list
  551. return data
  552. end
  553. function ProtocalDataNormal.ParseCommonPlayerBriefInfo(message)
  554. if not message then return end
  555. local data = {}
  556. data.uid = message.uid
  557. data.nickName = CommonUtil.GetVaildNickName(message.nick_name)
  558. data.headPortraitId = message.img_id
  559. data.gender = message.gender
  560. data.level = message.level
  561. data.configId = message.config_id
  562. data.fightPower = message.fight_power
  563. data.onlineState = message.online_state
  564. data.onlineTime = message.online_time
  565. data.towerLevel = message.tower_level
  566. data.towerTime = message.tower_time
  567. data.mapLevelId = message.map_level_id
  568. data.battleRecordId = message.battle_record_id
  569. data.headFrame = message.head_frame_id
  570. data.playerHead = CommonUtil.GetPlayerHeadIcon(message)
  571. data.vipLv = message.vip_level
  572. data.selectZone = message.select_zone
  573. return data
  574. end
  575. function ProtocalDataNormal.RushActivityData(message)
  576. if not message then return end
  577. local data = {}
  578. data.rushType = message.rush_type
  579. data.inRush = message.in_rush
  580. data.nextRush = message.next_rush
  581. data.stage = message.stage
  582. data.stageEnd = message.stage_end
  583. data.rushCount = message.rush_count
  584. return data
  585. end
  586. function ProtocalDataNormal.ParseTowerActivityData(message)
  587. if not message then return end
  588. local data = {}
  589. data.fightCount = message.fight_count
  590. data.selfRank = message.self_rank
  591. data.selfLevel = message.self_level
  592. data.endTime = message.end_time
  593. data.challengReward = message.challeng_reward
  594. data.rankReward = message.rank_reward
  595. data.rushLevel = message.rush_level
  596. data.topData = {}
  597. if message.top_data then
  598. table.sort(message.top_data, function (a,b)
  599. return a.rank < b.rank
  600. end)
  601. for i = 1,#message.top_data do
  602. local data1 = {}
  603. data1.name = message.top_data[i].name
  604. data1.data = message.top_data[i].data
  605. data1.rank = message.top_data[i].rank
  606. data.topData[#data.topData + 1] = data1
  607. end
  608. end
  609. return data
  610. end
  611. function ProtocalDataNormal.ParseArenaActivityData(message)
  612. if not message then return end
  613. local data = {}
  614. data.fightCount = message.fight_count
  615. data.selfRank = message.self_rank
  616. data.selfLevel = message.self_level
  617. data.endTime = message.end_time
  618. data.challengReward = message.challeng_reward
  619. data.rankReward = message.rank_reward
  620. data.topData = {}
  621. if message.top_data then
  622. table.sort(message.top_data, function (a,b)
  623. return a.rank < b.rank
  624. end)
  625. for i = 1,#message.top_data do
  626. local data1 = {}
  627. data1.name = message.top_data[i].name
  628. data1.data = message.top_data[i].data
  629. data1.rank = message.top_data[i].rank
  630. data.topData[#data.topData + 1] = data1
  631. end
  632. end
  633. return data
  634. end
  635. function ProtocalDataNormal.ParseRushPetInfoData(message)
  636. if not message then return end
  637. local data = {}
  638. if message then
  639. for i = 1,#message do
  640. local data1 = {}
  641. data1.petCfgId = message[i].pet_config_id
  642. data1.petScore = message[i].pet_score
  643. data1.petLevel = message[i].pet_level
  644. data1.totalSkillLevel = message[i].total_skill_level
  645. data1.qualityScore = message[i].quality_score
  646. data1.levelScore = message[i].level_score
  647. data1.skillScore = message[i].skill_score
  648. data[#data + 1] = data1
  649. end
  650. end
  651. return data
  652. end
  653. function ProtocalDataNormal.ParsePetActivityData(message)
  654. if not message then return end
  655. local data = {}
  656. data.selfScore = message.self_score
  657. data.selfRank = message.self_rank
  658. data.endTime = message.end_time
  659. data.challengReward = message.challeng_reward
  660. data.rankReward = message.rank_reward
  661. data.topData = {}
  662. local defaultData = {
  663. name = "NoneRank",
  664. totalScore = 0,
  665. info = {},
  666. rank = 1,
  667. }
  668. for i = 1, 51 do
  669. local data1 = clone(defaultData)
  670. data1.rank = i
  671. data.topData[i] = data1
  672. end
  673. if message.top_data then
  674. table.sort(message.top_data, function (a,b)
  675. return a.rank < b.rank
  676. end)
  677. for i = 1,#message.top_data do
  678. local data1 = {}
  679. data1.name = message.top_data[i].name
  680. data1.totalScore = message.top_data[i].total_score
  681. if message.top_data[i].pet_info then
  682. data1.info = ProtocalDataNormal.ParseRushPetInfoData(message.top_data[i].pet_info.info)
  683. else
  684. data1.info = {}
  685. end
  686. data1.rank = message.top_data[i].rank
  687. data.topData[data1.rank] = data1
  688. end
  689. end
  690. return data
  691. end
  692. function ProtocalDataNormal.ParseSkillActivityData(message)
  693. if not message then return end
  694. local data = {}
  695. data.fightCount = message.self_level
  696. data.selfLevel = message.self_level
  697. data.selfRank = message.self_rank
  698. data.endTime = message.end_time
  699. data.challengReward = message.challeng_reward
  700. data.rankReward = message.rank_reward
  701. data.topData = {}
  702. local defaultData = {
  703. name = "NoneRank",
  704. data = 0,
  705. rank = 1,
  706. }
  707. for i = 1, 51 do
  708. local data1 = clone(defaultData)
  709. data1.rank = i
  710. data.topData[i] = data1
  711. end
  712. if message.top_data then
  713. table.sort(message.top_data, function (a,b)
  714. return a.rank < b.rank
  715. end)
  716. for i = 1,#message.top_data do
  717. local data1 = {}
  718. data1.name = message.top_data[i].name
  719. data1.data = message.top_data[i].data
  720. data1.rank = message.top_data[i].rank
  721. data.topData[data1.rank] = data1
  722. end
  723. end
  724. return data
  725. end
  726. function ProtocalDataNormal.ParseKeepSakeData(message)
  727. if not message then return end
  728. local data = {}
  729. if message then
  730. for i = 1,#message do
  731. local data1 = {}
  732. data1.keepSakeId = message[i].keep_sake_id
  733. data1.keepSakeLevel = message[i].keep_sake_level
  734. data[#data + 1] = data1
  735. end
  736. end
  737. return data
  738. end
  739. function ProtocalDataNormal.ParseSkillEquipData(message)
  740. local data = {}
  741. data.id = message.id
  742. data.cfgId = message.config_id
  743. data.starLv = message.star_level
  744. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(data.cfgId)
  745. data.maxStarLv = cfgData.ArtifactMaxLevel
  746. data.quality = cfgData.Quality
  747. data.jobType = cfgData.JobType
  748. data.jobBranch = cfgData.JobBranch
  749. data.jobStage = cfgData.JobStage
  750. data.reforgeSelected = false
  751. return data
  752. end
  753. function ProtocalDataNormal.ParseSkillEquipSlotData(skillEquipSlot, message)
  754. if not skillEquipSlot then
  755. skillEquipSlot = {}
  756. end
  757. skillEquipSlot.heroId = message and message.hero_id or 0
  758. if not skillEquipSlot.slotList then
  759. skillEquipSlot.slotList = {}
  760. end
  761. if not message then
  762. return skillEquipSlot
  763. end
  764. for i = 1 , #message.slot_list do
  765. local v = message.slot_list[i]
  766. local data1 = skillEquipSlot.slotList[i]
  767. if not data1 then
  768. data1 = {}
  769. skillEquipSlot.slotList[i] = data1
  770. end
  771. data1.id = v.skill_equip_id
  772. data1.cfgId = v.skill_equip_config_id
  773. data1.starLv = v.skill_equip_star_level
  774. data1.slotLv = v.slot_level
  775. data1.slotAttrs = {}
  776. for _,v1 in pairs(v.slot_attrs) do
  777. data1.slotAttrs[v1.key] = v1.value
  778. end
  779. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(data1.cfgId)
  780. data1.maxStarLv = cfgData and cfgData.ArtifactMaxLevel or 0
  781. data1.quality = cfgData and cfgData.Quality or 0
  782. data1.jobType = cfgData and cfgData.JobType or 0
  783. end
  784. return skillEquipSlot
  785. end
  786. function ProtocalDataNormal.ParsePetQiyueData(petQiyueData, message)
  787. if not petQiyueData then
  788. petQiyueData = {}
  789. end
  790. petQiyueData.petId = message and message.pet_id or 0
  791. if not petQiyueData.slotList then
  792. petQiyueData.slotList = {}
  793. end
  794. if not message then
  795. return petQiyueData
  796. end
  797. for i = 1 , #message.qiyue_slot_list do
  798. local v = message.qiyue_slot_list[i]
  799. local data1 = petQiyueData.slotList[i]
  800. if not data1 then
  801. data1 = {}
  802. petQiyueData.slotList[i] = data1
  803. end
  804. data1.slotIdx = v.slot_idx
  805. data1.petId = v.pet_id
  806. data1.petCfgId = v.pet_cfg_id
  807. end
  808. return petQiyueData
  809. end
  810. return ProtocalDataNormal