NiceGoodsTips = NiceGoodsTips or BaseClass(BaseView) local NiceGoodsTips = NiceGoodsTips --[[ NiceGoodsTips.TabData = { [1] = {name = "人物", level = MainRoleModel.TabOpenLevel[1]}, } --]] function NiceGoodsTips:__init() self.base_file = "common" self.layout_file = "NiceGoodsTips" self.layer_name = "Top" self.destroy_imm = true self.is_set_zdepth = true self.use_background = true --全屏界面默认使用这个参数 self.click_bg_toClose = true self.hide_maincancas = false self.change_scene_close = true self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.model = GoodsModel:getInstance() self.shop_model = ShopModel:getInstance() self.pos_x = 0 self.pos_y = 0 self.goods_vo = nil self.is_show_btn = nil self.mainVo = RoleManager.Instance.mainRoleInfo self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function NiceGoodsTips:Open(type_id, x, y, goods_vo, show_btn_list, parm_list) self.type_id = type_id self.is_show_btn = goods_vo ~= nil self.show_btn_list = show_btn_list self.parm_list = parm_list self.shop_data = parm_list and parm_list.shop_data or nil self.goods_vo = goods_vo or self.model:GetGoodsBasicByTypeId(type_id) self.pos_x = x self.pos_y = y BaseView.Open(self) end function NiceGoodsTips:LoadSuccess() local nodes = { "layout/base_con/attr_scroll","layout/base_con/line1:obj","layout/base_con/attr_scroll/Viewport/attr_con", "layout/base_con/designation_con:obj","layout/base_con/power_text:txt","layout/base_con/bg:raw", "layout/base_con/get_text:txt","layout/base_con/desc_text:txt","layout/base_con/name_text:txt","layout/base_con/limit_image:obj", ---------------------------- "layout:obj","layout/base_con/designation_con/designation_image:obj:img", "layout/base_con/designation_con/designation_text:txt","layout/base_con/designation_con/designation_effect:obj", "layout/base_con/roleCon:obj","layout/btns_con:obj", --商城购买界面 "layout/shop_con:obj", } self:GetChildren(nodes) self.shiyongBtn = self:GetChild("layout/btns_con/shiyongBtn").gameObject self.hechengBtn = self:GetChild("layout/btns_con/hechengBtn").gameObject self.chushouBtn = self:GetChild("layout/btns_con/chushouBtn").gameObject self.yulanBtn = self:GetChild("layout/btns_con/yulanBtn").gameObject self.storeBtn = self:GetChild("layout/btns_con/storeBtn").gameObject self.takeBtn = self:GetChild("layout/btns_con/takeBtn").gameObject self.splitBtn = self:GetChild("layout/btns_con/splitBtn").gameObject self.shelvesUpBtn = self:GetChild("layout/btns_con/shelvesUpBtn").gameObject self.shelvesDownBtn = self:GetChild("layout/btns_con/shelvesDownBtn").gameObject self.decomposeBtn = self:GetChild("layout/btns_con/decomposeBtn").gameObject self.oneKeyBuyBtn = self:GetChild("layout/btns_con/oneKeyBuyBtn").gameObject self.replaceBtn = self:GetChild("layout/btns_con/replaceBtn").gameObject self.dropBtn = self:GetChild("layout/btns_con/dropBtn").gameObject self.capsuleEggTakeBtn = self:GetChild("layout/btns_con/capsuleEggTakeBtn").gameObject self.btns_list = { self.shiyongBtn, self.hechengBtn, self.chushouBtn, self.yulanBtn, self.storeBtn, self.takeBtn, self.splitBtn, self.shelvesUpBtn, self.shelvesDownBtn, self.oneKeyBuyBtn, self.decomposeBtn, self.replaceBtn, self.dropBtn,self.capsuleEggTakeBtn } end function NiceGoodsTips:AddEvent() local function onClickBtnHandler(target) if (self.goods_vo and (self.is_show_btn or CapsuleEggModel:getInstance():IsShowCapsuleEggTakeOutBtn() or self:ForeceTriggerEvt())) then if target == self.shiyongBtn then if self.mainVo.level < self.goods_vo.level then Message.show("等级不足,无法使用") return end local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id) if basic.use_way and basic.use_way ~= "" then local use_table = stringtotable(basic.use_way) if use_table and use_table[1] and use_table[2] then --特殊参数处理 local arg1, arg2 if self.goods_vo.type_id == 102601 then --扩容钥匙 local num = self.goods_vo.goods_num local open_count = math.max(math.floor(num / 2), 1) arg1 = self.goods_pos_type arg2 = open_count end OpenFun.Open(tonumber(use_table[1]), tonumber(use_table[2]), arg1, arg2) self:Close() return end end self:CheckSecondView() elseif target == self.hechengBtn then self:JumpComposeFunc() elseif target == self.chushouBtn then GlobalEventSystem:Fire(EventName.OPEN_SEll_VIEW, self.goods_vo) elseif target == self.storeBtn then GoodsModel:getInstance():Fire(GoodsModel.REQUEST_CCMD_EVENT, 15003, self.goods_vo.goods_id, GoodsModel.GOODS_POS_TYPE.bag, GoodsModel.GOODS_POS_TYPE.warehouse) elseif target == self.takeBtn then GoodsModel:getInstance():Fire(GoodsModel.REQUEST_CCMD_EVENT, 15003, self.goods_vo.goods_id, GoodsModel.GOODS_POS_TYPE.warehouse, GoodsModel.GOODS_POS_TYPE.bag) elseif target == self.splitBtn then BagModel:getInstance():Fire(BagModel.OPEN_BATHANDLE_VIEW, self.goods_vo, SplitView.TYPE.SPLIT) elseif target == self.yulanBtn then elseif target == self.shelvesUpBtn then elseif target == self.shelvesDownBtn then elseif target == self.oneKeyBuyBtn then elseif target == self.decomposeBtn then BagModel:getInstance():Fire(BagModel.OPEN_EQUIP_DECOMPOSE_VIEW, self.goods_vo) elseif target == self.dropBtn then BagModel:getInstance():Fire(BagModel.OPEN_BATHANDLE_VIEW, self.goods_vo, SplitView.TYPE.BAT_DROP) elseif target == self.replaceBtn then if self.goods_vo then local has_vo, main, sub = HorseModel:getInstance():CheckVoIsOnMaterialTab(self.goods_vo) if has_vo then local typ = (self.parm_list and self.parm_list.material_type and self.parm_list.material_type ~= 0) and self.parm_list.material_type or main local pos = (self.parm_list and self.parm_list.material_pos and self.parm_list.material_pos ~= 0) and self.parm_list.material_pos or sub HorseModel:getInstance():Fire(HorsePetEvent.SELECT_MATERIAL_VIEW, typ, true, pos) self:Close() return end end elseif target == self.capsuleEggTakeBtn then --龙神宝库临时仓库取出按钮 local now_warehouse_selected_goods_id = CapsuleEggModel:getInstance():GetWarehouseNowSelectedGoodsId() CapsuleEggModel:getInstance():Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17008,now_warehouse_selected_goods_id) CapsuleEggModel:getInstance():ResetWarehouseNowSelectedGoodsId() end end self:Close() end AddClickEvent(self.shiyongBtn, onClickBtnHandler) AddClickEvent(self.hechengBtn, onClickBtnHandler) AddClickEvent(self.chushouBtn, onClickBtnHandler) AddClickEvent(self.storeBtn, onClickBtnHandler) AddClickEvent(self.takeBtn, onClickBtnHandler) AddClickEvent(self.splitBtn, onClickBtnHandler) AddClickEvent(self.yulanBtn, onClickBtnHandler) AddClickEvent(self.shelvesUpBtn, onClickBtnHandler) AddClickEvent(self.shelvesDownBtn, onClickBtnHandler) AddClickEvent(self.oneKeyBuyBtn, onClickBtnHandler) AddClickEvent(self.decomposeBtn, onClickBtnHandler) AddClickEvent(self.replaceBtn, onClickBtnHandler) AddClickEvent(self.dropBtn, onClickBtnHandler) AddClickEvent(self.capsuleEggTakeBtn,onClickBtnHandler) function on_close( ) self:Close() end self:BindEvent(self.shop_model,ShopModel.CLOSE_SHOP_BUY_VIEW, on_close) end function NiceGoodsTips:OpenSuccess() self:UpdateView() end function NiceGoodsTips:UpdateView() if self.goods_vo == nil then return end local basic = self.model:GetGoodsBasicByTypeId(self.type_id) self.attr_list = {} self.designation_con_obj:SetActive(false) self.roleCon_obj:SetActive(false) if basic.type == GoodsModel.TYPE.DESIGNATION then lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("designation_tip_bg"),true) local cfg = Config.Dsgt local designation_id = DesignationModel:GetInstance():GetDesignationIdByGoodsId(self.type_id) self.attr_list = stringtotable(cfg[designation_id].attr_list) local is_limit = DesignationModel:GetInstance():IsDesignationLimitTime(designation_id) self.limit_image_obj:SetActive(is_limit) self.designation_image_obj:SetActive(false) self.designation_effect_obj:SetActive(false) self.name_text_txt.text = "" cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image) if cfg[designation_id].type == 1 then--文字称号(文字称号也用图片了) self.designation_image_obj:SetActive(true) lua_resM:setOutsideImageSprite(self, self.designation_image_img, GameResPath.GetDesignImage(cfg[designation_id].id), true) self.designation_text_txt.text = "" elseif cfg[designation_id].type == 2 then--图片称号 self.designation_image_obj:SetActive(true) lua_resM:setOutsideImageSprite(self, self.designation_image_img, GameResPath.GetDesignImage(cfg[designation_id].id), true) self.designation_text_txt.text = "" elseif cfg[designation_id].type == 3 then--特效称号 self.designation_image_obj:SetActive(true) local data = DesignationConst.DesignationData[cfg[designation_id].id] or DesignationConst.DesignationData[0] local action = cc.Animation.New(data,0.15) cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action),self.designation_image.transform) self.designation_text_txt.text = "" end self.designation_con_obj:SetActive(true) elseif basic.type == GoodsModel.TYPE.FASHION then local fashion_id,color_id = FashionModel:getInstance():GetFashionIdByGoodsId(self.type_id) local cur_cfg = Config.Fashionstarup[fashion_id.."@"..color_id.."@0"] if cur_cfg then self.attr_list = stringtotable(cur_cfg.attr_list) end lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("fashion_tip_bg"),true) local is_limit = FashionModel:GetInstance():IsFashionLimitTime(fashion_id,color_id) self.limit_image_obj:SetActive(is_limit) self.roleCon_obj:SetActive(true) elseif basic.type == GoodsModel.TYPE.CHILDTOY then lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("designation_tip_bg"),true) self.designation_con_obj:SetActive(true) self.designation_image_obj:SetActive(true) lua_resM:setOutsideImageSprite(self, self.designation_image_img, GameResPath.GetChildHandbookIcon(basic.type_id), true) if DeepCopy(Config.Childtoynew)[basic.type_id] then self.attr_list = stringtotable(DeepCopy(Config.Childtoynew)[basic.type_id].attr_list) end end self.name_text_txt.text = basic.goods_name self.get_text_txt.text = basic.getway self.desc_text_txt.text = basic.intro self:SetBtnCon() self:UpdateAttrCon() if self.shop_data then self.shop_con_obj:SetActive(true) self:UpdateShopView() else self.shop_con_obj:SetActive(false) end end function NiceGoodsTips:UpdateAttrCon( ) local attr_list = self.attr_list if not self.attr_list_com then self.attr_list_com = self:AddUIComponent(UI.ItemListCreator) end local child_names = { "num_text:txt","name_text:txt", } self.power_text_txt.text = GetFighting(attr_list) local function on_update( item,i,v ) local _, name, _, val = WordManager:GetPropertyInfo(v[1], v[2]) item.name_text_txt.text = name..":" item.num_text_txt.text = val end local info = { data_list = attr_list, item_con = self.attr_con, prefab_ab_name = "common", prefab_res_name = "NiceGoodsAttrItem", item_width = 160, item_height = 34, space_x = 2, space_y = 2, start_x = 2, start_y = -2, scroll_view = self.attr_scroll, create_frequency = 0.05, is_scroll_back_on_update = false, child_names = child_names, on_update_item = function(item, i, v) on_update(item,i,v) end, } self.attr_list_com:UpdateItems(info) end function NiceGoodsTips:SetBtnCon( ) local basic = self.model:GetGoodsBasicByTypeId(self.type_id) for i, v in pairs(self.btns_list) do v:SetActive(false) end local btns_list = {} if self.model:IsShowPreviewBtn(self.type_id) then table.insert(btns_list, self.yulanBtn) self.yulanBtn:SetActive(true) else self.yulanBtn:SetActive(false) end if self.is_show_btn then if (self.goods_vo.use > 0 or self.goods_vo.use_way ~= "") and self.mainVo.level >= self.goods_vo.level then table.insert(btns_list, self.shiyongBtn) end if basic.jump > 0 then--and self.mainVo.level >= self.goods_vo.level then table.insert(btns_list, self.jumpBtn) end if self.goods_vo.compose > 0 then table.insert(btns_list, self.hechengBtn) end if self.goods_vo.goods_num > 1 then table.insert(btns_list, self.splitBtn) end if self.goods_vo.sell > 0 then table.insert(btns_list, self.chushouBtn) end if MarketModel:getInstance():IsGoodsCanUpShelves(self.goods_vo) then table.insert(btns_list, self.shelvesUpBtn) end if basic and basic.drop == 1 then table.insert(btns_list, self.dropBtn) end end local hide_yulan_btn = false if GoodsModel:getInstance().show_warehouse == true and self.goods_vo.pos == GoodsModel.GOODS_POS_TYPE.bag then hide_yulan_btn = true btns_list = {self.storeBtn} elseif self.goods_vo.pos == GoodsModel.GOODS_POS_TYPE.warehouse then hide_yulan_btn = true btns_list = {self.takeBtn} elseif self.goods_vo.pos == GoodsModel.GOODS_POS_TYPE.hunt_store then hide_yulan_btn = true btns_list = {self.takeBtn} end if hide_yulan_btn then self.yulanBtn:SetActive(false) end if CapsuleEggModel:getInstance():IsShowCapsuleEggTakeOutBtn() then--龙神宝库扭蛋临时仓库显示取出按钮 btns_list = {self.capsuleEggTakeBtn} end --自定义显示的按钮 if self.show_btn_list then btns_list = self:ShowCustomBtns() end local btns_len = #btns_list self.btns_con_obj:SetActive(btns_len > 0) local local_index = 0 local local_offset_h = 55 for k, v in ipairs(btns_list) do local b = self.is_show_btn or CapsuleEggModel:getInstance():IsShowCapsuleEggTakeOutBtn()--龙神宝库仓库需要显示按钮 v:SetActive(b) if b then print(v) SetAnchoredPosition(v.transform, 8, local_index * local_offset_h - 504) local_index = local_index + 1 end end if not hide_yulan_btn then if self.goods_vo.type == 32 or self.goods_vo.type == 34 then self.yulanBtn:SetActive(true) end end end function NiceGoodsTips:CheckSecondView() if self.goods_vo.type == GoodsModel.TYPE.DESIGNATION then--称号类型物品直接发激活协议 local designation_id = DesignationModel:GetInstance():GetDesignationIdByGoodsId(self.goods_vo.type_id) if designation_id ~= 0 then DesignationModel:GetInstance():Fire(DesignationModel.REQUEST_DESIGNATION, 41106, self.goods_vo.type_id, designation_id, 1) else Message.show("称号物品有点问题哦~请联系GM") end return elseif self.goods_vo.type == GoodsModel.TYPE.FASHION and self.goods_vo.subtype ~= GoodsModel.FASHION_LIMIT_SUB_TYPE then--时装体验卡物品不走这里的激活协议 local fashion_id,color_id = FashionModel:getInstance():GetFashionIdByGoodsId(self.type_id) local cur_cfg = Config.Fashionstarup[fashion_id.."@"..color_id.."@0"] if cur_cfg then local pos = cur_cfg.pos_id FashionModel:GetInstance():Fire(FashionEvent.REQUEST_FASHION_PROTOCOL, 41306, pos, fashion_id, color_id) else Message.show("时装物品有点问题哦~请联系GM") end return end if self.goods_vo.use == 1 then if self.goods_vo.goods_num > 1 then BagModel:getInstance():Fire(BagModel.OPEN_BATHANDLE_VIEW, self.goods_vo, SplitView.TYPE.BAT_USE) else self.model:Fire(GoodsModel.REQUEST_CCMD_EVENT, 15050, self.goods_vo.goods_id, self.goods_vo.type_id, 1) end else self.model:Fire(GoodsModel.REQUEST_CCMD_EVENT, 15050, self.goods_vo.goods_id, self.goods_vo.type_id, 1) end end function NiceGoodsTips:ShowCustomBtns() local temp_list = {} for _, v in pairs(self.btns_list) do v:SetActive(false) end for _, v in pairs(self.show_btn_list) do if self[v] then table.insert(temp_list, self[v]) end end return temp_list end function NiceGoodsTips:DestroySuccess( ) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image) if self.change_count_id then self.addNumComponent:UnBind(self.change_count_id) self.change_count_id = nil self.addNumComponent:DeleteMe() self.addNumComponent = nil end if self.change_jin_id then self.mainVo:UnBind(self.change_jin_id) self.change_jin_id = nil end if self.change_lockJin_id then self.mainVo:UnBind(self.change_lockJin_id) self.change_lockJin_id = nil end if self.change_silver_id then self.mainVo:UnBind(self.change_silver_id) self.change_silver_id = nil end if self.score_change_event_id then GoodsModel:getInstance():UnBind(self.score_change_event_id) self.score_change_event_id = nil end if self.shop_view then self.shop_view:DeleteMe() self.shop_view = nil end end function NiceGoodsTips:UpdateShopView( ) if not self.shop_view then self.shop_view = ShopBuySubView.New(self.shop_con) end self.shop_view:SetData(self.shop_data) self.shop_view:SetPosition(9,-141) end