源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

374 lines
11 KiB

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