HeroSkinLogic.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 GC_SKIN_QUERY = 14
  12. local function genSkinUnit(human,id)
  13. local cfg = HeroSkinExcel[id]
  14. local buyCfg = BuyExcel[cfg.buyId]
  15. local region = human.region or "THA"
  16. local buyItem = {
  17. buyID = cfg.buyId,
  18. region = region,
  19. cost = buyCfg[region],
  20. icon = buyCfg.icon,
  21. name = buyCfg.name,
  22. desc = buyCfg.desc,
  23. yuanjia = buyCfg.oCN,
  24. zhekou = buyCfg.zhekou,
  25. ttl = cfg.ttl,
  26. }
  27. local skinId = cfg.content[1]
  28. local skinCfg = SkinExcel[skinId]
  29. local attrs = {}
  30. for _,v in pairs(skinCfg.attrs) do
  31. attrs[#attrs + 1] = {
  32. key = v[1],
  33. value = v[2],
  34. }
  35. end
  36. local iconframeId = cfg.content[2]
  37. local iconframeCfg = HeadFrameExcel[iconframeId]
  38. local headNet = {}
  39. headNet.id = iconframeId
  40. headNet.desc = iconframeCfg.desc or ""
  41. headNet.keepTime = iconframeCfg.keepTime
  42. headNet.name = iconframeCfg.name or ""
  43. headNet.camp = iconframeCfg.camp or 0
  44. local len = #iconframeCfg.attrs
  45. headNet.attrs = {}
  46. for i = 1,len do
  47. headNet.attrs[i] = {
  48. key = iconframeCfg.attrs[i][1],
  49. value = iconframeCfg.attrs[i][2],
  50. }
  51. end
  52. return {
  53. id = id,
  54. buyItem = buyItem,
  55. skinData = {
  56. Id = skinId,
  57. attrs = attrs
  58. },
  59. Iconframe = headNet
  60. }
  61. end
  62. -----------------------------------------
  63. function query(human,panelId)
  64. local ret = {}
  65. for id,cfg in pairs(HeroSkinExcel) do
  66. if cfg.panelId == panelId then
  67. ret[#ret+1] = genSkinUnit(human,id)
  68. end
  69. end
  70. return {
  71. list = ret
  72. }
  73. end
  74. function buy(human,buyId)
  75. local skinCfg
  76. for _,cfg in pairs(HeroSkinExcel) do
  77. if cfg.buyId == buyId then
  78. skinCfg = cfg
  79. break
  80. end
  81. end
  82. assert(skinCfg,"invalid buyId")
  83. -- 解锁皮肤和头像
  84. SkinLogic.skinUnlock(human,skinCfg.content[1]) --BagLogic.addItemList(human,skinCfg.content,"skin_buy")
  85. RoleHeadLogic.active(human,RoleHeadLogic.HEAD_TYPE_2,skinCfg.content[2])
  86. --刷新
  87. RefreshClient(human,GC_SKIN_QUERY,skinCfg.panelId)
  88. end
  89. function RefreshClient(human,type,data)
  90. local msgRet = Msg.gc.GC_ROLE_CHANGE_BASEINFO
  91. msgRet.ret = type
  92. msgRet.tip = Json.Encode(data)
  93. Msg.send(msgRet,human.fd)
  94. end