HeroSkinLogic.lua 2.4 KB

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