源战役客户端
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.
 
 
 
 
 

352 rivejä
13 KiB

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 = "<color=".."#a77755"..">"..start_time.." ~ "..end_time.."</color>"
-- self.desc.text = "<color=".."#a77755"..">"..act_data.desc.."</color>"
-- 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 = "<color=#835741>【活动时间】</color>", fontSize = 22, offset_x = 0}
-- table.insert(total_vo, text_vo)
-- text_vo = {text = "<color=#a77755>"..start_time.." ~ "..end_time.."</color>", fontSize = 20, offset_x = 20}
-- table.insert(total_vo, text_vo)
-- text_vo = {text = "<color=#835741>【活动介绍】</color>", fontSize = 22, offset_x = 0}
-- table.insert(total_vo, text_vo)
-- text_vo = {text = "<color=#a77755>"..act_data.desc.."</color>", 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