--[[@------------------------------------------------------------------ @description:云购上期奖励界面 @author:wyb ----------------------------------------------------------------------]] CloudShoppingRewardView = CloudShoppingRewardView or BaseClass(BaseView) function CloudShoppingRewardView:__init() self.base_file = "cloudShopping" self.layout_file = "CloudShoppingRewardView" self.layer_name = "UI" -- self.use_local_view = true self.use_background = true self.close_mode = CloseMode.CloseDestroy self.destroy_imm = true self.append_to_ctl_queue = true self.item_list = {} self.model = CustomActivityModel:getInstance() self.load_callback = function () self:LoadSuccess() self:InitEvent() end self.open_callback = function () if self.sub_type then self.model:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33114, self.sub_type) end end self.close_callback = function () self:Remove() end end function CloudShoppingRewardView:Open(sub_type) self.sub_type = sub_type BaseView.Open(self) end function CloudShoppingRewardView:Remove() for i, item in ipairs(self.item_list) do item:DeleteMe() end self.item_list = {} if self.event_update_id then self.model:UnBind(self.event_update_id) self.event_update_id = nil end end function CloudShoppingRewardView:LoadSuccess() self.txtNum, self.txtPrice, self.contentTxt = GetChildTexts(self.transform, { "leftCon/txtNum", "leftCon/priceCon/txtPrice", "rightCon/ScrollView/Viewport/Content/contentTxt" }) self.goodsCon, self.scroll, self.effect = GetChildTransforms(self.transform, { "leftCon/goodsCon", "rightCon/ScrollView/Viewport/Content", "leftCon/effect" }) self.empty, self.clickGo = GetChildGameObjects(self.transform, { "rightCon/emptyCon", "clickGo" }) self:AddUIEffect("effect_xunbao_001_3", self.effect, self.layer_name, nil, 0.6, true) end function CloudShoppingRewardView:InitEvent() local onClickHandler = function (target, x, y) if target == self.clickGo then self:ClickBigRewardFunc(x,y) end end AddClickEvent(self.clickGo, onClickHandler) local onUpdate = function () self:SetData() end self.event_update_id = self.model:Bind(CustomActivityModel.UPDATE_CLOUD_REWARD_INFO, onUpdate) end function CloudShoppingRewardView:SetData() local win_info = self.model.cloud_reward_info if not win_info then return end local cfg = Config.Cloudbuy[win_info.big_bingo_id] if cfg then self.txtPrice.text = cfg.worth local resouce_id_list = ErlangParser:GetInstance():Parse(cfg.resouce_id) local res_id = 0 local career = RoleManager.Instance.mainRoleInfo.career for _, v in pairs(resouce_id_list) do if tonumber(v[1]) == career then res_id = tonumber(v[2]) break end end local posList = ErlangParser:GetInstance():Parse(cfg.resouce_height) local x, y = 0, 0 if TableSize(posList) > 0 then x = tonumber(posList[1][1]) * 0.6 y = tonumber(posList[1][2]) * 0.6 end local data = { clothe_res_id = res_id, type = SceneBaseType.Role, layer_name = self.layer_name, action_name_list = {"show", "idle"}, can_rotate = true, layout_file = self.layout_file, position = Vector3(x, y - 40, 0)} lua_resM:SetRoleModel(self, self.goodsCon, data) self:SetGiftName(cfg) self.goodsCon:GetComponent("RawImage").raycastTarget = true end local player_list = win_info.bingo_player_list if #player_list > 0 then self.scroll.sizeDelta = Vector2(400, 60 * #player_list) for i, v in ipairs(player_list) do local item = self.item_list[i] if not item then item = CloudShoppingRewardItem.New(self.scroll) self.item_list[i] = item end item:SetData(v.server_num, v.name) item:SetPosition(0, (i - 1) * 60) end end self.empty:SetActive(TableSize(player_list) == 0) end function CloudShoppingRewardView:SetGiftName(cfg) local reward = ErlangParser:GetInstance():Parse(cfg.rewards) if TableSize(reward) > 0 then local type_id = 0 if cfg.reward_type == 2 then --按职业区分 local career = RoleManager.Instance:GetMainRoleVo().career for _,v in pairs(reward) do if career == tonumber(v[1]) then type_id = tonumber(v[2][1][2]) break end end else type_id = tonumber(reward[1][2]) end local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id) if goods_basic then local goodsName = ""..Trim(goods_basic.goods_name) .. "" local numStr = "(" .. cfg.award_count .. "份)" self.txtNum.text = goodsName .. numStr local call_back = function(param, x, y) self:ClickBigRewardFunc(x,y) end AddUnderLineAndClick(self, self.txtNum.transform, call_back, false, true) end end end function CloudShoppingRewardView:ClickBigRewardFunc(x,y) local win_info = self.model.cloud_reward_info if not win_info then return end local cfg = Config.Cloudbuy[win_info.big_bingo_id] if not cfg then return end local reward = ErlangParser:GetInstance():Parse(cfg.rewards) if TableSize(reward) > 0 then local type_id = 0 if cfg.reward_type == 2 then --按职业区分 local career = RoleManager.Instance:GetMainRoleVo().career for _,v in pairs(reward) do if career == tonumber(v[1]) then type_id = tonumber(v[2][1][2]) break end end else type_id = tonumber(reward[1][2]) end local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id) if goods_basic then if goods_basic.type == GoodsModel.TYPE.EQUIP then local target_config = Config.Equipattr[type_id] if target_config then local dynamic = {} dynamic.type_id = type_id dynamic.rating = target_config.base_rating dynamic.equip_extra_attr = {} dynamic.equip_type = goods_basic.equip_type local target_pro = ErlangParser:GetInstance():Parse(target_config.recommend_attr) for i, v in ipairs(target_pro) do local attr = {} attr.color = tonumber(v[2][1]) attr.attr_id = tonumber(v[2][2]) if #v[2] == 5 then attr.type_id = 1 attr.plus_interval = tonumber(v[2][4]) attr.plus_unit = tonumber(v[2][5]) else attr.type_id = 2 attr.attr_val = tonumber(v[2][3]) end table.insert(dynamic.equip_extra_attr, attr) end UIToolTipMgr:getInstance():AppendEquipShowTips(dynamic, x, y, EquipShowTips.EQUIP_RECOMMAND_TARGET) end else UIToolTipMgr:getInstance():AppendGoodsTips(type_id, x, y) end end end end