HeroSkinLogic.lua 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. --- 英雄皮肤
  2. local Grid = require("bag.Grid")
  3. local BuyExcel = require("excel.buy").buy
  4. local BagLogic = require("bag.BagLogic")
  5. local HeroSkinExcel = require("excel.present").heroSkin
  6. local SkinExcel = require("excel.skin").skin
  7. local SkinLogic = require("skin.SkinLogic")
  8. local HeadFrameExcel = require("excel.role").headFrame
  9. local RoleHeadLogic = require("role.RoleHeadLogic")
  10. local Msg = require("core.Msg")
  11. local Json = require("common.Json")
  12. local BuyLogic = require("topup.BuyLogic")
  13. local GC_SKIN_QUERY = 54
  14. local function genSkinUnit(human,id)
  15. local cfg = HeroSkinExcel[id]
  16. local buyCfg = BuyExcel[cfg.buyId]
  17. local region = human.region or "CN"
  18. local buyItem = {}
  19. BuyLogic.fontBuyItem(human, buyItem, cfg.buyId)
  20. local skinId = cfg.content[1]
  21. local skinCfg = SkinExcel[skinId]
  22. local attrs = {}
  23. for _,v in pairs(skinCfg.attrs) do
  24. attrs[#attrs + 1] = {
  25. key = v[1],
  26. value = v[2],
  27. }
  28. end
  29. local iconframeId = cfg.content[2]
  30. local iconframeCfg = HeadFrameExcel[iconframeId]
  31. local headNet = {}
  32. headNet.id = iconframeId
  33. headNet.desc = iconframeCfg.desc or ""
  34. headNet.keepTime = iconframeCfg.keepTime
  35. headNet.name = iconframeCfg.name or ""
  36. headNet.camp = iconframeCfg.camp or 0
  37. local len = #iconframeCfg.attrs
  38. headNet.attrs = {}
  39. for i = 1,len do
  40. headNet.attrs[i] = {
  41. key = iconframeCfg.attrs[i][1],
  42. value = iconframeCfg.attrs[i][2],
  43. }
  44. end
  45. return {
  46. id = id,
  47. buyItem = buyItem,
  48. skinData = {
  49. Id = skinId,
  50. attrs = attrs
  51. },
  52. Iconframe = headNet
  53. }
  54. end
  55. -----------------------------------------
  56. function query(human,panelId)
  57. local ret = {}
  58. for id,cfg in pairs(HeroSkinExcel) do
  59. if cfg.panelId == panelId then
  60. ret[#ret+1] = genSkinUnit(human,id)
  61. end
  62. end
  63. return {
  64. list = ret
  65. }
  66. end
  67. function buy(human,buyId)
  68. local skinCfg
  69. for _,cfg in pairs(HeroSkinExcel) do
  70. if cfg.buyId == buyId then
  71. skinCfg = cfg
  72. break
  73. end
  74. end
  75. assert(skinCfg,"invalid buyId")
  76. -- 解锁皮肤和头像
  77. SkinLogic.skinUnlock(human,skinCfg.content[1]) --BagLogic.addItemList(human,skinCfg.content,"skin_buy")
  78. RoleHeadLogic.active(human,RoleHeadLogic.HEAD_TYPE_2,skinCfg.content[2])
  79. --刷新
  80. local data=query(human,skinCfg.panelId)
  81. RefreshClient(human,GC_SKIN_QUERY,data)
  82. end
  83. function RefreshClient(human,type,data)
  84. local msgRet = Msg.gc.GC_ROLE_CHANGE_BASEINFO
  85. msgRet.ret = type
  86. msgRet.tip = Json.Encode(data)
  87. Msg.send(msgRet,human.fd)
  88. end