源战役客户端
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

181 linhas
7.2 KiB

-- <*
-- @Author: Saber
-- @Description: 圣物系统魂环装备界面
-- *>
PsionicEffectEquipView = PsionicEffectEquipView or BaseClass(BaseView)
local PsionicEffectEquipView = PsionicEffectEquipView
function PsionicEffectEquipView:__init()
self.base_file = "psionic"
self.layout_file = "PsionicEffectEquipView"
self.layer_name = "Activity"
self.destroy_imm = true
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
self.model = PsionicModel:getInstance()
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:UpdateView()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
function PsionicEffectEquipView:Open( )
--self.data = data
BaseView.Open(self)
end
function PsionicEffectEquipView:LoadSuccess()
local nodes = {
"content",
-- 魂环1
"content/node1",
"content/node1/role_con1",
"content/node1/equip_btn1:obj:img", "content/node1/equip_btn1/equip_btn1_lb:tmp", "content/node1/equip_btn1/equip_btn1_red:obj",
"content/node1/cond_bg1:img",
"content/node1/equip_cond1:tmp",
"content/node1/effect_name1:tmp",
-- 魂环2
"content/node2",
"content/node2/role_con2",
"content/node2/equip_btn2:obj:img", "content/node2/equip_btn2/equip_btn2_lb:tmp", "content/node2/equip_btn2/equip_btn2_red:obj",
"content/node2/cond_bg2:img",
"content/node2/equip_cond2:tmp",
"content/node2/effect_name2:tmp",
-- 魂环3
"content/node3",
"content/node3/role_con3",
"content/node3/equip_btn3:obj:img", "content/node3/equip_btn3/equip_btn3_lb:tmp", "content/node3/equip_btn3/equip_btn3_red:obj",
"content/node3/cond_bg3:img",
"content/node3/equip_cond3:tmp",
"content/node3/effect_name3:tmp",
}
self:GetChildren(nodes)
local close_callback = function()
self:Close()
end
self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd,
self.transform, UITabWindow.SizeSmallNoTab)
self.tabWindowComponent:SetBackgroundRes("ps_effect_equip_bg")
self.tabWindowComponent:SetTitleText("圣环激活")
end
function PsionicEffectEquipView:AddEvent()
local function click_event(target)
if target == self.equip_btn1_obj then
self:OnEquipEffectBtnClick(1)
elseif target == self.equip_btn2_obj then
self:OnEquipEffectBtnClick(2)
elseif target == self.equip_btn3_obj then
self:OnEquipEffectBtnClick(3)
end
end
AddClickEvent(self.equip_btn1_obj, click_event)
AddClickEvent(self.equip_btn2_obj, click_event)
AddClickEvent(self.equip_btn3_obj, click_event)
local function update_effect_status()
self:UpdateEffectStatus()
end
self:BindEvent(self.model, PsionicConst.UPDATE_PSIONIC_EFFECT, update_effect_status)
local function update_btns_red(tab_id)
if tab_id and tab_id == PsionicConst.TabId.PArmor then
self:UpdateBtnsRed()
end
end
self:BindEvent(self.model, PsionicConst.UPDATE_RED_BY_TABID, update_btns_red)
end
function PsionicEffectEquipView:UpdateView()
self:UpdateBasicData()
self:UpdateEffectStatus()
self:UpdateBtnsRed()
end
function PsionicEffectEquipView:UpdateBasicData( )
-- 加载模型
local function create_role_model(index)
local res_data = {
father_node = self,
layer_name = self.layer_name,
transform = self["role_con" .. index],
fashion_type = FuncOpenModel.TypeId.Clothes,
size = Vector2(720,720),
raycast_size = Vector2(240, 380),
scale = 160,
position = Vector3(-10, 10, -500),
ui_model_type = UIModelCommon.ModelType.Model,
psionic_effect = "effect_hunhuan_00" .. index,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
end
create_role_model(1)
create_role_model(2)
create_role_model(3)
-- 加载名称
self.effect_name1_tmp.text = PsionicConst.EffectName[1]
self.effect_name2_tmp.text = PsionicConst.EffectName[2]
self.effect_name3_tmp.text = PsionicConst.EffectName[3]
end
-- 更新圣环当前状态
function PsionicEffectEquipView:UpdateEffectStatus( )
local stage, color_list = self.model:GetPsionicEffectStage()
local status_cookie = self.model:GetPsionicEffectShowStatus()
local cur_effect_index = status_cookie and status_cookie[1] or 0
local function update_status(index)
if stage >= index then -- 可以佩戴
self["cond_bg" .. index .. "_img"].enabled = false
self["equip_cond" .. index .. "_tmp"].text = ""
self["equip_btn" .. index .. "_obj"]:SetActive(true)
self["equip_btn" .. index .. "_lb_tmp"].text = cur_effect_index == index and "卸下" or "穿戴"
SetTMPSharedMaterial(self["equip_btn" .. index .. "_lb_tmp"], cur_effect_index == index and
ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn or
ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
lua_resM:setImageSprite(self, self["equip_btn" .. index .."_img"], "alphaCommon_asset", cur_effect_index == index and
"tyui_middlel_btn1" or "tyui_middlel_btn2")
else -- 装备品质达不到要求
local condition = PsionicConst.EffectCondition[index]
self["cond_bg" .. index .. "_img"].enabled = true
self["equip_cond" .. index .. "_tmp"].text =
string.format("穿戴<color=%s>%s</color>/<color=#ffffff>4</color>件<color=%s>%s圣物</color>可激活",
ColorUtil.RED_DARK, color_list[condition.color], condition.color_hex, condition.str)
self["equip_btn" .. index .. "_obj"]:SetActive(false)
end
end
update_status(1)
update_status(2)
update_status(3)
end
function PsionicEffectEquipView:UpdateBtnsRed( )
local status_cookie = self.model:GetPsionicEffectShowStatus()
local red_list = status_cookie and status_cookie[3] or {}
self.equip_btn1_red_obj:SetActive(red_list[1] and true or false)
self.equip_btn2_red_obj:SetActive(red_list[2] and true or false)
self.equip_btn3_red_obj:SetActive(red_list[3] and true or false)
end
function PsionicEffectEquipView:OnEquipEffectBtnClick(index)
local status_cookie = self.model:GetPsionicEffectShowStatus()
local cur_effect_index = status_cookie and status_cookie[1] or 0
if status_cookie and status_cookie[3] and status_cookie[3][index] then -- 存在红点,则需要消除红点并存储缓存
self.model:SavePsionicEffectStatusRed(index, false, true)
end
self.model:SavePsionicEffectShowStatus(cur_effect_index == index and 0 or index)
Message.show(cur_effect_index == index and "卸下成功" or "穿戴成功", "success")
end
function PsionicEffectEquipView:DestroySuccess( )
if self.tabWindowComponent then
self.tabWindowComponent:DeleteMe()
self.tabWindowComponent = nil
end
end