--[[ @ 道具选择面板中的可选择Item --]] OptionalItem = OptionalItem or BaseClass(BaseItem) local OptionalItem = OptionalItem OptionalItem.Type = { EQUIP = 1, --装备道具(显示战力) LUCKY = 2, --幸运物道具(显示幸运值) NORMAL = 3, --普通物品(显示数量) } function OptionalItem:__init(parent_wnd,prefab_asset,layer_name, item_type) self.layout_file = "OptionalItem" self.prefab_asset = UiFactory.getPrefab(UIType.BarsItem) self.is_delay_callback = true self.item_type = item_type or OptionalItem.Type.EQUIP self:Load() end function OptionalItem:__delete() if self.icon_item then self.icon_item:DeleteMe() self.icon_item = nil end end function OptionalItem:Load_callback() self.icon = self:GetChild("icon") self.name, self.desc = GetChildTexts(self.transform, {"name","desc"}) self.clickBg = self:GetChild("clickBg").gameObject self.icon_item = AwardItem.New(self.icon, false, self.layer_name) self.icon_item:SetItemSize(74, 74) self.icon_item:SetLoadCall(function () self.icon_item.stren.alignment = UnityEngine.TextAnchor.MiddleCenter self.icon_item.stren_prefix = "Lv." SetAnchoredPosition(self.icon_item.stren.transform, 0, -28) end) self:InitEvent() if self.need_refresh then self:SetData(self.goods_vo, self.callback) end end function OptionalItem:InitEvent() local function onBtnClickHandler(target) if self.callback ~= nil then self.callback(self.goods_vo) end end AddClickEvent(self.clickBg, onBtnClickHandler, 2) end function OptionalItem:SetData(goods_vo, callback) self.goods_vo = goods_vo self.callback = callback if self.is_loaded then --[[local function callback(dynamic) print("OptionalItem:SetData() dynamic = ") PrintTable(dynamic) end GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)--]] local type_id = tonumber(self.goods_vo.type_id) self.icon_item:SetData(type_id, nil, nil, self.goods_vo.stren) self.name.text = ""..Trim(self.goods_vo.goods_name).."" if self.item_type == OptionalItem.Type.EQUIP then self.desc.text = "战力:"..self:GetItemFightValue(self.goods_vo) elseif self.item_type == OptionalItem.Type.LUCKY then self.desc.text = "幸运值:"..self:GetItemLuckyValue(self.goods_vo) else self.desc.text = "数量:"..self:GetItemNum(self.goods_vo) end else self.need_refresh = true end end function OptionalItem:GetItemLuckyValue(goods_vo) local type_id = tonumber(goods_vo.type_id) local cur_formula = WingModel:getInstance().cur_formula if Config.Twingcomposeratio[type_id] and cur_formula then local grade = cur_formula.grade local ratio_list = ErlangParser:GetInstance():Parse(Config.Twingcomposeratio[type_id].ratio) for i, v in ipairs(ratio_list) do if tonumber(v[1]) == grade then return v[2] end end return 0 end end function OptionalItem:GetItemFightValue(goods_vo) local type_id = tonumber(goods_vo.type_id) local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id) if basic.type == 20 and Config.Twing[type_id] then return Config.Twing[type_id].power else return goods_vo.combat_power end end function OptionalItem:GetItemNum(goods_vo) local type_id = tonumber(goods_vo.type_id) local have_num = GoodsModel:getInstance():GetTypeGoodsNum(type_id) return have_num or 0 end