--[[@------------------------------------------------------------------
|
|
@description:幻光激活展示界面
|
|
@author:huangcong
|
|
----------------------------------------------------------------------]]
|
|
LightActiveView = LightActiveView or BaseClass(BaseView)
|
|
local LightActiveView = LightActiveView
|
|
|
|
function LightActiveView:__init()
|
|
self.base_file = "light"
|
|
self.layout_file = "LightActiveView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = false
|
|
self.append_to_ctl_queue = true --是否要添加进界面堆栈
|
|
self.need_show_money = false --是否要显示顶部的金钱栏
|
|
self.use_background = true
|
|
self.hide_maincancas = true --全屏界面需要放开隐藏主UI
|
|
self.append_to_ctl_queue = true --添加进入控制队列
|
|
|
|
self.item_list = {}
|
|
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 LightActiveView:DestroySuccess( )
|
|
if self.time_id then
|
|
TimerQuest.CancelQuest(GlobalTimerQuest, self.time_id)
|
|
self.time_id = nil
|
|
end
|
|
end
|
|
|
|
function LightActiveView:Open(cur_select_right)
|
|
self.cur_select_right = cur_select_right or 1001
|
|
GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
|
|
GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT) --停止自动挂机
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function LightActiveView:OpenSuccess( )
|
|
self:UpdateView()
|
|
end
|
|
|
|
function LightActiveView:LoadSuccess()
|
|
local nodes = {
|
|
"bg:raw","closeBtn:obj","activeBtn:obj","roleCon",
|
|
"attr_scroll", "attr_scroll/Viewport/attr_con",
|
|
"powerText:txt", "skillDesc:txt", "lb_attr:txt", "skillName:txt", "lb_attr_des:txt",
|
|
"lightNameImg:img", "skillImg:img","icon_special:img", "titleBg",
|
|
}
|
|
self:GetChildren(nodes)
|
|
local function func( ... )
|
|
self:MoveUIToBack(self.bg, nil,nil, {alpha = 0.8})
|
|
self:MoveUIToBack(self.titleBg, nil,nil, {alpha = 0.8})
|
|
end
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("openFunc_light_bg"), false,func)
|
|
|
|
if self.need_load_again then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function LightActiveView:AddEvent()
|
|
local on_click = function ( click_obj )
|
|
if self.closeBtn_obj == click_obj then--关闭按钮
|
|
self:Close()
|
|
elseif self.activeBtn_obj == click_obj then--激活
|
|
self:Close()
|
|
--如果是引导,则在退出,统一跳转
|
|
-- local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIGHT,1)
|
|
-- if not helpVo then
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_NEW_MAIN_ROLE_VIEW,NewMainRoleModel.TabId.Light,nil,self.cur_select_right)
|
|
-- end
|
|
end
|
|
end
|
|
AddClickEvent(self.activeBtn_obj, on_click)
|
|
AddClickEvent(self.closeBtn_obj, on_click)
|
|
end
|
|
|
|
function LightActiveView:UpdateView()
|
|
if not self.is_loaded then
|
|
self.need_load_again = true
|
|
return
|
|
end
|
|
if not self.cur_select_right then
|
|
print("huangcong:LightActiveView [start:95] 数据不正确:")
|
|
return
|
|
end
|
|
self:ShowModel()
|
|
self:UpdateSkill()
|
|
self:UpdateAttrProp()
|
|
self:UpdateSpeacielProp()
|
|
|
|
lua_resM:setImageSprite(self, self.lightNameImg_img, "light_asset", "light_"..self.cur_select_right,true)
|
|
end
|
|
|
|
--更新技能
|
|
function LightActiveView:UpdateSkill( )
|
|
if not self.is_loaded then return end
|
|
local conf = self.model:GetLightConfOne( self.cur_select_right )
|
|
if not conf then return end
|
|
local skill_info = stringtotable(conf.skill)
|
|
local skill_id = tonumber(skill_info[1])
|
|
local skill_conf = SkillManager:getInstance():getSkillFromConfig(skill_info[1])
|
|
self.skillName_txt.text = HtmlColorTxt(Trim(skill_conf.name or ""), "#ffde6c")
|
|
--特殊写死,只需要描述的一部分
|
|
if skill_id == 120001 then
|
|
self.skillDesc_txt.text = "攻击时有30%的概率令敌人流血,每秒损失1%气血"
|
|
else
|
|
self.skillDesc_txt.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)
|
|
end
|
|
|
|
--更新属性列表
|
|
function LightActiveView:UpdateAttrProp( )
|
|
if not self.is_loaded then return end
|
|
local basic = self.model:GetLightInfoOne( self.cur_select_right )
|
|
local grade,star = 0,0
|
|
if basic then
|
|
grade = basic.grade
|
|
star = basic.lv
|
|
end
|
|
-------------------------
|
|
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 = GetFighting(base_attr)
|
|
--处理一下attr_list 改成两个一组
|
|
local count = math.ceil(#base_attr / 2)
|
|
local new_base_attr = {}
|
|
for i = 1, count do
|
|
local data = {
|
|
attr_id1 = base_attr[i*2-1] and base_attr[i*2-1][1] or nil,
|
|
value1 = base_attr[i*2-1] and base_attr[i*2-1][2] or nil,
|
|
next_value1 = base_attr[i*2-1] and base_attr[i*2-1][3] or nil,
|
|
attr_id2 = base_attr[i*2] and base_attr[i*2][1] or nil,
|
|
value2 = base_attr[i*2] and base_attr[i*2][2] or nil,
|
|
next_value2 = base_attr[i*2] and base_attr[i*2][3] or nil,
|
|
}
|
|
table.insert(new_base_attr, data)
|
|
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 = LightAttrItem,
|
|
item_width = 430,
|
|
item_height = 36,
|
|
space_x = 0,
|
|
start_x = 4,
|
|
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,true)
|
|
end,
|
|
}
|
|
self.attr_list_com:UpdateItems(info)
|
|
end
|
|
|
|
--更新特殊数
|
|
function LightActiveView:UpdateSpeacielProp( )
|
|
local basic = self.model:GetLightInfoOne( self.cur_select_right )
|
|
local grade,star = 0,0
|
|
if basic then
|
|
grade = basic.grade
|
|
star = basic.lv
|
|
end
|
|
|
|
-------------------------
|
|
--当前属性,下层属性
|
|
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)
|
|
if temp_data2[1] then
|
|
local _, name1, _, val1 = WordManager:GetPropertyInfo(tonumber(temp_data[1][1]), tonumber(temp_data[1][2]))
|
|
self.lb_attr_txt.text = name1 .. ":" .. val1
|
|
self.lb_attr_des_txt.text = ""
|
|
SetAttrIconByColorType(self, self.icon_special_img, tonumber(temp_data[1][1]), nil, 2)
|
|
else
|
|
local min_val = 999
|
|
local min_grade,min_lv = 0,0
|
|
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 then
|
|
if b[2] < min_val then
|
|
min_val = b[2]
|
|
min_grade = v.grade
|
|
min_lv = v.lv
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if attr_id then
|
|
local _, name1, _, val1 = WordManager:GetPropertyInfo(attr_id, min_val)
|
|
self.lb_attr_txt.text = name1 .. ":" .. val1
|
|
self.lb_attr_des_txt.text = "(" .. min_grade .. "阶" .. min_lv .. "星" .. "解锁)"
|
|
SetAttrIconByColorType(self, self.icon_special_img, attr_id, nil, 2)
|
|
else
|
|
self.lb_attr_txt.text = ""
|
|
self.lb_attr_des_txt.text = ""
|
|
end
|
|
end
|
|
end
|
|
|
|
function LightActiveView: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 = 210,
|
|
position = Vector3(0,-80,-142),
|
|
layer_name = "UI",
|
|
ui_model_type = UIModelCommon.ModelType.BackModel,
|
|
show_shadow = false,
|
|
use_bloom = false,
|
|
light_id = self.cur_select_right,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
|
|
function LightActiveView:Close()
|
|
--完成引导
|
|
local helpVo, endVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIGHT,1)
|
|
if helpVo then
|
|
GlobalEventSystem:Fire(EventName.OPEN_NEW_MAIN_ROLE_VIEW,NewMainRoleModel.TabId.Light,nil,self.cur_select_right)
|
|
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
|
|
end
|
|
if not helpVo or endVo then
|
|
GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK) --引导需要 保留
|
|
end
|
|
BaseView.Close(self)
|
|
self:ActivitySkill()
|
|
end
|
|
|
|
--关闭界面,直接激活节能
|
|
function LightActiveView:ActivitySkill()
|
|
self.model:Fire(LightModel.REQUEST_CCMD_EVENT, 14703, self.cur_select_right)
|
|
end
|
|
|