HeroSkinLogic.lua 2.8 KB

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