|
--[[@------------------------------------------------------------------
|
|
@description:幻光成功界面
|
|
@author:LZR
|
|
----------------------------------------------------------------------]]
|
|
LightSuccessView = LightSuccessView or BaseClass(BaseView)
|
|
local LightSuccessView = LightSuccessView
|
|
|
|
function LightSuccessView:__init()
|
|
self.base_file = "light"
|
|
self.layout_file = "LightSuccessView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.change_scene_close = true
|
|
self.append_to_ctl_queue = false --是否要添加进界面堆栈
|
|
self.click_bg_toClose = false
|
|
self.is_set_zdepth = true
|
|
------------------------
|
|
-- 一级全屏界面:
|
|
self.hide_maincancas = false --隐藏主界面
|
|
self.use_background = true --不一定显示遮罩
|
|
|
|
self.ignore_use_anim = true
|
|
self.use_show_anim = true
|
|
self.use_hide_anim = true
|
|
|
|
-- self.blur_activity_bg = true
|
|
self.model = LightModel:getInstance()
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function LightSuccessView:DestroySuccess( )
|
|
if self.close_time_id then
|
|
GlobalTimerQuest:CancelQuest(self.close_time_id)
|
|
self.close_time_id = nil
|
|
end
|
|
|
|
if self.tween_id then
|
|
TweenLite.Stop(self.tween_id)
|
|
self.tween_id = nil
|
|
end
|
|
if self.tween_scale_id then
|
|
TweenLite.Stop(self.tween_scale_id)
|
|
self.tween_scale_id = nil
|
|
end
|
|
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
|
|
end
|
|
|
|
function LightSuccessView:Open(cur_select_right, grade, star)
|
|
self.cur_select_right = cur_select_right or 1003
|
|
self.grade = grade or 1
|
|
self.star = star or 1
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function LightSuccessView:OpenSuccess( )
|
|
self:UpdateView()
|
|
end
|
|
|
|
function LightSuccessView:LoadSuccess()
|
|
local nodes = {
|
|
"back_touch:obj",
|
|
"close_btn:obj",
|
|
"mid:obj",
|
|
"mid/bg:raw:obj",
|
|
"mid/bg2:raw:obj",
|
|
"mid/roleCon",
|
|
"mid/attr_scroll",
|
|
"mid/attr_scroll/Viewport/attr_con",
|
|
"mid/powerText:txt",
|
|
"mid/skillDesc:tmp",
|
|
"mid/lb_attr:tmp",
|
|
"mid/lb_level:tmp",
|
|
"mid/skillName:tmp",
|
|
"mid/lb_attr_des:tmp",
|
|
"mid/skillImg:img",
|
|
"mid/icon_special:img",
|
|
"mid/img_title:img",
|
|
"mid/lb_name:tmp",
|
|
"skillImg_other:img:obj",
|
|
"mid/con_star_2",
|
|
"mid/con_star_1:obj",
|
|
"mid/img_arrow_change:obj",
|
|
"mid/lb_change_1:tmp",
|
|
"mid/lb_change_2:tmp",
|
|
"mid/lb_time:tmp",
|
|
"mid/powerTextAdd:tmp",
|
|
"mid/icon_add",
|
|
"mid/con_star_1/star_5:img", "mid/con_star_1/star_2:img", "mid/con_star_1/star_3:img",
|
|
"mid/con_star_1/star_6:img", "mid/con_star_1/star_1:img", "mid/con_star_1/star_4:img",
|
|
"mid/con_star_2/star2_5:img", "mid/con_star_2/star2_2:img", "mid/con_star_2/star2_3:img",
|
|
"mid/con_star_2/star2_6:img", "mid/con_star_2/star2_1:img", "mid/con_star_2/star2_4:img",
|
|
}
|
|
self:GetChildren(nodes)
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("light_success_bg_3"), false)
|
|
-- lua_resM:setOutsideRawImage(self, self.bg2_raw, GameResPath.GetViewBigBg("light_success_bg_3"), false)
|
|
|
|
if self.need_load_again then
|
|
self:UpdateView()
|
|
end
|
|
|
|
self.time = 11
|
|
local function clockFun()
|
|
self.time = self.time - 1
|
|
if self.time > 0 then
|
|
self.lb_time_tmp.text = string.format( "<color=#2CF86F>%d</color> 秒后自动关闭" , self.time )
|
|
else
|
|
self:CustomClose()
|
|
end
|
|
end
|
|
|
|
-- local function bg_back_func( ... )
|
|
-- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
|
|
-- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
|
|
-- self:MoveUIToBack(self.bg_raw)
|
|
-- self:MoveUIToBack(self.bg2_raw)
|
|
-- end
|
|
-- end
|
|
-- if self.background_wnd then
|
|
-- bg_back_func()
|
|
-- else
|
|
-- self.bg_back_func = bg_back_func
|
|
-- end
|
|
|
|
clockFun()
|
|
self.close_time_id = self.close_time_id or GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
|
|
end
|
|
|
|
function LightSuccessView:AddEvent()
|
|
local function on_click( target )
|
|
if target == self.back_touch_obj then
|
|
self:CustomClose()
|
|
elseif target == self.close_btn_obj then
|
|
self:CustomClose()
|
|
end
|
|
end
|
|
AddClickEvent(self.back_touch_obj, on_click)
|
|
AddClickEvent(self.close_btn_obj, on_click)
|
|
end
|
|
|
|
function LightSuccessView:UpdateView()
|
|
if not self.is_loaded then
|
|
self.need_load_again = true
|
|
return
|
|
end
|
|
if not self.cur_select_right then
|
|
print("LightSuccessView [start:95] 数据不正确:")
|
|
return
|
|
end
|
|
self:ShowModel()
|
|
self:UpdateSkill()
|
|
self:UpdateAttrProp()
|
|
self:UpdateSpeacielProp()
|
|
self:UpdateStar()
|
|
end
|
|
|
|
--更新技能
|
|
function LightSuccessView:UpdateSkill( )
|
|
if not self.is_loaded then return end
|
|
local conf = self.model:GetLightConfOne( self.cur_select_right )
|
|
if not conf then return end
|
|
self.lb_name_tmp.text = conf and Trim(conf.name) or ""
|
|
local mat = conf.color == 1 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn
|
|
or (conf.color == 2 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDeepPurpleTitle
|
|
or (conf.color == 3 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn
|
|
or ShaderTools.TMPSharedMaterialType.FZZZSDFDefault))
|
|
SetTMPSharedMaterial(self.lb_name_tmp, mat)
|
|
-- self.lb_name_tmp.text = HtmlColorTxt(Trim(conf.name), self.model.text_color[conf.color])
|
|
self.lb_level_tmp.text = tostring(self.grade == 0 and 1 or self.grade) .. "阶"
|
|
local skill_info = stringtotable(conf.skill)
|
|
local skill_id = tonumber(skill_info[1])
|
|
local skill_conf = SkillManager:getInstance():getSkillFromConfig(skill_info[1])
|
|
self.skillName_tmp.text = HtmlColorTxt(Trim(skill_conf.name or ""), self.model.text_color[conf.color])
|
|
--特殊写死,只需要描述的一部分
|
|
-- if skill_id == 120001 then
|
|
-- self.skillDesc_tmp.text = "攻击时有30%的概率令敌人流血,每秒损失1%气血"
|
|
-- else
|
|
self.skillDesc_tmp.text = Trim(skill_conf.lvs[tonumber(skill_info[2])].desc or "")
|
|
-- end
|
|
lua_resM:setOutsideImageSprite(self, self.skillImg_img, GameResPath.GetSkillIcon(tonumber(skill_info[1])),true)
|
|
lua_resM:setOutsideImageSprite(self, self.skillImg_other_img, GameResPath.GetSkillIcon(tonumber(skill_info[1])),true)
|
|
end
|
|
|
|
--更新属性列表
|
|
function LightSuccessView:UpdateAttrProp( )
|
|
if not self.is_loaded then return end
|
|
local grade = self.grade
|
|
local star = self.star
|
|
-------------------------
|
|
local conf = self.model:GetLightLvConfOne( self.cur_select_right, grade, star )
|
|
if not conf then return end
|
|
-------------------------
|
|
local base_attr = stringtotable(conf.attrs)
|
|
self.powerText_txt.text = "f" .. GetFighting(base_attr,true)
|
|
--处理一下attr_list 改成两个一组
|
|
local count = #base_attr
|
|
local new_base_attr = {}
|
|
local add_attr = {}
|
|
for i = 1, count do
|
|
local data = {
|
|
attr_id1 = base_attr[i] and base_attr[i][1] or nil,
|
|
value1 = base_attr[i] and base_attr[i][2] or nil,
|
|
next_value1 = base_attr[i] and base_attr[i][3] or nil,
|
|
}
|
|
if grade == 0 and star == 0 then
|
|
data.next_value1 = data.value1
|
|
data.value1 = 0
|
|
table.insert( add_attr, {data.attr_id1, data.next_value1})
|
|
else
|
|
local conf_last = false
|
|
for k,v in pairs(Config.Visuslv) do
|
|
if v.next_grade == grade and v.next_lv == star and v.id == self.cur_select_right then
|
|
conf_last = v
|
|
break
|
|
end
|
|
end
|
|
if conf_last then
|
|
local last_attrs = stringtotable(conf_last.attrs)
|
|
for kk,vv in pairs(last_attrs) do
|
|
if vv[1] == data.attr_id1 and (vv[2]~=data.value1) then
|
|
data.next_value1 = data.value1
|
|
data.value1 = vv[2]
|
|
table.insert( add_attr, {data.attr_id1, data.next_value1 - data.value1})
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
table.insert(new_base_attr, data)
|
|
end
|
|
|
|
if grade == 0 and star == 0 then
|
|
self.powerTextAdd_tmp.text = GetFighting(add_attr, true)
|
|
else
|
|
self.powerTextAdd_tmp.text = GetFighting(add_attr, true)
|
|
end
|
|
if not self.attr_list_com then
|
|
self.attr_list_com = self:AddUIComponent(UI.ItemListCreator)
|
|
end
|
|
|
|
local info = {
|
|
data_list = new_base_attr,
|
|
item_con = self.attr_con,
|
|
item_class = LightAttrItemTwo,
|
|
item_width = 395,
|
|
item_height = 33,
|
|
space_x = 0,
|
|
start_x = 0,
|
|
start_y = 0,
|
|
space_y = 0,
|
|
scroll_view = self.attr_scroll,
|
|
create_frequency = 0.05,
|
|
is_scroll_back_on_update = false,
|
|
-- init_value = "LightActiveItem",--不同的预制
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(i,v)
|
|
end,
|
|
}
|
|
self.attr_list_com:UpdateItems(info)
|
|
end
|
|
|
|
--更新特殊数
|
|
function LightSuccessView:UpdateSpeacielProp( )
|
|
local grade = self.grade
|
|
local star = self.star
|
|
self.lb_attr_tmp.text = ""
|
|
self.lb_attr_des_tmp.text = ""
|
|
-------------------------
|
|
--当前属性,下层属性
|
|
local lv_conf = self.model:GetLightLvConfOne( self.cur_select_right, grade, star )
|
|
if not lv_conf then return end
|
|
--特殊属性
|
|
local temp_data2 = stringtotable(lv_conf.spe_attrs)
|
|
local attr_num = temp_data2[1] and tonumber(temp_data2[1][2] or 0) or 0
|
|
local min_val = 999
|
|
local min_grade,min_lv = 999,999
|
|
local attr_id = false
|
|
for k,v in pairs(Config.Visuslv) do
|
|
if v.id == self.cur_select_right then
|
|
for a,b in pairs(stringtotable(v.spe_attrs)) do
|
|
attr_id = attr_id or b[1]
|
|
if b[1] == attr_id and b[2] > attr_num then
|
|
if min_grade > v.grade then
|
|
min_val = b[2]
|
|
min_grade = v.grade
|
|
min_lv = v.lv
|
|
elseif min_grade == v.grade then
|
|
if min_lv > v.lv then
|
|
min_val = b[2]
|
|
min_grade = v.grade
|
|
min_lv = v.lv
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if attr_id then
|
|
local _, name1, _, val1 = WordManager:GetPropertyInfo(attr_id, attr_num == 0 and min_val or attr_num)
|
|
local temp_str = "(" .. min_grade .. "阶" .. min_lv .. "星" .. (temp_data2[1] and "提升)" or "激活)")
|
|
if min_grade == 999 then
|
|
temp_str = ""
|
|
end
|
|
self.lb_attr_tmp.text = name1 .. ": " .. val1 .. temp_str
|
|
SetAttrIconByColorType(self, self.icon_special_img, attr_id, nil, 2)
|
|
end
|
|
end
|
|
|
|
function LightSuccessView:UpdateStar( )
|
|
local grade = self.grade
|
|
local star = self.star
|
|
local is_first = grade == 0 and star == 0
|
|
-- self.con_star_1_obj:SetActive(not is_first)
|
|
-- SetAnchoredPositionX( self.con_star_2.transform, is_first and 250 or 342 )
|
|
|
|
lua_resM:setImageSprite(self, self.img_title_img, "light_asset", is_first and "func_light_title_1" or "func_light_title_2",true)
|
|
local img_node,use_style,last_lv,last_grade,temp_conf = false,false,false,false,false
|
|
if not is_first then
|
|
--获得上一次的等级
|
|
for k,v in pairs(Config.Visuslv) do
|
|
if v.next_grade == grade and v.next_lv == star then
|
|
last_lv = v.lv
|
|
last_grade = v.grade
|
|
end
|
|
end
|
|
self.img_arrow_change_obj:SetActive(true)
|
|
SetLocalPosition(self.powerText.transform, 173, 173, 0)
|
|
SetLocalPosition(self.powerTextAdd.transform, 378, 173, 0)
|
|
SetLocalPosition(self.icon_add.transform, 316, 173, 0)
|
|
SetLocalScale(self.powerText.transform, 1, 1, 1)
|
|
SetLocalScale(self.powerTextAdd.transform, 1, 1, 1)
|
|
SetLocalScale(self.icon_add.transform, 1, 1, 1)
|
|
self.lb_change_1_tmp.text = (last_grade or 0) .. "阶"
|
|
self.lb_change_2_tmp.text = (self.grade or 0) .. "阶"
|
|
else
|
|
self.img_arrow_change_obj:SetActive(false)
|
|
SetLocalPosition(self.powerText.transform, 173, 140, 0)
|
|
SetLocalPosition(self.powerTextAdd.transform, 384, 143, 0)
|
|
SetLocalPosition(self.icon_add.transform, 316, 143, 0)
|
|
SetLocalScale(self.powerText.transform, 1.1, 1.1, 1)
|
|
SetLocalScale(self.powerTextAdd.transform, 1.1, 1.1, 1)
|
|
SetLocalScale(self.icon_add.transform, 1.1, 1.1, 1)
|
|
self.lb_change_1_tmp.text = ""
|
|
self.lb_change_2_tmp.text = ""
|
|
end
|
|
|
|
|
|
local function get_show_style( id )
|
|
id = id or 1
|
|
id = id % 6
|
|
return (id == 0) and 6 or id
|
|
end
|
|
for i=1,6 do
|
|
img_node = self["star2_" .. i .. "_img"]
|
|
use_style = grade > 0 and grade or 1
|
|
if star >= i then
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style) .. "_1",true)
|
|
else
|
|
if use_style == 1 then
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_0",true)
|
|
else
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style-1) .. "_1",true)
|
|
end
|
|
end
|
|
-------------------------
|
|
img_node = self["star_" .. i .. "_img"]
|
|
if last_lv and last_grade then
|
|
use_style = last_grade > 0 and last_grade or 1
|
|
if last_lv >= i then
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style) .. "_1",true)
|
|
else
|
|
if use_style == 1 then
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_0",true)
|
|
else
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style-1) .. "_1",true)
|
|
end
|
|
end
|
|
else
|
|
lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_0",true)
|
|
end
|
|
end
|
|
|
|
-------------------------
|
|
local index = star%6
|
|
index = index == 0 and 6 or index
|
|
local img_node = self["star2_" .. index .. "_img"]
|
|
self:AddUIEffect("ui_jinjiestar", img_node.transform, self.layer_name, nil, 1, false)
|
|
end
|
|
|
|
function LightSuccessView:ShowModel( )
|
|
if not self.is_loaded then
|
|
return
|
|
end
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.roleCon,
|
|
fashion_type = FuncOpenModel.TypeId.Clothes,
|
|
raycast_size = Vector2(0,0),
|
|
scale = 160,
|
|
position = Vector3(10,-10,-500),
|
|
layer_name = self.layer_name,
|
|
ui_model_type = UIModelCommon.ModelType.Model,
|
|
-- show_shadow = false,
|
|
-- use_bloom = false,
|
|
light_id = self.cur_select_right,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
|
|
function LightSuccessView:CustomClose()
|
|
local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIGHT,6)
|
|
if not helpVo then
|
|
self:Close()
|
|
return
|
|
end
|
|
local help_type = helpVo.help_type
|
|
local step = helpVo.step
|
|
if help_type == HelpType.TYPE_LIGHT and step == 6 then
|
|
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
|
|
self:PlayAction()
|
|
|
|
else
|
|
self:Close()
|
|
end
|
|
end
|
|
|
|
|
|
--动画开始
|
|
function LightSuccessView:PlayAction( )
|
|
local callback = function()
|
|
self.skillImg_other_obj:SetActive(false)
|
|
GlobalEventSystem:Fire(EventName.GET_SKILL_SHAKE_ANI,9)
|
|
self:Close()
|
|
end
|
|
local pos = MainUIController:GetInstance():GetSkillBtnPos(9) or Vector3.zero
|
|
if pos then--右下角图标怒气大招
|
|
self.mid_obj:SetActive(false)
|
|
self.bg_obj:SetActive(false)
|
|
-- self.bg2_obj:SetActive(false)
|
|
self.skillImg_other_obj:SetActive(true)
|
|
local target_scale = Vector3.New(0.75, 0.75, 0.75)
|
|
self.tween_id = TweenLite.to(self, self.skillImg_other_obj.transform, TweenLite.UiAnimationType.POS, pos, 0.8, callback)
|
|
self.tween_scale_id = TweenLite.to(self, self.skillImg_other_obj.transform, TweenLite.UiAnimationType.SCALE, target_scale, 0.8)
|
|
else
|
|
callback()
|
|
end
|
|
end
|