EquipComposeItemCtr.lua 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. local EquipComposeItemCtr = {}
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. local function RefreshInfo(item, equipCfgData, logicData)
  4. local ownedCoin = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Coin)
  5. local cost = logicData.curForgeCount == 0 and equipCfgData.CostMoney or logicData.curForgeCount * equipCfgData.CostMoney
  6. CommonUtil.IsConditionOutColor(item.cost.text.text, cost > ownedCoin, cost)
  7. item.num.text.text = logicData.curForgeCount
  8. local value = logicData.curForgeCount/logicData.maxForgeCount
  9. item.slider.slider.value = logicData.maxForgeCount == 0 and 0 or value
  10. item.lastValue = item.slider.slider.value
  11. item.btnMinus:SetActive(logicData.curForgeCount > 0 )
  12. item.btnPlus:SetActive(logicData.curForgeCount < logicData.maxForgeCount)
  13. item.isButton = nil
  14. end
  15. function EquipComposeItemCtr:SetData(wnd, item, logicData, enterType, owner, cb)
  16. local cfgId = logicData.cfgId
  17. local num = logicData.num
  18. item.isButton = nil
  19. logicData.maxForgeCount = math.floor(num/3)
  20. logicData.curForgeCount = logicData.maxForgeCount
  21. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  22. local equipCfgData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
  23. -- 道具图标
  24. IconItemCtr:SetData(wnd, item.iconItem, logicData, Enum.ItemIEnterType.EquipForge)
  25. --CommonUtil.BatchCreateItems(wnd, item.source.equipItem, item.source.transform, logicData, Enum.ItemIEnterType.EquipForge)
  26. -- 道具名称
  27. local name = I18N.T(itemCfgData.Name)
  28. if equipCfgData.Forge == 0 then
  29. name = name..I18N.T("MAX")
  30. end
  31. item.itemName.text.text = name
  32. local baseAttrs = {}
  33. for k,v in pairs(Enum.HeroAttrType) do
  34. if equipCfgData[k] and equipCfgData[k] ~= 0 then
  35. table.insert(baseAttrs, {Enum.HeroAttrType[k], equipCfgData[k]})
  36. end
  37. end
  38. CommonUtil.BatchCreateItemsLoopSpawnPrefabNew(wnd, baseAttrs, Enum.PrefabNames.EquipBaseAttrItem, item.propertyGroup.transform)
  39. --
  40. --local index = 0
  41. --for k, v in pairs(baseAttrs) do
  42. -- index = index + 1
  43. -- CommonUtil.BatchCreateItemsLoopWithMould(wnd, item.equipBaseAttrItem, item.propertyGroup.transform, v, index)
  44. --end
  45. item.compositeNumber.txt.text.text = CommonUtil.StringConcat(num, "/3")
  46. if equipCfgData.Forge > 0 then
  47. local forgeItemCfgData = ManagerContainer.CfgMgr:GetItemById(equipCfgData.Forge)
  48. local itemCfgData1 = ManagerContainer.CfgMgr:GetItemById(equipCfgData.Forge)
  49. item.txtItemName.text.text = string.format(Constant.ColorTextArray[itemCfgData1.Quality], I18N.T(forgeItemCfgData.Name))
  50. end
  51. item.maxLv:SetActive(equipCfgData.Forge == 0)
  52. item.bottomBox:SetActive(equipCfgData.Forge > 0)
  53. item.btnCompose:SetActive(equipCfgData.Forge > 0)
  54. local ownedCoin = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Coin)
  55. local canCompose = ownedCoin >= equipCfgData.CostMoney and logicData.maxForgeCount > 0
  56. item.btnCompose.button.interactable = canCompose
  57. --CommonUtil.SetTotalChildrenGray(item.btnCompose, not canCompose)
  58. local maxCount = math.floor(ownedCoin/equipCfgData.CostMoney)
  59. local curCount = math.min(maxCount, logicData.maxForgeCount)
  60. logicData.canForgeCount = maxCount
  61. logicData.maxForgeCount = curCount
  62. logicData.curForgeCount = curCount
  63. wnd.uiBase:AddButtonUniqueEventListener(item.btnMinus.button, wnd, function ()
  64. if logicData.curForgeCount <= 0 then
  65. return
  66. end
  67. if logicData.curForgeCount <= 1 and logicData.maxForgeCount > 1 then
  68. return
  69. end
  70. item.isButton = true
  71. logicData.curForgeCount = logicData.curForgeCount - 1
  72. RefreshInfo(item, equipCfgData, logicData)
  73. end)
  74. wnd.uiBase:AddButtonUniqueEventListener(item.btnPlus.button, wnd, function ()
  75. if logicData.curForgeCount >= logicData.maxForgeCount then
  76. return
  77. end
  78. item.isButton = true
  79. logicData.curForgeCount = logicData.curForgeCount + 1
  80. RefreshInfo(item, equipCfgData, logicData)
  81. end)
  82. wnd.uiBase:AddSliderUniqueEventListener(item.slider.slider, wnd, function (wnd, slider, value)
  83. if ManagerContainer.LuaTimerMgr:IsSomeFrameCount() then
  84. return
  85. end
  86. if item.isButton then
  87. return
  88. end
  89. logicData.curForgeCount = logicData.maxForgeCount * value
  90. logicData.curForgeCount = math.ceil(logicData.curForgeCount)
  91. if logicData.maxForgeCount > 1 and logicData.curForgeCount <= 0 then
  92. logicData.curForgeCount = 1
  93. end
  94. RefreshInfo(item, equipCfgData, logicData)
  95. end, nil)
  96. if canCompose and owner and cb then
  97. wnd.uiBase:AddButtonUniqueEventListener(item.btnCompose.button, owner, cb, logicData)
  98. end
  99. RefreshInfo(item, equipCfgData, logicData)
  100. end
  101. return EquipComposeItemCtr