CollectingActSubView = CollectingActSubView or BaseClass(BaseItem) function CollectingActSubView:__init(parent, prefab_asset, layer_name, index, base_type, sub_type, kind) self.base_file = "collectingAct" self.layout_file = "CollectingActSubView" self.layer_name = layer_name or "UI" self.data = nil self.cus_model = CustomActivityModel:getInstance() self.model = KFRevelModel:getInstance() self.exchange_list = {} self.exchange_item_list = {} self.show_num_index = nil self.base_type = CustomActivityModel.CustomActBaseType.KF_JI_ZI self.sub_type = sub_type self.act_type = self.cus_model:getActType(self.base_type,self.sub_type) self.grade = nil self.mod_id = nil self.counter_id = nil self.counter2index = {} -- self.use_local_view = true self:Load() end function CollectingActSubView:Load_callback() self.txtScroll = GetChildGameObjects(self.transform, { "title/txtScroll", }) self.scroll, self.item_con, self.txt_content, self.title = GetChildTransforms(self.transform, { "scrollView", "scrollView/Viewport/Content", "title/txtScroll/Viewport/Content", "title", }) self.time, self.desc, self.time_txt, self.desc_txt, self.leftTime_txt, self.leftTime = GetChildTexts(self.transform, { "title/time/val", "title/desc/val", "title/time", "title/desc", "title/leftTime", "title/leftTime/text", }) self.bg, self.bg2, self.left_bg, self.left_bg2 = GetChildImages(self.transform, { "bg", "bg2", "left_bg", "left_bg2", }) self.time_parent_outline = self.time_txt.transform:GetComponent("Outline") self.desc_parent_outline = self.desc_txt.transform:GetComponent("Outline") self.time_outline = self.time.transform:GetComponent("Outline") self.desc_outline = self.desc.transform:GetComponent("Outline") -- self.transform.localPosition = Vector2(-542, 290) local color = Color(219/255, 98/255, 77/255, 1) if self.act_type and self.act_type == Config.ConfigActStatic.ActType.OPEN then -- lua_resM:setOutsideImageSprite(self,self.bg,GameResPath.GetJpgImage("bg_kfColllecting"),false) -- lua_resM:setOutsideImageSprite(self,self.left_bg,GameResPath.GetKFActivityImage("kfCollecting_leftBg"),false) -- lua_resM:setOutsideImageSprite(self,self.left_bg,GameResPath.GetKFRevelActImage("kfkh_qtws")) lua_resM:setOutsideImageSprite(self, self.left_bg, GameResPath.GetKFRevelActImage("kfkh_jz_bg1"), false) -- self.scroll.transform.sizeDelta = Vector2(725,422) -- self.scroll.transform.anchoredPosition = co.TableXYZ(12.5, -128, 0) -- self.txtScroll:SetActive(true) self.time_txt.gameObject:SetActive(true) self.desc_txt.gameObject:SetActive(true) -- self.leftTime_txt.gameObject:SetActive(true) lua_resM:setOutsideImageSprite(self, self.bg2, GameResPath.GetKFRevelActImage("kfkh_jz_bg"), false) elseif self.act_type and self.act_type == Config.ConfigActStatic.ActType.RUN then self.title.anchoredPosition = co.TableXYZ(-53.6, 180, 0) self.item_con.sizeDelta = co.TableXY(816, self.item_con.sizeDelta.y) self.grid_layout = self.item_con:GetComponent("GridLayoutGroup") self.grid_layout.cellSize = Vector2(816, 105) self.grid_layout.spacing = Vector2(0, 1) self.scroll.transform.sizeDelta = Vector2(816,345) self.scroll.transform.anchoredPosition = Vector2(74,-178) self.transform.anchoredPosition = co.TableXYZ(0,0,0) self.bg.transform.sizeDelta = co.TableXY(861, 538) self.bg.transform.anchoredPosition = co.TableXYZ(0,0,0) lua_resM:setImageSprite(self, self.bg, "operateActivity_asset", "jcui_wpl_bg", false) self.bg2.transform.sizeDelta = co.TableXY(828, 140) self.bg2.transform.anchoredPosition = co.TableXYZ(0, 183, 0) lua_resM:setOutsideImageSprite(self, self.bg2, GameResPath.GetOperateActImage("jcui_xc8"), false) self.bg.gameObject:SetActive(true) self.bg2.gameObject:SetActive(true) self.time_txt.gameObject:SetActive(true) self.desc_txt.gameObject:SetActive(true) self.leftTime_txt.gameObject:SetActive(true) self.time_txt.transform.anchoredPosition = co.TableXYZ(-291, 60, 0) self.desc_txt.transform.anchoredPosition = co.TableXYZ(-291, 33, 0) self.leftTime_txt.transform.anchoredPosition = co.TableXYZ(-291, self.leftTime_txt.transform.anchoredPosition.y, 0) -- lua_resM:setImageSprite(self, self.left_bg2, "common_asset", "tyui_05b") self.left_bg2.transform.sizeDelta = co.TableXY(830, 357) self.left_bg2.transform.anchoredPosition = co.TableXYZ(0, -72, 0) self.left_bg2.gameObject:SetActive(true) self.desc.transform.sizeDelta = co.TableXY(780, 50) self.desc.transform.anchoredPosition = co.TableXYZ(344, -38, 0) color = Color(184/255, 81/255, 57/255, 1) end self.time_parent_outline.effectColor = color self.desc_parent_outline.effectColor = color self.time_outline.effectColor = color self.desc_outline.effectColor = color self:InitEvent() self:GetRewardList() if self.need_refreshData then self:RealSetData() end end function CollectingActSubView:InitEvent() local function updateExchange(data) if data == nil then return end if data.base_type == self.base_type and data.sub_type == self.sub_type then local index = self.counter2index[data.mod_id][data.counter_id] if index and self.exchange_item_list[index] then -- self.exchange_item_list[index]:SetText(data.count) end end end self.update_exchange_event_id = self.cus_model:Bind(CustomActivityModel.UPDATE_COLLECTING_EXCHANGE_NUM,updateExchange) local function updateItem(base_type, sub_type) -- if base_type and sub_type and self.base_type and self.sub_type and self.base_type == base_type and self.sub_type == sub_type then local list = self.cus_model.jizi_today_max_num_list for k,v in pairs(self.exchange_list) do if list then local vo for i,j in pairs(list) do if j and j.grade and v and v.grade and j.grade == v.grade then vo = j end end if vo and self.exchange_item_list[k] then self.exchange_item_list[k]:SetText2("今日可兑换:"..(vo.max_times - vo.receive_times)) end end end -- end end -- self.update_item_id = self.model:Bind(KFRevelModel.UPDATE_KF_VIEW_RED_SHOW, updateItem) self.update_item_id = self.cus_model:Bind(CustomActivityModel.UPDATE_ZIJI_MAXNUM, updateItem) local function requestExchangeNum(data) if data == nil or data.base_type ~= self.base_type or data.sub_type ~= self.sub_type then return end if self.base_type and self.sub_type then -- for i,v in ipairs(self.exchange_list) do -- if v.mod_id and v.counter_id then -- self.cus_model:Fire(CustomActivityModel.PROTO_CCMD_EVENT,33106,self.base_type,self.sub_type,v.mod_id,v.counter_id) -- end -- end self.cus_model:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33129, self.sub_type) end end self.request_exchange_event_id = self.cus_model:Bind(CustomActivityModel.REQUEST_COLLECTING_EXCHANGE_NUM,requestExchangeNum) end function CollectingActSubView:GetRewardList() local vo = self.cus_model:getActList(self.base_type,self.sub_type) local data = self.cus_model:getOneActRewardList(self.base_type,self.sub_type) if data == nil then return end self.exchange_list = data.reward_list table.sort(self.exchange_list,function(a,b) return a.grade > b.grade end) for i,v in ipairs(self.exchange_list) do if v.condition_list[1][3] ~= nil and tonumber(v.condition_list[1][3]) ~= 0 and v.condition_list[1][4] ~= nil and tonumber(v.condition_list[1][4]) ~= 0 then v.mod_id = tonumber(v.condition_list[1][3]) v.counter_id = tonumber(v.condition_list[1][4]) self.counter2index[v.mod_id]={} self.counter2index[v.mod_id][v.counter_id] = i end end end -- 开服活动调的是setData()方法 function CollectingActSubView:setData() self:RealSetData() end -- 运营活动调的是SetData()方法 function CollectingActSubView:SetData() self:RealSetData() end function CollectingActSubView:RealSetData() if not self.is_loaded then self.need_refreshData = true return end local len = #self.exchange_list for i = 1,len do if self.exchange_item_list[i] == nil then self.exchange_item_list[i] = ClActExchangeItem.New(self.item_con) end self.exchange_item_list[i]:SetData(self.exchange_list[i], self.base_type, self.sub_type) --self.exchange_item_list[i]:SetText() end local act_data = self.cus_model:getActList(self.base_type,self.sub_type) if act_data == nil then return end local start_time = TimeUtil:timeConversion(act_data.stime,"yyyy年mm月dd日 hh-MM") local end_time = TimeUtil:timeConversion(act_data.etime,"yyyy年mm月dd日 hh-MM") -- self.time.text = ""..start_time.." ~ "..end_time.."" -- self.desc.text = ""..act_data.desc.."" -- self.time.transform.parent.gameObject:SetActive(false) -- self.desc.transform.parent.gameObject:SetActive(false) if self.act_type and self.act_type == Config.ConfigActStatic.ActType.OPEN then -- if not self.has_set_data then -- local total_vo = {} -- local text_vo = {text = "【活动时间】", fontSize = 22, offset_x = 0} -- table.insert(total_vo, text_vo) -- text_vo = {text = ""..start_time.." ~ "..end_time.."", fontSize = 20, offset_x = 20} -- table.insert(total_vo, text_vo) -- text_vo = {text = "【活动介绍】", fontSize = 22, offset_x = 0} -- table.insert(total_vo, text_vo) -- text_vo = {text = ""..act_data.desc.."", fontSize = 20, offset_x = 20} -- table.insert(total_vo, text_vo) -- self:SetScrollText(self.txt_content, total_vo) -- end self.time.text = start_time.." ~ "..end_time self.desc.text = act_data.desc elseif self.act_type and self.act_type == Config.ConfigActStatic.ActType.RUN then self.time.text = start_time.." ~ "..end_time self.desc.text = act_data.desc -- self.leftTime.text = TimeUtil:timeConvert9(act_data.etime-act_data.stime)--TimeUtil:timeConvert12(act_data.etime-act_data.stime) self:StartTimer(act_data) end if self.base_type and self.sub_type then -- for i,v in ipairs(self.exchange_list) do -- if v.mod_id and v.counter_id then -- self.cus_model:Fire(CustomActivityModel.PROTO_CCMD_EVENT,33106,self.base_type,self.sub_type,v.mod_id,v.counter_id) -- end -- end self.cus_model:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33129, self.sub_type) end end function CollectingActSubView:StartTimer(act_data) if act_data then local function timer_func() local rest_time = act_data.etime - act_data.stime if rest_time and rest_time > 0 then local day = math.floor(rest_time / (24*60*60)) local hour = math.floor((rest_time % (24*60*60)) / (60*60)) local min = math.floor(((rest_time % (24*60*60)) % (60*60)) / 60) if day == 0 and hour == 0 and min == 0 then self.leftTime.text = string.format("0分%d秒", rest_time) else self.leftTime.text = string.format("%d天%d时%d分", day, hour, min) end else self:CancelTimer() end end if not self.timer then self.timer = GlobalTimerQuest:AddPeriodQuest(timer_func, 1) end timer_func() end end function CollectingActSubView:CancelTimer() self.leftTime.text = "活动已结束" if self.timer then GlobalTimerQuest:CancelQuest(self.timer) self.timer = nil end end function CollectingActSubView:__delete() if self.request_exchange_event_id then self.cus_model:UnBind(self.request_exchange_event_id) self.request_exchange_event_id = nil end if self.update_exchange_event_id then self.cus_model:UnBind(self.update_exchange_event_id) self.update_exchange_event_id = nil end if self.update_item_id then self.cus_model:UnBind(self.update_item_id) self.update_item_id = nil end for k,v in pairs(self.exchange_item_list) do v:DeleteMe() v = nil end self.exchange_item_list = {} end -- function CollectingActSubView:SetScrollText(parent_trans, total_vo) -- if not parent_trans and not total_vo and #total_vo < 0 then return end -- self.text_item = {} -- local len = #total_vo -- local offset_y = 0 -- for i = 1, len do -- local text_root -- local text_txt -- text_root = UiFactory.createChild(self.txt_content, UIType.Label, "label") -- text_txt = text_root:GetComponent("Text") -- text_txt.text = total_vo[i].text -- text_root.transform.pivot = Vector2(0,1) -- text_root.transform.anchorMin = Vector2(0, 1) -- text_root.transform.anchorMax = Vector2(0, 1) -- text_txt.alignment = UnityEngine.TextAnchor.UpperLeft -- text_txt.fontSize = total_vo[i].fontSize -- text_root.transform.sizeDelta = co.TableXY(self.txt_content.sizeDelta.x - total_vo[i].offset_x, text_txt.preferredHeight) -- text_root.transform.localPosition = co.TableXYZ(total_vo[i].offset_x, offset_y, 0) -- offset_y = offset_y + text_txt.preferredHeight -- table.insert(self.text_item, text_root) -- end -- self.txt_content.sizeDelta = co.TableXY(self.txt_content.sizeDelta.x, offset_y) -- self:ReSetPos(self.text_item, total_vo) -- end -- function CollectingActSubView:ReSetPos(text_item, total_vo) -- if not text_item and not total_vo then return end -- local offset_y = 0 -- for k,v in pairs(text_item) do -- if v then -- v.transform.localPosition = co.TableXYZ(total_vo[k].offset_x, offset_y, 0) -- local text_com = v:GetComponent("Text") -- offset_y = offset_y - text_com.preferredHeight -- end -- end -- self.has_set_data = true -- end