源战役客户端
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

118 linhas
3.4 KiB

  1. --[[
  2. @ Item
  3. --]]
  4. OptionalItem = OptionalItem or BaseClass(BaseItem)
  5. local OptionalItem = OptionalItem
  6. OptionalItem.Type =
  7. {
  8. EQUIP = 1, --装备道具(显示战力)
  9. LUCKY = 2, --幸运物道具(显示幸运值)
  10. NORMAL = 3, --普通物品(显示数量)
  11. }
  12. function OptionalItem:__init(parent_wnd,prefab_asset,layer_name, item_type)
  13. self.layout_file = "OptionalItem"
  14. self.prefab_asset = UiFactory.getPrefab(UIType.BarsItem)
  15. self.is_delay_callback = true
  16. self.item_type = item_type or OptionalItem.Type.EQUIP
  17. self:Load()
  18. end
  19. function OptionalItem:__delete()
  20. if self.icon_item then
  21. self.icon_item:DeleteMe()
  22. self.icon_item = nil
  23. end
  24. end
  25. function OptionalItem:Load_callback()
  26. self.icon = self:GetChild("icon")
  27. self.name, self.desc = GetChildTexts(self.transform, {"name","desc"})
  28. self.clickBg = self:GetChild("clickBg").gameObject
  29. self.icon_item = AwardItem.New(self.icon, false, self.layer_name)
  30. self.icon_item:SetItemSize(74, 74)
  31. self.icon_item:SetLoadCall(function ()
  32. self.icon_item.stren.alignment = UnityEngine.TextAnchor.MiddleCenter
  33. self.icon_item.stren_prefix = "Lv."
  34. SetAnchoredPosition(self.icon_item.stren.transform, 0, -28)
  35. end)
  36. self:InitEvent()
  37. if self.need_refresh then
  38. self:SetData(self.goods_vo, self.callback)
  39. end
  40. end
  41. function OptionalItem:InitEvent()
  42. local function onBtnClickHandler(target)
  43. if self.callback ~= nil then
  44. self.callback(self.goods_vo)
  45. end
  46. end
  47. AddClickEvent(self.clickBg, onBtnClickHandler, 2)
  48. end
  49. function OptionalItem:SetData(goods_vo, callback)
  50. self.goods_vo = goods_vo
  51. self.callback = callback
  52. if self.is_loaded then
  53. --[[local function callback(dynamic)
  54. print("OptionalItem:SetData() dynamic = ")
  55. PrintTable(dynamic)
  56. end
  57. GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)--]]
  58. local type_id = tonumber(self.goods_vo.type_id)
  59. self.icon_item:SetData(type_id, nil, nil, self.goods_vo.stren)
  60. self.name.text = "<color="..ColorUtil:GetColor(self.goods_vo.color)..">"..Trim(self.goods_vo.goods_name).."</color>"
  61. if self.item_type == OptionalItem.Type.EQUIP then
  62. self.desc.text = "<color=#7B432C>战力:</color>"..self:GetItemFightValue(self.goods_vo)
  63. elseif self.item_type == OptionalItem.Type.LUCKY then
  64. self.desc.text = "<color=#7B432C>幸运值</color>:"..self:GetItemLuckyValue(self.goods_vo)
  65. else
  66. self.desc.text = "<color=#7B432C>数量:</color>"..self:GetItemNum(self.goods_vo)
  67. end
  68. else
  69. self.need_refresh = true
  70. end
  71. end
  72. function OptionalItem:GetItemLuckyValue(goods_vo)
  73. local type_id = tonumber(goods_vo.type_id)
  74. local cur_formula = WingModel:getInstance().cur_formula
  75. if Config.Twingcomposeratio[type_id] and cur_formula then
  76. local grade = cur_formula.grade
  77. local ratio_list = ErlangParser:GetInstance():Parse(Config.Twingcomposeratio[type_id].ratio)
  78. for i, v in ipairs(ratio_list) do
  79. if tonumber(v[1]) == grade then
  80. return v[2]
  81. end
  82. end
  83. return 0
  84. end
  85. end
  86. function OptionalItem:GetItemFightValue(goods_vo)
  87. local type_id = tonumber(goods_vo.type_id)
  88. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
  89. if basic.type == 20 and Config.Twing[type_id] then
  90. return Config.Twing[type_id].power
  91. else
  92. return goods_vo.combat_power
  93. end
  94. end
  95. function OptionalItem:GetItemNum(goods_vo)
  96. local type_id = tonumber(goods_vo.type_id)
  97. local have_num = GoodsModel:getInstance():GetTypeGoodsNum(type_id)
  98. return have_num or 0
  99. end