|
|
TaskSubCommonView = TaskSubCommonView or BaseClass(BaseItem)
|
|
local TaskSubCommonView = TaskSubCommonView
|
|
|
|
|
|
function TaskSubCommonView:__init(parent_wnd)
|
|
self.base_file = "task"
|
|
self.layout_file = "TaskSubCommonView"
|
|
self.model = TaskModel:getInstance()
|
|
self.layer_name = "UI"
|
|
self.award_item_list = {}
|
|
self.show_tabs = {}
|
|
self.last_click_time = 0
|
|
self:Load()
|
|
end
|
|
|
|
|
|
function TaskSubCommonView:__delete()
|
|
|
|
if self.task_event_id then
|
|
self.model:UnBind(self.task_event_id)
|
|
self.task_event_id = nil
|
|
end
|
|
|
|
for i,item in pairs(self.award_item_list) do
|
|
item:DeleteMe()
|
|
end
|
|
|
|
self.award_item_list = {}
|
|
|
|
if self.verTabBar then
|
|
self.verTabBar:DeleteMe()
|
|
end
|
|
self.verTabBar = nil
|
|
end
|
|
|
|
function TaskSubCommonView:Load_callback()
|
|
|
|
self.task_desc_txt,
|
|
self.level_txt,
|
|
self.opt_btn_txt,
|
|
self.empty_tip_txt,
|
|
self.guild_vip_desc_txt = self:GetChildTexts({
|
|
"MessagePanel/TaskDesc",
|
|
"MessagePanel/Level",
|
|
"MessagePanel/OptBtn/Text",
|
|
"EmptyPanel/EmptyTip",
|
|
"MessagePanel/GuildDesc/VipDesc",
|
|
})
|
|
|
|
self.message_panel,
|
|
self.empty_panel,
|
|
self.opt_btn,
|
|
self.opt_btn_bg,
|
|
self.finish_btn,
|
|
self.award_title_con,
|
|
self.guild_desc = self:GetChildGameObjects({
|
|
"MessagePanel",
|
|
"EmptyPanel",
|
|
"MessagePanel/OptBtn",
|
|
"MessagePanel/OptBtn/Bg",
|
|
"MessagePanel/FinishBtn",
|
|
"MessagePanel/3",
|
|
"MessagePanel/GuildDesc",
|
|
})
|
|
|
|
self.mContent,
|
|
self.effect,
|
|
self.bar_parent = self:GetChildTransforms({
|
|
"MessagePanel/ScrollView/Viewport/Content",
|
|
"MessagePanel/OptBtn/Effect",
|
|
"Info",
|
|
})
|
|
|
|
self:InitEvent()
|
|
|
|
if self.need_refreshData then
|
|
self:SetData(self.parent_index,self.sub_index)
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:InitEvent()
|
|
|
|
local function onClickHandler(target)
|
|
if target == self.opt_btn then
|
|
if not self.data then
|
|
return
|
|
end
|
|
if Status.NowTime - self.last_click_time < 1 then
|
|
return
|
|
end
|
|
self.last_click_time = Status.NowTime
|
|
if self.data.mainTip then
|
|
GlobalEventSystem:Fire(EventName.OPEN_DAILY_VIEW)
|
|
self.model:Fire(TaskEvent.CLOSE_TASK_VIEW)
|
|
else
|
|
if self:IsExtendFinish() then
|
|
GlobalEventSystem:Fire(TaskEventType.SEND_TASK_FINISH, self.data.id)
|
|
else
|
|
self:AutoFindWay()
|
|
end
|
|
end
|
|
elseif target == self.finish_btn then
|
|
--只有赏金或社团任务才能直接完成
|
|
if not self.data then
|
|
return
|
|
end
|
|
if self.model.not_show_alert then
|
|
--不提示,直接完成
|
|
if Status.NowTime - self.model.last_time > 1 then
|
|
local need_jin = self.model:GetCostFinishTask(self.data.type)
|
|
if GoodsModel:getInstance():IsJinEnough(need_jin) then
|
|
self.model.last_time = Status.NowTime
|
|
GlobalEventSystem:Fire(TaskEventType.SEND_TASK_FINISH, self.data.id)
|
|
else
|
|
if ClientConfig.alpha_mode then
|
|
Message.show("您的彩钻余额不足")
|
|
return
|
|
end
|
|
GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true)
|
|
end
|
|
end
|
|
else
|
|
GlobalEventSystem:Fire(EventName.OPEN_TASK_FINISH_TIP_VIEW, true, self.data.type, self.data.id)
|
|
end
|
|
end
|
|
end
|
|
|
|
AddClickEvent(self.opt_btn,onClickHandler)
|
|
AddClickEvent(self.finish_btn,onClickHandler)
|
|
-- 刷新列表
|
|
local function onUpdateView( )
|
|
if not self.data then
|
|
return
|
|
end
|
|
|
|
local task_id = self.data.id
|
|
self.tab_data = self:GetDailyTabData()
|
|
local main_index,sub_index = self:GetTabIndexByTaskId(task_id)
|
|
if main_index ~= 0 and self.verTabBar then
|
|
self.verTabBar:SetSelectTab(main_index,sub_index,true)
|
|
else
|
|
self:SetData()
|
|
end
|
|
end
|
|
self.task_event_id = self.model:Bind(TaskEvent.TASK_LIST_INIT,onUpdateView)
|
|
end
|
|
|
|
function TaskSubCommonView:ShowMessagePanel(bool)
|
|
if bool then
|
|
if not self.message_panel.activeSelf then
|
|
self.message_panel:SetActive(true)
|
|
end
|
|
|
|
if self.empty_panel.activeSelf then
|
|
self.empty_panel:SetActive(false)
|
|
end
|
|
else
|
|
if self.message_panel.activeSelf then
|
|
self.message_panel:SetActive(false)
|
|
end
|
|
|
|
if not self.empty_panel.activeSelf then
|
|
self.empty_panel:SetActive(true)
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:AutoFindWay()
|
|
if self.data then
|
|
self.model:ClearCollectTaskId()
|
|
self.model:TaskClickFun(self.data)
|
|
self.model:Fire(TaskEvent.CLOSE_TASK_VIEW)
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:GetDefaultSelectIndex()
|
|
|
|
if self.parent_index and self.sub_index then
|
|
local parent_index = self.parent_index
|
|
local sub_index = self.sub_index
|
|
if self.sub_index == 0 then
|
|
local data = self.tab_data[self.parent_index]
|
|
if data and #data.sub_tab > 0 then
|
|
sub_index = 1
|
|
end
|
|
end
|
|
self.parent_index = false
|
|
self.sub_index = false
|
|
return parent_index,sub_index
|
|
end
|
|
|
|
if not self.tab_data then
|
|
return 1,0
|
|
end
|
|
|
|
for index,data in ipairs(self.tab_data) do
|
|
if #data.sub_tab > 0 then
|
|
return index,1
|
|
end
|
|
end
|
|
|
|
return 1,0
|
|
end
|
|
|
|
function TaskSubCommonView:CreateNewUICusVerTabBar()
|
|
|
|
self.tab_data = self:GetDailyTabData()
|
|
|
|
if not self.verTabBar then
|
|
self.verTabBar = NewUICusVerTabBar.New(self.bar_parent, Vector2(280, 580), TaskVerTabSubBtn, co.TableXY(274, 70),co.TableXY(140, -103))
|
|
end
|
|
|
|
local function select_callback(parent_index,sub_index,data)
|
|
self:SeletedTabbar(parent_index,sub_index,data)
|
|
end
|
|
|
|
self.verTabBar:SetTabBars(self.tab_data, select_callback, true, true)
|
|
end
|
|
|
|
function TaskSubCommonView:SeletedTabbar(parent_index,sub_index)
|
|
|
|
self.parent_index = parent_index
|
|
self.sub_index = sub_index
|
|
|
|
if self.verTabBar ~= nil then
|
|
self.verTabBar:SetTabBarIndex(parent_index,sub_index)
|
|
self:SwitchBar()
|
|
end
|
|
end
|
|
|
|
|
|
function TaskSubCommonView:SwitchBar()
|
|
|
|
local parent_index,sub_index = self.verTabBar:GetCurrentSelectIndex()
|
|
local has_task = false
|
|
if parent_index > 0 and sub_index > 0 then
|
|
local data = self.tab_data[parent_index]
|
|
if not data then
|
|
return
|
|
end
|
|
data = data.sub_tab[sub_index]
|
|
if data then
|
|
has_task = true
|
|
self:ShowMessagePanel(true)
|
|
self:SelectTask(data)
|
|
end
|
|
end
|
|
if not has_task then
|
|
if parent_index > 0 then
|
|
local data = self.tab_data[parent_index]
|
|
|
|
if not data then
|
|
return
|
|
end
|
|
|
|
if #data.sub_tab == 0 then
|
|
self:ShowMessagePanel(false)
|
|
|
|
if self.verTabBar then
|
|
self.verTabBar:CancelCurrSelect()
|
|
end
|
|
|
|
local str = ""
|
|
local real_index = self:GetRealTabIndex(parent_index)
|
|
|
|
if real_index == 1 then
|
|
str = "您已完成今天的日常任务\n每天凌晨4:00重置哦!"
|
|
elseif real_index == 2 then
|
|
local guild_id = RoleManager:getInstance():GetMainRoleVo().guild_id
|
|
if guild_id == 0 then
|
|
str = "先加入社团,再来领取社团任务吧!"
|
|
else
|
|
str = "您已完成今日份的社团任务\n每天凌晨4点重置哦!"
|
|
end
|
|
elseif real_index == 3 then
|
|
str = string.format("暂无%s", TaskModel.TaskTypeStr3[TaskType.TRUN_LINE])
|
|
end
|
|
|
|
self.empty_tip_txt.text = str
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:SetData(taskType,task_id,parent_index,sub_index)
|
|
|
|
self.parent_index = parent_index or self.parent_index
|
|
self.sub_index = sub_index or self.sub_index
|
|
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
|
|
self:CreateNewUICusVerTabBar()
|
|
|
|
local parent_index,sub_index = self:GetDefaultSelectIndex()
|
|
self:SeletedTabbar(parent_index,sub_index,true)
|
|
self.verTabBar:SetSelectTab(parent_index,sub_index,true)
|
|
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:GetTabIndexByTaskId(task_id)
|
|
if not self.tab_data then
|
|
return 0,0
|
|
end
|
|
|
|
for index,data in ipairs(self.tab_data) do
|
|
for index1,data1 in ipairs(data.sub_tab) do
|
|
if data1.id == task_id then
|
|
return index,index1
|
|
end
|
|
end
|
|
end
|
|
|
|
return 0,0
|
|
end
|
|
|
|
function TaskSubCommonView:SelectTask(task_vo)
|
|
|
|
self.data = task_vo
|
|
|
|
self.model:MakeTaskTip(task_vo)
|
|
|
|
self:ShowMessagePanel(true)
|
|
local temp_award_tab = {}
|
|
self.task_desc_txt.text = Trim(task_vo.tipContent)
|
|
self.level_txt.text = string.format("等级要求:<color=#439a13>%d级</color>",task_vo.level)
|
|
--日常任务
|
|
if task_vo.type == TaskType.GUILD_LINE then
|
|
|
|
if task_vo.award_list and #task_vo.award_list > 0 then
|
|
local temp = DeepCopy(task_vo.award_list[1])
|
|
temp.is_guild = true
|
|
|
|
for index,data in ipairs(task_vo.award_list) do
|
|
table.insert(temp_award_tab,data)
|
|
end
|
|
local function sort_func(vo1,vo2)
|
|
local type1 = tonumber(vo1[1]) or 0
|
|
local type2 = tonumber(vo2[1]) or 0
|
|
return type1 < type2
|
|
end
|
|
|
|
table.sort(temp_award_tab,sort_func)
|
|
-- local lv = GuildModel:getInstance():GetGuildBuildLvInfo(6)
|
|
-- if lv and lv > 1 then
|
|
-- table.insert(temp_award_tab,temp)
|
|
-- end
|
|
end
|
|
|
|
self.guild_desc:SetActive(true)
|
|
-- local lv = GuildModel:getInstance():GetGuildBuildLvInfo(6)
|
|
-- self.guild_desc:GetComponent("Text").text = "社团任务经验加成:<color='#4eae1a'>+"..GuildModel:getInstance():GetGuildTaskAddition(lv).."%</color>"
|
|
|
|
local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag
|
|
if vip_flag >= 4 then
|
|
self.guild_vip_desc_txt.text = "已开启特权:<color='#4eae1a'>自动进行社团任务</color>"
|
|
else
|
|
self.guild_vip_desc_txt.text = "提升至V4可开启特权:<color='#4eae1a'>自动进行社团任务</color>"
|
|
end
|
|
DialogueModel:getInstance():Fire(DialogueModel.REQUEST_CCMD_EVENT, 30011, task_vo.id)
|
|
elseif task_vo.type == TaskType.BOUNTY_LINE then
|
|
if task_vo.award_list and #task_vo.award_list > 0 then
|
|
local temp = DeepCopy(task_vo.award_list[1])
|
|
temp.is_vip = true
|
|
for index,data in ipairs(task_vo.award_list) do
|
|
table.insert(temp_award_tab,data)
|
|
end
|
|
local function sort_func(vo1,vo2)
|
|
local type1 = tonumber(vo1[1]) or 0
|
|
local type2 = tonumber(vo2[1]) or 0
|
|
return type1 < type2
|
|
end
|
|
|
|
table.sort(temp_award_tab,sort_func)
|
|
local vip_lv = RoleManager.Instance.mainRoleInfo.vip_flag
|
|
|
|
if vip_lv and vip_lv ~= 0 then
|
|
table.insert(temp_award_tab,temp)
|
|
end
|
|
end
|
|
self.guild_desc:SetActive(false)
|
|
|
|
DialogueModel:getInstance():Fire(DialogueModel.REQUEST_CCMD_EVENT, 30011, task_vo.id)
|
|
elseif task_vo.type == TaskType.TRUN_LINE then
|
|
self.guild_desc:SetActive(false)
|
|
end
|
|
|
|
|
|
local award_list = temp_award_tab or {}
|
|
for i,v in ipairs(award_list) do
|
|
local item = self.award_item_list[i]
|
|
if item == nil then
|
|
item = AwardItem.New(self.mContent)
|
|
item:SetItemSize(80, 80)
|
|
self.award_item_list[i] = item
|
|
end
|
|
|
|
item:SetVisible(true)
|
|
local goods_id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
|
|
item:SetData(goods_id, v[3], nil, nil, lock)
|
|
if v.is_guild then
|
|
item:SetVipAdditionTip(false)
|
|
item:SetGuildAdditionTip(true)
|
|
elseif v.is_vip then
|
|
item:SetGuildAdditionTip(false)
|
|
item:SetVipAdditionTip(true)
|
|
end
|
|
end
|
|
|
|
self.mContent.sizeDelta = Vector2(#award_list * 85,100)
|
|
|
|
if #award_list > 0 then
|
|
self.award_title_con:SetActive(true)
|
|
else
|
|
self.award_title_con:SetActive(false)
|
|
end
|
|
|
|
for i = #award_list + 1, #self.award_item_list do
|
|
self.award_item_list[i]:SetVisible(false)
|
|
end
|
|
|
|
self:SetOptBtnState(task_vo)
|
|
self:SetFinishBtnState(task_vo)
|
|
end
|
|
|
|
function TaskSubCommonView:SetOptBtnState(taskVO)
|
|
if taskVO.isFinish then
|
|
self.opt_btn:SetActive(false)
|
|
else
|
|
self.opt_btn:SetActive(true)
|
|
if taskVO.acceptType == 1 then
|
|
if taskVO.mainTip then
|
|
self.opt_btn_txt.text = "前往日常"
|
|
self:ClearEffect()
|
|
else
|
|
self.opt_btn_txt.text = "领取任务"
|
|
--self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true)
|
|
end
|
|
else
|
|
self.opt_btn_txt.text = "立即前往"
|
|
self.opt_btn_bg:SetActive(false)
|
|
self:ClearEffect()
|
|
--如果是支线已完成的
|
|
if self:IsExtendFinish() then
|
|
self.opt_btn_txt.text = "领取奖励"
|
|
self.opt_btn_bg:SetActive(true)
|
|
-- self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:SetFinishBtnState(taskVO)
|
|
if taskVO.id == Config.ConfigTaskEffect.guildTaskTipId or taskVO.id == Config.ConfigTaskEffect.bountyTaskTipId then
|
|
self.finish_btn:SetActive(false)
|
|
return
|
|
end
|
|
if taskVO.type == TaskType.BOUNTY_LINE or taskVO.type == TaskType.GUILD_LINE then
|
|
self.finish_btn:SetActive(true)
|
|
else
|
|
self.finish_btn:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:IsExtendFinish( )
|
|
if self.model:IsNeedClickTask(self.data) then
|
|
--点击判断是否已经完成任务,是的话发协议完成任务
|
|
local tip = self.model:GetExtendSpecialTip(self.data)
|
|
if tip and tip.isFinish == 1 then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
function TaskSubCommonView:ClearEffect( )
|
|
self:ClearUIEffect(self.effect)
|
|
end
|
|
|
|
--获取任务面板的支线数据
|
|
function TaskSubCommonView:GetDailyTabData()
|
|
local tab_data = {
|
|
[1] = {main_tab = "日常任务", sub_tab = {}},
|
|
}
|
|
|
|
local taskVo = self.model:GetBountyTipTask()
|
|
if taskVo then
|
|
--当日赏金任务任务未做
|
|
tab_data[1].sub_tab = {[1] = taskVo}
|
|
else
|
|
tab_data[1].sub_tab = self.model:GetTabData(TaskType.BOUNTY_LINE)
|
|
end
|
|
|
|
table.insert(self.show_tabs,1)
|
|
|
|
local playerLv = RoleManager:getInstance():GetMainRoleVo().level
|
|
if playerLv >= Config.ConfigOpenLv.Other.guild_task then
|
|
local guild_id = RoleManager:getInstance():GetMainRoleVo().guild_id
|
|
tab_data[2] = {main_tab = "社团任务", sub_tab = {}}
|
|
table.insert(self.show_tabs,2)
|
|
|
|
if guild_id > 0 then
|
|
local taskVo = self.model:GetGuildTipTask()
|
|
if taskVo then
|
|
--当日社团任务任务未做
|
|
tab_data[2].sub_tab = {[1] = taskVo}
|
|
else
|
|
tab_data[2].sub_tab = self.model:GetTabData(TaskType.GUILD_LINE)
|
|
end
|
|
end
|
|
end
|
|
|
|
if playerLv >= Config.ConfigOpenLv.Other.turn and self.model:HasTurnLine() then
|
|
tab_data[3] = {main_tab = "转生任务", sub_tab = {}}
|
|
tab_data[3].sub_tab = self.model:GetTabData(TaskType.TRUN_LINE)
|
|
|
|
table.insert(self.show_tabs,3)
|
|
end
|
|
|
|
return tab_data
|
|
end
|
|
|
|
function TaskSubCommonView:GetRealTabIndex(index)
|
|
for i,parent_index in ipairs(self.show_tabs) do
|
|
if parent_index == index then
|
|
return i
|
|
end
|
|
end
|
|
return 1
|
|
end
|
|
|