|
|
- PetAwakeView = PetAwakeView or BaseClass(BaseItem)
- local PetAwakeView = PetAwakeView
-
- function PetAwakeView:__init()
- self.base_file = "pet"
- self.layout_file = "PetAwakeView"
- self.model = PetModel:getInstance()
-
- self.skill_item_list = {}
-
- self.full_screen = true
- self.ani_right = 400
- self.ani_left = -200
-
- self:Load()
- end
-
- function PetAwakeView:Load_callback()
- self.nodes = {
- "con_model",
- "left/ScrollView", "left/ScrollView/Viewport/Content",
- "mid/raceIcon:img", "mid/name:tmp", "mid/awakeIcon:obj",
- "mid/tip1Before:tmp", "mid/tip1After:tmp", "mid/tip2:tmp",
- "right/awakeBtn:obj:img", "right/awakeBtn/awakeText:tmp",
- "right/conSkill", "right/conCost",
- "right/attrScrollview", "right/attrScrollview/Viewport/attrContent",
- "right/fightNum:txt",
- "right/costNum:tmp",
- "mid/tipStar",
- "left/diGray/diArrow:img", "left/topGray/topArrow:img",
- "right/rightBg:img",
- "right/fightLabel",
- "mid/effectCon",
- }
- self:GetChildren(self.nodes)
-
- lua_resM:setImageSprite(self, self.rightBg_img, "petExtra_asset","pet_awake_right_bg")
- self.tip2_tmp.text = "觉醒后技能会强化同时获得<#fdffc2>稀绝</color>百分比<#fdffc2>属性</color>!"
-
- --创建消耗道具
- self.cost_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.conCost)
- self.cost_item:SetItemSize(78,78)
-
- SetAnchoredPositionY(self.effectCon,-175)
-
- self:AddEvents()
- if self.need_refreshData then
- self:UpdateView()
- end
- end
-
- function PetAwakeView:AddEvents( )
- local on_click = function ( click_obj )
- if self.awakeBtn_obj == click_obj then--觉醒
- self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16316,self.pet_id)
- end
- end
- AddClickEvent(self.awakeBtn_obj, on_click)
-
- --刷新觉醒碎片
- local update_progress = function(goods_sub_type)
- if goods_sub_type == 4 then
- self:UpdateCostItems()
- end
- end
- self:BindEvent(self.model, PetConst.UPDATE_PET_GOODS_NUM, update_progress)
-
- local update_view = function()
- local no_need_show_model_again = true
- self:UpdatePetBaseInfo(no_need_show_model_again)
- self:UpdatePetAwakeInfo()
-
- self:AddUIEffect("ui_jinjie", self.effectCon, "UI", nil, 1, false, nil, false)
- end
- self:BindEvent(self.model, PetConst.PET_AWAKE_SUCCESS, update_view)
-
- local function on_ans_update_red_dot(tab_id)
- if not self.data or self.data.pet_id == 0 or not self.is_loaded then return end
- if tab_id == PetConst.RED_DOT_TYPE.Awake then
- self:UpdateCostItems()
- end
- end
- self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
- end
-
- function PetAwakeView:UpdateView( )
- self:UpdatePetList()
- end
-
- function PetAwakeView:UpdatePetList( )
- local pet_list = self.model:GetPetListAfterSortFight()
-
- local function click_callback(pet_id)
- self.pet_id = pet_id
- self.pet_data = self.model:GetPetListById(pet_id)
- self.pet_cfg = self.model:GetPetCfg(pet_id,self.pet_data.pet_star)
- self.pet_awake_cfg = self.model:GetPetAwakeCfg(self.pet_id)
-
- self:UpdatePetBaseInfo()
- self:UpdatePetAwakeInfo()
- end
- if not self.item_list_com then
- self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
- end
- local info = {
- data_list = pet_list,
- item_con = self.Content,
- item_class = PetAwakeItem,
- -- item_width = 125,
- item_height = 125,
- -- space_x = -5,
- space_y = 4,
- start_x = 5,
- start_y = -2.5,
- scroll_view = self.ScrollView,
- create_frequency = 0.01,
- -- reuse_item_num = 100,
- on_update_item = function(item, i, v)
- item:SetData(i,v,click_callback)
- -- self.item_list_com:IterateItems(function( item, i )
- -- item:OnClick(1)--选中第一个
- -- end)
- end,
- on_scroll = function()
- self:SetLeftArrowGray(#pet_list)
- end,
- }
- self.item_list_com:UpdateItems(info)
-
- self.item_list_com:IterateItems(function( item, i )
- item:OnClick(1)--选中第一个
- end)
-
- self:SetLeftArrowGray(#pet_list)
- end
-
- function PetAwakeView:UpdatePetBaseInfo(no_need_show_model_again)
- self.name_tmp.text = Trim(self.pet_cfg.pet_name)
- lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..self.pet_cfg.pet_race,true)
- SetAnchoredPositionX(self.raceIcon,15-self.name_tmp.preferredWidth/2-20)
-
- self.awakeIcon_obj:SetActive(self.pet_data.is_awaken == 1)
- SetAnchoredPositionX(self.awakeIcon, 15+self.name_tmp.preferredWidth/2+20)
-
- local pokemon_diamond_effect = self.model:GetPokemonDiamondEffectRes(self.pet_id)
-
- if not no_need_show_model_again then
- local res_data = {
- father_node = self,
- transform = self.con_model,
- fashion_type = FuncOpenModel.TypeId.Pet,
- figure_id = self.pet_cfg.figure_id,
- ui_model_type = UIModelCommon.ModelType.BackModel,
- pokemon_diamond_effect = pokemon_diamond_effect,
- }
- FuncOpenModel:getInstance():SetModelRes(res_data)
- end
-
- local enough_star = self.pet_data.pet_star >= self.pet_awake_cfg.need_star
- if enough_star then
- self.tip1Before_tmp.text = string.format("<#A9C1E1>培养至</color> <#fdffc2>%s</color>",self.pet_awake_cfg.need_star)
- self.tip1After_tmp.text = "以上宠物可<#fdffc2>觉醒</color>!"
- else
- self.tip1Before_tmp.text = string.format("<#ff203a>培养至 %s</color>",self.pet_awake_cfg.need_star)
- self.tip1After_tmp.text = "<#ff203a>以上宠物可觉醒!</color>"
- end
- SetAnchoredPositionX(self.tipStar,self.tip1Before_tmp.preferredWidth+89)
- SetAnchoredPositionX(self.tip1After,self.tip1Before_tmp.preferredWidth+89+21)
- end
-
- function PetAwakeView:UpdatePetAwakeInfo( )
- self.fightNum_txt.text = self.model:GetPetFightById(self.pet_id)--改用前端计算战力
- SetAnchoredPositionX(self.fightLabel,115-self.fightNum_txt.preferredWidth/2-55)
-
- local attr_cfg = stringtotable(self.pet_awake_cfg.add_attr)
- if not self.attr_list_com then
- self.attr_list_com = self:AddUIComponent(UI.ItemListCreator)
- end
- local info = {
- data_list = attr_cfg,
- item_con = self.attrContent,
- item_class = PetAwakeAttrItem,
- -- item_width = 125,
- item_height = 36,
- -- space_x = -5,
- -- space_y = 4,
- start_x = 17,
- start_y = -14,
- scroll_view = self.attrScrollview,
- create_frequency = 0.01,
- on_update_item = function(item, i, v)
- item:SetData(v)
- end,
- }
- self.attr_list_com:UpdateItems(info)
-
- local skill_table = {}
- local skill_data = stringtotable(self.pet_awake_cfg.skill_list)
-
-
-
- for i,v in ipairs(skill_data) do
- local origin_data = DeepCopy(self.model:GetPetSkillCfg(self.pet_id,i,true))
- origin_data.skill_talent_id = v
- -- local temp = {
- -- skill_talent_id = v,
- -- }
- table.insert(skill_table,origin_data)
- end
- -- for i=1,3 do
- -- if data then
- -- table.insert(skill_table,data)
- -- end
- -- end
- for k,v in pairs(self.skill_item_list) do
- v:SetVisible(false)
- end
- for i,v in ipairs(skill_table) do
- local item = self.skill_item_list[i]
- if not item then
- item = PetCollectSkillItem.New(self.conSkill)
- self.skill_item_list[i] = item
- end
- item:SetVisible(true)
- item:SetData(v,self.pet_data.pet_id,2)
- item:SetPosition(106*(i-1)+18.5,2)
- end
-
- self:UpdateCostItems()
- end
-
- function PetAwakeView:SetLeftArrowGray(list_num)
- local contentSize = GetSizeDeltaY(self.Content)
- local _, contenPos = GetAnchoredPosition(self.Content)
-
- if list_num <= 5 then
- SetImageGray(self.topArrow_img, true)
- SetImageGray(self.diArrow_img, true)
- return
- end
-
- if contenPos <= 40 then
- SetImageGray(self.topArrow_img, true)
- SetImageGray(self.diArrow_img, false)
- elseif contenPos > 40 and contenPos < contentSize-544-20 then
- SetImageGray(self.topArrow_img, false)
- SetImageGray(self.diArrow_img, false)
- elseif contenPos >= contentSize-544-20 then
- SetImageGray(self.topArrow_img, false)
- SetImageGray(self.diArrow_img, true)
- end
- end
-
- function PetAwakeView:UpdateCostItems( )
- local cost_data = stringtotable(self.pet_awake_cfg.cost_material)
- local goods_type_id = cost_data[1][2]
- self.cost_item:SetData(goods_type_id)
- local color = GoodsModel:getInstance():GetGoodsColor(goods_type_id)
- -- self.costName_txt.text = HtmlColorTxt(GoodsModel:getInstance():getGoodsName(goods_type_id),color)
- local goods_name = GoodsModel:getInstance():getGoodsName(goods_type_id)
-
- if self.pet_data.is_awaken == 1 then
- self.costNum_tmp.text = "<#2CF86F>已觉醒</color>"
- self.can_awake = false
- self.awakeBtn_obj:SetActive(false)
- else
- local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(goods_type_id)
- if goods_num < cost_data[1][3] then
- self.costNum_tmp.text = string.format("<#fdffc2>%s</color><color=#fa1022>%s</color><color=#f3fcff>/%s</color>",goods_name,goods_num,cost_data[1][3])
- else
- self.costNum_tmp.text = string.format("<#fdffc2>%s</color><color=#04bd27>%s</color><color=#f3fcff>/%s</color>",goods_name,goods_num,cost_data[1][3])
- end
- local enough_star = self.pet_data.pet_star >= self.pet_awake_cfg.need_star
- self.can_awake = goods_num >= cost_data[1][3] and enough_star
- SetImageGray(self.awakeBtn_img, not self.can_awake)
- if self.can_awake then
- SetTMPSharedMaterial(self.awakeText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
- else
- SetTMPSharedMaterial(self.awakeText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
- end
- self.awakeBtn_obj:SetActive(true)
- end
-
- end
-
- function PetAwakeView:SetData( data )
- self.data = data
- if self.is_loaded then
- self.need_refreshData = false
- self:UpdateView()
- else
- self.need_refreshData = true
- end
- end
-
- function PetAwakeView:__delete( )
- for i, v in ipairs(self.skill_item_list) do
- v:DeleteMe()
- end
- self.skill_item_list = {}
- if self.cost_item then
- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.cost_item)
- self.cost_item = nil
- end
-
- self:ClearUIEffect(self.effectCon)
- end
|