源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

326 rader
11 KiB

EquipExamUpgradeView = EquipExamUpgradeView or BaseClass(BaseItem)
local EquipExamUpgradeView = EquipExamUpgradeView
local table_insert = table.insert
local SCROLLITEM_OFFSET = {
[0] = 5 - 130,
[1] = 5 + 500,
[2] = 5 + 300,
[3] = 5 + 200,
[4] = 5,
}
function EquipExamUpgradeView:__init()
self.base_file = "equipCollect"
self.layout_file = "EquipExamUpgradeView"
self.model = EquipCollectModel:GetInstance()
self.equip_model = EquipModel:getInstance()
self.cur_select_index = 1
-- self.cur_select_skill = 1
self:Load()
end
function EquipExamUpgradeView:Load_callback()
self.nodes = {
"bg:raw", "item_scroll", "item_scroll/Viewport/item_con", "btn:obj:imgex", "power_text:txt", "btn/btn_text:tmp",
"btn/btn_red:obj", "skill_con/skill_title_text:tmp", "attr_btn:obj",
"attr_text1:tmp", "attr_text2:tmp", "light_image:obj", "condition_text:tmp",
"skill_con:obj", "skill_con/click_con1:obj", "skill_con/skill_image1:img:obj", "skill_con/skill_image2:img:obj",
"skill_con/select_image1:obj", "skill_con/select_image2:obj", "skill_con/click_con2:obj", "skill_con/skill_text:tmp",
}
self:GetChildren(self.nodes)
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("equipExam_upgrade_bg"),false)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function EquipExamUpgradeView:AddEvents( )
--更新星级套装红点
local function equipStarRedFunc( ... )
self:UpdateView(true)
end
self:BindEvent(EquipModel:getInstance(), EquipModel.INFO_UPDATE, equipStarRedFunc)
local function on_click( target )
if target == self.click_con1_obj then
if self.is_choice then
return
end
self:SwitchSkill(1)
elseif target == self.click_con2_obj then
if self.is_choice then
return
end
self:SwitchSkill(2)
elseif target == self.btn_obj then
if self.can_click then
EquipModel:getInstance():Fire(EquipModel.REQUEST_CCMD_EVENT, 15206, self.cur_select_skill or 0)
else
if self.is_active then
Message.show("当前星级已经激活")
else
Message.show("之前还存在未激活的星级,请先激活")
end
end
elseif target == self.attr_btn_obj then
if self.real_star and self.real_star > 0 then
self.model:Fire(EquipCollectConst.OPEN_EC_UPGRADE_ATTR_VIEW)
else
Message.show("还没激活任何属性哦~")
end
end
end
AddClickEvent(self.click_con1_obj, on_click)
AddClickEvent(self.click_con2_obj, on_click)
AddClickEvent(self.btn_obj, on_click)
AddClickEvent(self.attr_btn_obj, on_click)
end
function EquipExamUpgradeView:UpdateView(need_scroll_to )
local cfg_list = Config.Equipmentstartotal
local list_index = 0
for k,v in pairsByKeys(cfg_list) do
list_index = list_index + 1
v.list_index = list_index
end
self.real_star = EquipModel:getInstance().equip_activie_stars--当前激活星级
self.sum_star = EquipModel:getInstance().equip_sum_stars--可以激活的星级
self.server_data = self.model:GetEquipExamSkillInfo()
self.cur_star_lv = 3
for k,v in pairsByKeys(cfg_list) do
if v.stars <= self.real_star then
self.cur_star_lv = v.stars
else
break
end
end
--总属性
if self.real_star == 0 then
self.power_text_txt.text = 0
else
local total_attr = stringtotable(cfg_list[self.cur_star_lv].attr)
local power = GetFighting(total_attr)
--以下是算技能战力
local skill_attr = {}
for k,v in pairs(self.server_data) do
if cfg_list[v.id] then
local skill_data = stringtotable(cfg_list[v.id].branch)
power = power + GetFighting(skill_data[v.choice][2])
end
end
self.power_text_txt.text = power
end
local next_star = 0
self.cur_select_data = nil
self.is_max = false
for k,v in pairsByKeys(cfg_list) do
if v.stars > self.real_star then--配置星级大于激活星级并且小于装备总星级
next_star = v.stars
self.cur_select_data = v
break
end
end
if not self.cur_select_data then
self.next_star = self.equip_model.equip_cfg_max_star
self.cur_select_data = cfg_list[self.next_star]
self.cur_select_skill = nil--已经激活
self.is_max = true
else
self.next_star = next_star
end
self.cur_select_index = self.next_star
local len = TableSize(cfg_list)
local item_data = {}
local count = 1
for i,v in pairsByKeys(cfg_list) do
if not item_data[count] then
item_data[count] = {}
end
table_insert(item_data[count], v)
if v.list_index % 5 == 0 then
count = count + 1
end
end
local function on_click( index, data )
self:SetSelectItem(index,data)
end
self.item_list_creator = self.item_list_creator or self:AddUIComponent(UI.ItemListCreator)
local info = {
data_list = item_data,
item_con = self.item_con,
scroll_view = self.item_scroll,
item_class = EquipExamUpgradeItem,
item_width = 784,
start_x = 0,
start_y = 0,
space_x = 0,
create_frequency = 0.01,
reuse_item_num = 3,
on_update_item = function(item, i, v)
self.last_index = self.cur_index
self.cur_index = i
item:SetData(v, i, self.last_index, self.cur_index, len, self.real_star, self.sum_star)
item:SetCallBackFunc(on_click)
item:SetSelect(self.cur_select_index)
end,
final_callback = function()
local unit = self.cur_select_data.list_index % 5
local offset = SCROLLITEM_OFFSET[unit] or 5
self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_data.list_index/5), offset, {duration = 0.5})
end,
}
self.item_list_creator:UpdateItems(info)
self:SetSelectItem(self.cur_select_index, self.cur_select_data)
--[[ local _, unit = math.modf(self.real_star/5)
if need_scroll_to then
if unit == 0 then
print('====a[149] ===111====', data)
self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5 + 300)
else
print('====a[152] =====222==', data)
self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5)
end
-- elseif unit == 0 then
-- print('====a[156] ===333====', data)
-- self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5 + 300)
-- elseif unit == 2 then
-- print('====a[156] ===4444====', data)
-- self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5)
end--]]
end
function EquipExamUpgradeView:SetSelectItem(index, data)
if self.cur_select_data.list_index % 5 ~= 0 then
self.cur_select_skill = nil
end
self.cur_select_index = index
self.cur_select_data = data
self.item_list_creator:IterateItems(function ( item )
item:SetSelect(self.cur_select_index)
end)
if self.cur_select_data.list_index % 5 == 0 then
self:SwitchSkill(self.cur_select_skill)
else
self:UpdateBottomInfo()
end
end
function EquipExamUpgradeView:SwitchSkill( index )
self.cur_select_skill = index
for i=1,2 do
self["select_image"..i.."_obj"]:SetActive(i == self.cur_select_skill and not self.is_max)
end
self:UpdateBottomInfo()
end
function EquipExamUpgradeView:UpdateBottomInfo( )
local is_skill_node = self.cur_select_data.list_index % 5 == 0
local attr_data = is_skill_node and stringtotable(self.cur_select_data.branch) or stringtotable(self.cur_select_data.stage_attr)
self.skill_con_obj:SetActive(is_skill_node and not self.is_max)
if is_skill_node then
local data = self.model:GetEquipExamSkillInfo()
if data[self.cur_select_data.stars] then--如果是已经激活了的
self.is_choice = true
self.cur_select_skill = data[self.cur_select_data.stars].choice
local skill_data = attr_data[self.cur_select_skill]
for i=1,2 do
lua_resM:setImageSprite(self,self["skill_image"..i.."_img"], "equipExam_asset", attr_data[i][3])
self["skill_image"..i.."_obj"]:SetActive(true)
self["select_image"..i.."_obj"]:SetActive(i == self.cur_select_skill)
end
for i=1,2 do
if attr_data[self.cur_select_skill][2][i] then
local attr_name = WordManager:GetProperties(skill_data[2][i][1])
local attr_value = WordManager:GetPropertyValue(skill_data[2][i][1],skill_data[2][i][2])
self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
self.skill_text_tmp.text = string.format("%s:%s", attr_name, attr_value)
else
self["attr_text"..i.."_tmp"].text = ""
end
end
self.skill_title_text_tmp.text = "已选择技能"
else
self.is_choice = false
for i=1,2 do
lua_resM:setImageSprite(self,self["skill_image"..i.."_img"], "equipExam_asset", attr_data[i][3])
self["skill_image"..i.."_obj"]:SetActive(true)
end
if self.cur_select_skill then
local skill_data = attr_data[self.cur_select_skill]
for i=1,2 do
if attr_data[self.cur_select_skill][2][i] then
local attr_name = WordManager:GetProperties(skill_data[2][i][1])
local attr_value = WordManager:GetPropertyValue(skill_data[2][i][1],skill_data[2][i][2])
self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
self.skill_text_tmp.text = string.format("%s:%s", attr_name, attr_value)
else
self["attr_text"..i.."_tmp"].text = ""
end
end
else
self.attr_text1_tmp.text = ""
self.attr_text2_tmp.text = ""
self.skill_text_tmp.text = "选择后查看属性"
end
self.skill_title_text_tmp.text = "请选择技能"
end
else
for i=1,2 do
if attr_data[i] then
local attr_name = WordManager:GetProperties(attr_data[i][1])
local attr_value = WordManager:GetPropertyValue(attr_data[i][1],attr_data[i][2])
self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
else
self["attr_text"..i.."_tmp"].text = ""
end
self["skill_image"..i.."_obj"]:SetActive(false)
self["select_image"..i.."_obj"]:SetActive(false)
end
end
local color_str = ColorUtil.RED_DARK
if self.sum_star >= self.cur_select_data.stars then
color_str = ColorUtil.GREEN_DARK
end
local str = string.format("穿戴装备累计 %s 星共鸣(%s/%s)", self.cur_select_data.stars, HtmlColorTxt(self.sum_star, color_str), self.cur_select_data.stars)
self.condition_text_tmp.text = str
self.can_click = self.cur_select_index == self.next_star and not self.is_max
self.is_active = self.cur_select_index < self.next_star or self.is_max
if self.cur_select_index == self.next_star and not self.is_max then--可操作激活
self.btn_red_obj:SetActive(self.sum_star >= self.cur_select_data.stars)
self.btn_imgex.gray = self.sum_star < self.cur_select_data.stars
self.btn_text_tmp.text = "激活"
SetTMPSharedMaterial(self.btn_text_tmp, self.sum_star >= self.cur_select_data.stars and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
elseif self.cur_select_index < self.next_star or self.is_max then--已激活
self.btn_text_tmp.text = "已激活"
SetTMPSharedMaterial(self.btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
self.btn_imgex.gray = true
self.btn_red_obj:SetActive(false)
else
self.btn_text_tmp.text = "激活"
SetTMPSharedMaterial(self.btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
self.btn_imgex.gray = true
self.btn_red_obj:SetActive(false)
end
end
function EquipExamUpgradeView:SetData( data )
self.data = data
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function EquipExamUpgradeView:__delete( )
end