|
NewerTaskMainView = NewerTaskMainView or BaseClass(BaseView)
|
|
local NewerTaskMainView = NewerTaskMainView
|
|
|
|
function NewerTaskMainView:__init()
|
|
self.base_file = "newerTask"
|
|
self.layout_file = "NewerTaskMainView"
|
|
self.layer_name = "UI"
|
|
self.destroy_imm = true
|
|
self.use_background = true
|
|
self.change_scene_close = true
|
|
self.append_to_ctl_queue = true --是否要添加进界面堆栈
|
|
-- self.hide_maincancas = true
|
|
self.need_show_money = false --是否要显示顶部的金钱栏
|
|
self.close_fog = true
|
|
self.ignore_use_anim = true
|
|
self.use_show_anim = true
|
|
self.use_hide_anim = false
|
|
-- self.blur_activity_bg = true
|
|
-- self:AddPreLoadList("newerTask", {"NewerTaskItem"})
|
|
|
|
self.model = NewerTaskModel:getInstance()
|
|
self.item_list = {}
|
|
self.award_list = {}
|
|
self.is_first_show = false --是否首次展示
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
local help_vo = GuideModel:getInstance():GetCurHelpTypeAndStep()
|
|
if help_vo then
|
|
if (help_vo.help_type == HelpType.NEWER_TASK_AWARD_UNLOCK and help_vo.step == 2) then
|
|
if help_vo.task_id == 10090 then
|
|
self.is_first_show = true
|
|
self.close_need_anim = true
|
|
end
|
|
GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
|
|
end
|
|
end
|
|
self:OpenSuccess()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function NewerTaskMainView:Open( auto_do_task )
|
|
self.auto_do_task = auto_do_task
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function NewerTaskMainView:Close( )
|
|
self:OnCloseGuide()
|
|
|
|
if not self.close_need_anim then
|
|
self.use_hide_anim = true
|
|
BaseView.Close(self)
|
|
return
|
|
end
|
|
|
|
local target_pos = MainUIController.Instance:GetNewerTaskMotoPos( )
|
|
target_pos.x = target_pos.x + 35
|
|
target_pos.y = target_pos.y - 20
|
|
local target_time = 0.3
|
|
|
|
local target_scale = Vector3(0.1,0.1,0.1)
|
|
local function call_back( )
|
|
BaseView.Close(self)
|
|
end
|
|
|
|
TweenLite.to(self, self.transform, TweenLite.UiAnimationType.POS, target_pos, target_time)
|
|
TweenLite.to(self, self.transform, TweenLite.UiAnimationType.SCALE, target_scale, target_time, call_back)
|
|
|
|
TweenLite.to(self, self.bg.transform, TweenLite.UiAnimationType.POS, target_pos, target_time)
|
|
TweenLite.to(self, self.bg.transform, TweenLite.UiAnimationType.SCALE, target_scale, target_time)
|
|
|
|
self.model_parent_obj:SetActive(false)
|
|
end
|
|
|
|
function NewerTaskMainView:LoadSuccess()
|
|
self.nodes = {
|
|
"bg:raw", "close_btn:obj", "content",
|
|
"model_parent:obj:raw", "title:img","line_cont:obj",
|
|
"effect_1", "effect_3",
|
|
"grey_img_1:obj", "grey_img_2:obj", "grey_img_3:obj", "grey_img_4:obj",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("newer_task_bg"),false)
|
|
|
|
self:AddUIEffect("ui_motuoyindao01", self.effect_1, self.layer_name, nil, 1, true,nil,nil,nil,nil,nil,UIPartical.RenderingOther_List.UI)
|
|
self:AddUIEffect("ui_motuoyindao03", self.effect_3, self.layer_name, {x=-177.7,y=-165.5}, {x=1,y=1,z=1}, true,nil,nil,nil,nil,nil,UIPartical.RenderingOther_List.UIBackward)
|
|
-- self.line_list = {}
|
|
-- for i=1,4 do
|
|
-- self.line_list[i] = self.line_list[i] or {}
|
|
-- local res_name = "line_cont/line_" .. i
|
|
-- self.line_list[i].line_obj = self:GetChild(res_name).gameObject
|
|
-- self.line_list[i].line_img = self:GetChild(res_name):GetComponent("Image")
|
|
-- end
|
|
|
|
local function bg_back_func( )
|
|
-- 2021.7.14 界面修改为无模型
|
|
-- if self.background_wnd and self.background_wnd_raw then
|
|
-- self:MoveUIToBack(self.background_wnd)
|
|
-- self:MoveUIToBack(self.bg)
|
|
-- end
|
|
end
|
|
if self.background_wnd then
|
|
bg_back_func()
|
|
else
|
|
self.bg_back_func = bg_back_func
|
|
end
|
|
|
|
end
|
|
|
|
function NewerTaskMainView:AddEvent()
|
|
local function on_click( obj )
|
|
if obj == self.close_btn_obj then
|
|
self:Close()
|
|
end
|
|
end
|
|
AddClickEvent(self.close_btn_obj, on_click)
|
|
|
|
local function on_award_update( )
|
|
--摩托车切换到翅膀,也要播放首次动画
|
|
local cur_type = self.model:GetCurShowType()
|
|
if self.cur_type and cur_type ~= self.cur_type then
|
|
self.is_first_show = true
|
|
end
|
|
self:UpdateView()
|
|
end
|
|
self:BindEvent(GlobalEventSystem, NewerTaskConst.UPDATE_AWARD_INFO, on_award_update)
|
|
|
|
local function onGuideTrigger()
|
|
self:OnTriggerGuide()
|
|
end
|
|
self:BindEvent(GlobalEventSystem, EventName.TRIGGER_GUIDE_TYPE, onGuideTrigger)
|
|
end
|
|
|
|
function NewerTaskMainView:OpenSuccess()
|
|
self:UpdateView()
|
|
end
|
|
|
|
function NewerTaskMainView:UpdateView()
|
|
local info = self.model:GetCurShowInfo()
|
|
if IsTableEmpty(info) then
|
|
return
|
|
end
|
|
self.info = info
|
|
|
|
--标题
|
|
local cur_type = self.model:GetCurShowType()
|
|
self.cur_type = cur_type
|
|
local res_name = NewerTaskConst.TitleResName[cur_type]
|
|
lua_resM:setImageSprite(self,self.title_img, "newerTask_asset", res_name)
|
|
--模型
|
|
self:OnUpdateModel(cur_type)
|
|
--线条
|
|
-- self.line_cont_obj:SetActive(not self.is_first_show)
|
|
self.line_cont_obj:SetActive(true)
|
|
-- for i=1,4 do
|
|
-- local cfg = NewerTaskConst.LineInfo[i]
|
|
-- SetAnchoredPosition(self.line_list[i].line_obj.transform, cfg.anchor_pos.x, cfg.anchor_pos.y)
|
|
-- SetSizeDelta(self.line_list[i].line_obj.transform, cfg.size.x, cfg.size.y)
|
|
-- end
|
|
--进度
|
|
-- self:OnUpdateProgress(cur_type)
|
|
--解锁item/奖励图标
|
|
for i=1,4 do
|
|
if not self.item_list[i] then
|
|
self.item_list[i] = NewerTaskItem.New(self.content)
|
|
end
|
|
self.item_list[i]:SetVisible(not self.is_first_show)
|
|
self.item_list[i]:SetData(info[i], i, self.is_first_show, self.auto_do_task)
|
|
local pos = NewerTaskConst.ItemPos[i]
|
|
self.item_list[i]:SetPosition(pos.x, pos.y)
|
|
|
|
-- 刷新主界面拼图状态
|
|
local is_finished = self.model:IsAwardFinish(info[i].type, info[i].task_id)
|
|
if is_finished then
|
|
self["grey_img_" .. i .. "_obj"]:SetActive(false)
|
|
else
|
|
self["grey_img_" .. i .. "_obj"]:SetActive(true)
|
|
end
|
|
|
|
-- if not self.award_list[i] then
|
|
-- self.award_list[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.award_cont)
|
|
-- end
|
|
-- local award_vo = stringtotable(info[i].awards)
|
|
-- award_vo = award_vo and award_vo[1] or {}
|
|
-- local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(award_vo[1], award_vo[2])
|
|
-- self.award_list[i]:SetData(typeId, award_vo[3], nil, nil, lock)
|
|
-- self.award_list[i]:SetItemSize(78, 78)
|
|
-- self.award_list[i]:SetVisible(true)
|
|
-- self.award_list[i]:SetPosition(237*(i-1), 0)
|
|
end
|
|
--首次打开的动画
|
|
self:OnUpdateAnimation()
|
|
end
|
|
|
|
function NewerTaskMainView:OnUpdateModel( cur_type )
|
|
if self.is_first_show then
|
|
return
|
|
end
|
|
if self.last_model_type and self.last_model_type == cur_type then
|
|
return
|
|
end
|
|
self.last_model_type = cur_type
|
|
|
|
-- local model_res = NewerTaskConst.ModelImgRes[cur_type]
|
|
-- lua_resM:setOutsideRawImage(self,self.model_img_raw,GameResPath.GetViewBigBg(model_res),true)
|
|
|
|
local res_id, res_type = 1001, self.cur_type
|
|
local temp_rotate = self.cur_type == 1 and 70 or 0
|
|
local temp_scale = self.cur_type == 1 and 210 or 360
|
|
local temp_position = self.cur_type == 1 and Vector3(-88,-67.5,725) or Vector3(0,110,0)
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.model_parent,
|
|
fashion_type = res_type + 1000,
|
|
figure_id = res_id,
|
|
ui_model_type = UIModelCommon.ModelType.BackModel,
|
|
can_rotate = false,
|
|
action_name_list = {"show"},
|
|
scale = temp_scale,
|
|
rotate = temp_rotate,
|
|
position = temp_position,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
|
|
function NewerTaskMainView:OnUpdateProgress( cur_type )
|
|
local cur_progress = self.model:GetProgress() or 0
|
|
self.pro_bar_img.fillAmount = cur_progress/100
|
|
end
|
|
|
|
function NewerTaskMainView:OnUpdateAnimation( )
|
|
if not self.is_first_show then
|
|
return
|
|
end
|
|
self.is_first_show = false
|
|
self:CancelAnimationTimer()
|
|
self.anim_step = 1
|
|
self.anim_pass_time = 0
|
|
local step = 0.1
|
|
local function on_animation( )
|
|
self.anim_pass_time = self.anim_pass_time + step
|
|
if self.anim_step == 1 then
|
|
self.anim_step = 2
|
|
self:OnAnimModel()
|
|
elseif self.anim_pass_time > 0.1 and self.anim_step == 2 then
|
|
self.anim_step = 3
|
|
self:OnAnimItem(1)
|
|
elseif self.anim_pass_time > 0.3 and self.anim_step == 3 then
|
|
self.anim_step = 4
|
|
self:OnAnimItem(2)
|
|
elseif self.anim_pass_time > 0.5 and self.anim_step == 4 then
|
|
self.anim_step = 5
|
|
self:OnAnimItem(3)
|
|
elseif self.anim_pass_time > 0.7 and self.anim_step == 5 then
|
|
self.anim_step = 6
|
|
self:OnAnimItem(4)
|
|
elseif self.anim_pass_time > 0.9 and self.anim_step == 6 then
|
|
self.anim_step = 7
|
|
self:OnAnimImageModel()
|
|
elseif self.anim_pass_time > 1.1 and self.anim_step == 7 then
|
|
self.anim_step = 8
|
|
self:OnLineShow()
|
|
self:OnAnimUnLock()
|
|
self:CancelAnimationTimer()
|
|
end
|
|
end
|
|
self.animation_timer = GlobalTimerQuest:AddPeriodQuest(on_animation, step, -1)
|
|
end
|
|
|
|
function NewerTaskMainView:CancelAnimationTimer( )
|
|
if self.animation_timer then
|
|
GlobalTimerQuest:CancelQuest(self.animation_timer)
|
|
self.animation_timer = nil
|
|
end
|
|
end
|
|
|
|
function NewerTaskMainView:OnAnimModel( )
|
|
local res_id, res_type = 1001, self.cur_type
|
|
local temp_rotate = self.cur_type == 1 and 70 or 0
|
|
local temp_scale = self.cur_type == 1 and 210 or 360
|
|
local temp_position = self.cur_type == 1 and Vector3(-88,-67.5,725) or Vector3(0,110,0)
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.model_parent,
|
|
fashion_type = res_type + 1000,
|
|
figure_id = res_id,
|
|
ui_model_type = UIModelCommon.ModelType.BackModel,
|
|
can_rotate = false,
|
|
action_name_list = {"show2","show"},
|
|
scale = temp_scale,
|
|
rotate = temp_rotate,
|
|
position = temp_position,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
|
|
function NewerTaskMainView:OnAnimItem(index)
|
|
if self.item_list[index] then
|
|
self.item_list[index]:OnAnimation()
|
|
end
|
|
end
|
|
|
|
function NewerTaskMainView:OnAnimImageModel( )
|
|
-- local model_res = NewerTaskConst.ModelImgRes[self.cur_type]
|
|
-- lua_resM:setOutsideRawImage(self,self.model_img_raw,GameResPath.GetViewBigBg(model_res),true)
|
|
-- self.model_parent_obj:SetActive(false)
|
|
end
|
|
|
|
function NewerTaskMainView:OnLineShow( )
|
|
self.line_cont_obj:SetActive(true)
|
|
end
|
|
|
|
function NewerTaskMainView:OnAnimUnLock( )
|
|
if self.item_list[1] then
|
|
self.item_list[1]:OnUnLockHelper()
|
|
end
|
|
end
|
|
|
|
function NewerTaskMainView:OnTriggerGuide( )
|
|
if IsNull(self.gameObject) then
|
|
return
|
|
end
|
|
local help_vo = GuideModel:getInstance():GetCurHelpTypeAndStep()
|
|
if help_vo then
|
|
if help_vo.help_type == HelpType.NEWER_TASK_AWARD_UNLOCK and help_vo.step == 3 then
|
|
local button = self.close_btn_obj
|
|
if button then
|
|
local function call_back()
|
|
self:Close()
|
|
end
|
|
GlobalEventSystem:Fire(EventName.OPEN_GUIDE_PROMPT_VIEW,button.transform,self.transform,call_back,help_vo)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function NewerTaskMainView:OnCloseGuide( )
|
|
local help_vo, help_type, step = GuideModel:getInstance():GetCurHelpTypeAndStep()
|
|
if help_vo then
|
|
if help_type == HelpType.NEWER_TASK_AWARD_UNLOCK then
|
|
if step and step == 3 then
|
|
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,help_vo)
|
|
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
|
|
end
|
|
end
|
|
end
|
|
GlobalEventSystem:Fire(EventName.CLOSE_GUIDE_PROMPT_VIEW)
|
|
if self.auto_do_task then
|
|
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
|
|
end
|
|
end
|
|
|
|
function NewerTaskMainView:DestroySuccess( )
|
|
for k,v in pairs(self.item_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.item_list = {}
|
|
|
|
for k,v in pairs(self.award_list) do
|
|
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
|
|
v = nil
|
|
end
|
|
self.award_list = {}
|
|
|
|
self:CancelAnimationTimer()
|
|
end
|
|
|