|
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
|