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, 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