|
|
- CSMainTaskView = CSMainTaskView or BaseClass(BaseView)
- local CSMainTaskView = CSMainTaskView
-
- function CSMainTaskView:__init()
- self.base_file = "csMain"
- self.layout_file = "CSMainTaskView"
- self.layer_name = "Activity"
- self.destroy_imm = true
- self.use_background = true
- self.change_scene_close = true
- self.hide_maincancas = true --是否隐藏主界面
- self.append_to_ctl_queue = false --是否要添加进界面堆栈
- self.need_show_money = false --是否要显示顶部的金钱栏
- self.is_set_zdepth = true
-
- self.model = CSMainModel:getInstance()
-
- self.current_index = nil
-
- 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 CSMainTaskView:Open(index)
- self.current_index = index or 1
- BaseView.Open(self)
- end
-
- function CSMainTaskView:LoadSuccess()
- local nodes = {
- "closeBtn:obj", "bg:raw", "helpBtn:obj",
- "taskTabCon/tab3:obj", "taskTabCon/tab3/tabSelect3:obj", "taskTabCon/tab3/tabRed3:obj", "taskTabCon/tab3/tabText3:tmp",
- "taskTabCon/tab2:obj", "taskTabCon/tab2/tabSelect2:obj", "taskTabCon/tab2/tabRed2:obj", "taskTabCon/tab2/tabText2:tmp",
- "taskTabCon/tab1:obj", "taskTabCon/tab1/tabSelect1:obj", "taskTabCon/tab1/tabRed1:obj", "taskTabCon/tab1/tabText1:tmp",
- "ScrollView", "ScrollView/Viewport/Content",
- "activeCon/slider:img",
- "activeCon/awardCon4", "activeCon/awardCon2", "activeCon/awardCon3", "activeCon/awardCon1", "activeCon/awardCon5",
- "activeCon/activeDotNum5:tmp", "activeCon/activeDotNum4:tmp", "activeCon/activeDotNum3:tmp", "activeCon/activeDotNum1:tmp", "activeCon/activeDotNum2:tmp",
- "activeCon/dot1:img", "activeCon/dot3:img", "activeCon/dot2:img", "activeCon/dot4:img", "activeCon/dot5:img",
- "activeCon/awardGetFlag5:obj", "activeCon/awardGetFlag4:obj", "activeCon/awardGetFlag1:obj", "activeCon/awardGetFlag3:obj", "activeCon/awardGetFlag2:obj",
- "activeNum:txt", "armsNum:tmp",
- "activeCon/awardClick1:obj", "activeCon/awardClick2:obj", "activeCon/awardClick3:obj", "activeCon/awardClick4:obj", "activeCon/awardClick5:obj",
- "activeCon/awardRed5:obj", "activeCon/awardRed2:obj", "activeCon/awardRed3:obj", "activeCon/awardRed4:obj", "activeCon/awardRed1:obj",
- }
- self:GetChildren(nodes)
- lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("cs_main_daily_task_bg"))
-
- self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60301)
-
- self.award_item_list = {}
- for i=1,5 do
- self.award_item_list[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self["awardCon"..i])
- self.award_item_list[i]:SetItemSize(62, 62)
- -- self.award_item_list[i]:SetAnchoredPosition(0,0)
- end
-
- end
-
- function CSMainTaskView:AddEvent()
- local on_click = function ( click_obj )
- if self.closeBtn_obj == click_obj then
- self:Close()
- elseif self.tab3_obj == click_obj then
- self:UpdateTaskCon(3)
- elseif self.tab2_obj == click_obj then
- self:UpdateTaskCon(2)
- elseif self.tab1_obj == click_obj then
- self:UpdateTaskCon(1)
- elseif self.awardClick1_obj == click_obj then
- self:DoGetActiveReward(1)
- elseif self.awardClick2_obj == click_obj then
- self:DoGetActiveReward(2)
- elseif self.awardClick3_obj == click_obj then
- self:DoGetActiveReward(3)
- elseif self.awardClick4_obj == click_obj then
- self:DoGetActiveReward(4)
- elseif self.awardClick5_obj == click_obj then
- self:DoGetActiveReward(5)
- elseif self.helpBtn_obj == click_obj then
- EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 60302)
- end
- end
- AddClickEvent(self.closeBtn_obj, on_click)
- AddClickEvent(self.tab3_obj, on_click)
- AddClickEvent(self.tab2_obj, on_click)
- AddClickEvent(self.tab1_obj, on_click)
- AddClickEvent(self.awardClick1_obj, on_click)
- AddClickEvent(self.awardClick2_obj, on_click)
- AddClickEvent(self.awardClick3_obj, on_click)
- AddClickEvent(self.awardClick4_obj, on_click)
- AddClickEvent(self.awardClick5_obj, on_click)
- AddClickEvent(self.helpBtn_obj, on_click)
-
- --刷新任务、活跃、军备展示
- local function on_update_task_view()
- self:UpdateTaskCon(self.current_index)
- self:UpdateArmsNum()
- self:UpdateActiveCon()
- end
- self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_TASK_VIEW, on_update_task_view)
-
- local function on_active_process_change_var()
- self:UpdateActiveCon()
- end
- self.on_active_process_change_var_id = self.model:BindOne("active_process", on_active_process_change_var)
-
- local function on_arms_num_change_var()
- self:UpdateArmsNum()
- end
- self.on_arms_num_change_var_id = self.model:BindOne("arms_num", on_arms_num_change_var)
-
- local function on_active_dot_change_var()
- self:UpdateActiveCon()
- end
- self.on_active_dot_change_var_id = self.model:BindOne("active_dot", on_active_dot_change_var)
-
- local function update_red_dot(tab_id)
- if not self.is_loaded then return end
- if tab_id == CSMainConst.RedType.Task then
- self:UpdateTaskTabRed()
- end
- end
- self:BindEvent(self.model, CSMainConst.ANS_UPDATE_RED_DOT, update_red_dot)
-
- local function update_task_item_sort()
- if not self.is_loaded then return end
- self:UpdateTaskCon(self.current_index)
- end
- self:BindEvent(self.model, CSMainConst.REFRESH_CS_MAIN_TASK_ITEM_SORT, update_task_item_sort)
-
- local function CLICK_GET_WAY_ITEM( )
- self:Close()
- end
- self:BindEvent(GlobalEventSystem, EventName.CLICK_GET_WAY_ITEM, CLICK_GET_WAY_ITEM)
-
- end
-
- function CSMainTaskView:DoGetActiveReward(index)
- local active_process = self.model:GetCSMainActiveProcess()
- local active_dot = self.model:GetCSMainActiveDot()
- local active_cfg = self.model:GetCSMainActiveRewardsCfgByProgress(active_dot)
-
- local need_cfg = nil
- for i,v in ipairs(active_cfg) do
- if i == index then
- need_cfg = v
- break
- end
- end
-
- if need_cfg and not self.model:IsCSMainActiveDotRewardGet(need_cfg.id) then
- if active_process >= need_cfg.active then
- self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60304,0,need_cfg.id)
- else
- if self.award_item_list[index] then
- self.award_item_list[index]:ManuallyClickFun(self.award_item_list[index].gameObject)
- end
- end
- else
- if self.award_item_list[index] then
- self.award_item_list[index]:ManuallyClickFun(self.award_item_list[index].gameObject)
- end
- end
- end
-
- function CSMainTaskView:OpenSuccess()
-
- end
-
- function CSMainTaskView:UpdateView( )
-
- end
-
- function CSMainTaskView:UpdateTaskCon(color_index)
- self.current_index = color_index
-
- for i=1,3 do
- local select_tmp_mat = ""
- if i == 1 then--B
- select_tmp_mat = ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab
- elseif i == 2 then--A
- select_tmp_mat = ShaderTools.TMPSharedMaterialType.HKYTW7OutlinePurple
- elseif i == 3 then--S
- select_tmp_mat = ShaderTools.TMPSharedMaterialType.HKYTW7OutlineDarkOrangeBtn
- end
- if i == color_index then
- self["tabSelect"..i.."_obj"]:SetActive(true)
- SetTMPSharedMaterial(self["tabText"..i.."_tmp"], select_tmp_mat)
- self["tabText"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("ffffff")
- else
- self["tabSelect"..i.."_obj"]:SetActive(false)
- SetTMPSharedMaterial(self["tabText"..i.."_tmp"], ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault)
- self["tabText"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("A0A4A8")
- end
- end
-
- local task_cfg_list = self.model:GetCSMainTaskCfgAfterSort(color_index)
- if not self.item_list_com then
- self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
- end
- self.item_list_com:Reset()
- local info = {
- data_list = task_cfg_list,
- item_con = self.Content,
- item_class = CSMainTaskItem,
- item_width = 839,
- item_height = 100,
- space_y = 8,
- start_x = 6.5,
- start_y = -5,
- scroll_view = self.ScrollView,
- create_frequency = 0.01,
- on_update_item = function(item, i, v)
- item:SetData(v,i)
- end,
- }
- self.item_list_com:UpdateItems(info)
-
- self:UpdateTaskTabRed()
- end
-
- function CSMainTaskView:UpdateTaskTabRed( )
- local red_s = self.model:GetTaskRedByColor(3)
- local red_a = self.model:GetTaskRedByColor(2)
- local red_b = self.model:GetTaskRedByColor(1)
-
- self.tabRed3_obj:SetActive(red_s)
- self.tabRed2_obj:SetActive(red_a)
- self.tabRed1_obj:SetActive(red_b)
- end
-
- function CSMainTaskView:UpdateActiveCon( )
- local active_process = self.model:GetCSMainActiveProcess()
- local active_dot = self.model:GetCSMainActiveDot()
- local active_cfg = self.model:GetCSMainActiveRewardsCfgByProgress(active_dot)
-
-
- -- --active_dot转化出一个1到5的值用于和1到5进行比较
- -- local mulit = math.floor(active_dot/5)
- -- local remain = active_dot%5
- -- local trans_dot = active_dot
- -- if active_dot == 0 then
- -- trans_dot = 0
- -- else
- -- if remain ~= 0 then
- -- trans_dot = active_dot-mulit*5
- -- else
- -- trans_dot = active_dot-(mulit-1)*5
- -- end
- -- end
-
- self.activeNum_txt.text = active_process
-
- for i,v in ipairs(active_cfg) do--这里取了最新的5条配置,所以i也是1到5
- self["activeDotNum"..i.."_tmp"].text = v.active
- local reward_cfg = stringtotable(v.awards)
- if self.model:IsCSMainActiveDotRewardGet(v.id) then--已经领取了
- self["activeDotNum"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("fefeff")
- self["awardGetFlag"..i.."_obj"]:SetActive(true)
- self.award_item_list[i]:SetData(reward_cfg[1][2],reward_cfg[1][3],nil,nil,nil,nil,nil,nil,nil,true)
- self.award_item_list[i]:SetIconGray(true)
- self["awardRed"..i.."_obj"]:SetActive(false)
- else--等待领取或不可领取
- self["activeDotNum"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("a9c1e1")
- self["awardGetFlag"..i.."_obj"]:SetActive(false)
- self.award_item_list[i]:SetData(reward_cfg[1][2],reward_cfg[1][3])
- self.award_item_list[i]:SetIconGray(false)
- if active_process >= v.active then--可以领取
- self["awardRed"..i.."_obj"]:SetActive(true)
- else
- self["awardRed"..i.."_obj"]:SetActive(false)
- end
- end
- if i == 5 then
- lua_resM:setImageSprite(self, self["dot"..i.."_img"], "csMain_asset","cs_main_task_dot_big",true)
- else
- lua_resM:setImageSprite(self, self["dot"..i.."_img"], "csMain_asset","cs_main_task_dot_small",true)
- end
- SetImageGray(self["dot"..i.."_img"], not self.model:IsCSMainActiveDotRewardGet(v.id))
- end
-
- local max_process = active_cfg[5].active
- local last_page_active_cfg = self.model:GetCSMainLastPageActiveCfg(active_cfg[1].id-1) --上一页的活跃配置
- local last_page_max_process = 0--上一页的最高活跃
- if last_page_active_cfg then
- last_page_max_process = last_page_active_cfg[5].active
- end
-
- local final_fill_amount = 0
- if active_process <= active_cfg[1].active then
- final_fill_amount = 0.1 + (active_process-last_page_max_process)/(active_cfg[1].active-last_page_max_process)*0.1
- else
- final_fill_amount = 0.2
- for i=2,5 do
- if active_process < active_cfg[i].active then
- final_fill_amount = final_fill_amount + (active_process-active_cfg[i-1].active)/(active_cfg[i].active-active_cfg[i-1].active)*0.2
- break
- else
- final_fill_amount = final_fill_amount + 0.2
- end
- end
- end
- self.slider_img.fillAmount = final_fill_amount
- end
-
- function CSMainTaskView:UpdateArmsNum( )
- local arms_num = self.model:GetCSMainArmsNum()
- local color = arms_num > 0 and ColorUtil.GREEN_TIPS or ColorUtil.RED_DARK
- self.armsNum_tmp.text = string.format("星域活跃:<%s>%s</color>", color, arms_num)
- end
-
- function CSMainTaskView:SwitchTab( index )
- self.current_index = index
-
- if index == 1 then
-
- elseif index == 2 then
-
- end
- end
-
- function CSMainTaskView:DestroySuccess( )
- if self.on_active_process_change_var_id then
- self.model:UnBind(self.on_active_process_change_var_id)
- self.on_active_process_change_var_id = nil
- end
- if self.on_arms_num_change_var_id then
- self.model:UnBind(self.on_arms_num_change_var_id)
- self.on_arms_num_change_var_id = nil
- end
- if self.on_active_dot_change_var_id then
- self.model:UnBind(self.on_active_dot_change_var_id)
- self.on_active_dot_change_var_id = nil
- end
- for k,v in pairs(self.award_item_list) do
- if v then
- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
- v = nil
- end
- end
- self.award_item_list = {}
- end
|