源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

189 lines
5.7 KiB

PetSupportView = PetSupportView or BaseClass(BaseItem)
local PetSupportView = PetSupportView
function PetSupportView:__init()
self.base_file = "pet"
self.layout_file = "PetSupportView"
self.full_screen = true
self.model = PetModel:getInstance()
self.support_as_item_list = {}--全服声援位item
self:Load()
end
function PetSupportView:Load_callback()
self.nodes = {
"rankBtn:obj",
"conASSupport","conSupport","conSupport/Viewport/Content",
"fight1:tmp","fight2:tmp",
"doubt1:obj","doubt2:obj",
"bottomImg:img",
"addFight2:tmp", "addFight1:tmp",
"tips:tmp",
"rankBtn/rankRed:obj",
}
self:GetChildren(self.nodes)
lua_resM:setImageSprite(self, self.bottomImg_img, "petExtra_asset","pet_support_bottom_1174_145")
self.tips_tmp.text = "<#fdffc2>上阵宠物</color> 可享受 <#fdffc2>额外属性加成</color> 哦!"
SetAnchoredPositionX(self.tips,-45)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function PetSupportView:AddEvents( )
local on_click = function ( click_obj )
if self.rankBtn_obj == click_obj then--排行榜
self.model:Fire(PetConst.OPEN_PET_VOTE_VIEW)
elseif self.doubt1_obj == click_obj then
EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 16302)
elseif self.doubt2_obj == click_obj then
EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 16303)
end
end
AddClickEvent(self.rankBtn_obj, on_click)
AddClickEvent(self.doubt1_obj, on_click)
AddClickEvent(self.doubt2_obj, on_click)
local refresh_support_fight = function()
self:UpdateAditionFight()
end
self:BindEvent(self.model, PetConst.REFRESH_PET_SUPPORT_FIGHT, refresh_support_fight)
--红点更新
local function on_ans_update_red_dot(tab_id)
if not self.is_loaded then return end
if tab_id == PetConst.RED_DOT_TYPE.Vote or tab_id == PetConst.RED_DOT_TYPE.Reward then
self:RefreshRed()
end
end
self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
end
function PetSupportView:RefreshRed( )
local red_vote = self.model:GetPetVoteTimesRed()
local reward_vote = self.model:GetPetRewardRed()
self.rankRed_obj:SetActive(red_vote or reward_vote)
end
function PetSupportView:UpdateView( )
self:UpdateASSupportPet()
self:UpdateNormalSupportPet()
self:UpdateAditionFight()
self:RefreshRed()
end
--刷新全服声援位的宠物显示
function PetSupportView:UpdateASSupportPet()
local support_data = {}
for i=1,3 do
local data = self.model:GetPetSupportDataBySlot(i)
support_data[i] = data or 0
end
for k,v in pairs(self.support_as_item_list) do
v:SetVisible(false)
end
for i,v in ipairs(support_data) do
local item = self.support_as_item_list[i]
if not item then
item = PetSupportASItem.New(self.conASSupport)
self.support_as_item_list[i] = item
end
item:SetVisible(true)
item:SetData(i,v)--声援槽位、声援信息
if i == 1 then
item:SetAnchoredPosition(-11,-40)
elseif i == 2 then
item:SetAnchoredPosition(-346,-40)
elseif i == 3 then
item:SetAnchoredPosition(324,-40)
end
end
end
--刷新普通声援位的宠物显示
function PetSupportView:UpdateNormalSupportPet()
local support_data = {}
for i=1,7 do
local data = self.model:GetPetSupportDataBySlot(i+3)
support_data[i] = data or 0
end
if not self.item_list_com then
self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
end
local info = {
data_list = support_data,
item_con = self.Content,
item_class = PetSupportNormalItem,
item_width = 112,
space_x = 43,
start_x = 29,
start_y = -11.5,
scroll_view = self.conSupport,
create_frequency = 0.01,
on_update_item = function(item, i, v)
item:SetData(i+3,v)--声援槽位,声援信息
end,
}
self.item_list_com:UpdateItems(info)
end
--刷新加成战力
function PetSupportView:UpdateAditionFight()
local as_fight_value = 0
for i=1,3 do
local data = self.model:GetPetSupportDataBySlot(i)
if data then
local slot_cfg = self.model:GetPetSupportSlotCfg(i)
local adition_value = slot_cfg and tonumber(slot_cfg.attr_add_ratio) or 0.05
local base_fight = self.model:GetPetFightById(data.pet_id)
local adition_fight = self.model:GetPetAditionFightById(data.pet_id,adition_value)
as_fight_value = as_fight_value + math.floor((adition_fight-base_fight))
end
end
self.fight1_tmp.text = string.format("加成战力%s", as_fight_value)
local slot_cfg_1 = self.model:GetPetSupportSlotCfg(1)
local add_num_1 = tonumber(slot_cfg_1.attr_add_ratio)*100
self.addFight1_tmp.text = "(每只宠物属性加成<#2CF86F>"..add_num_1.."%</color>)"
SetAnchoredPositionX(self.addFight1,-475+self.fight1_tmp.preferredWidth+5)
local normal_fight_value = 0
for i=4,10 do
local data = self.model:GetPetSupportDataBySlot(i)
if data then
local slot_cfg = self.model:GetPetSupportSlotCfg(i)
local adition_value = slot_cfg and tonumber(slot_cfg.attr_add_ratio) or 0.02
local base_fight = self.model:GetPetFightById(data.pet_id)
local adition_fight = self.model:GetPetAditionFightById(data.pet_id, adition_value)
normal_fight_value = normal_fight_value + math.floor((adition_fight-base_fight))
end
end
self.fight2_tmp.text = string.format("加成战力%s", normal_fight_value)
local slot_cfg_2 = self.model:GetPetSupportSlotCfg(4)
local add_num_2 = tonumber(slot_cfg_2.attr_add_ratio)*100
self.addFight2_tmp.text = "(每只宠物属性加成<#2CF86F>"..add_num_2.."%</color>)"
SetAnchoredPositionX(self.addFight2,-475+self.fight2_tmp.preferredWidth+5)
end
function PetSupportView:SetData()
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function PetSupportView:__delete( )
for i, v in ipairs(self.support_as_item_list) do
v:DeleteMe()
end
self.support_as_item_list = {}
end