源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

261 行
9.2 KiB

SevenDayTargetTaskItem = SevenDayTargetTaskItem or BaseClass(BaseItem)
local SevenDayTargetTaskItem = SevenDayTargetTaskItem
SevenDayTargetTaskItem.HEIGHT = 90
SevenDayTargetTaskItem.WIDTH = 527
SevenDayTargetTaskItem.START_X = 8
SevenDayTargetTaskItem.START_Y = -4
SevenDayTargetTaskItem.SPACE_Y = 0
local ICON_DES = {
[1] = "装备",
[2] = "社交",
[3] = "战魂",
[4] = "成长",
[5] = "制衣",
[6] = "宠物",
}
function SevenDayTargetTaskItem:__init()
self.base_file = "sevenDayTarget"
self.layout_file = "SevenDayTargetTaskItem"
self.model = SevenDayTargetModel:GetInstance()
self:Load()
end
function SevenDayTargetTaskItem:Load_callback()
self.nodes = {
"condition_text:tmp", "bg", "item_con", "star_con/star1:img", "star_con/star2:img", "star_con/star3:img",
"get_image:obj", "btn:obj:img", "btn/btn_red:obj", "btn/btn_text:tmp", "name_text:tmp",
"star_con", "icon:img", "lb_icon_des:tmp", "lock:obj", "lock/lockText:tmp",
}
self:GetChildren(self.nodes)
self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
self.awardItem:SetItemSize(62, 62)
SetAnchoredPositionX(self.lb_icon_des, -220)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function SevenDayTargetTaskItem:AddEvents( )
local function on_click( )
if self.model:TaskItemIsAniming() then
return
end
if self.can_receive then
self.model:Fire(SevenDayTargetModel.REQUEST_SEVEN_DAY_TARGET_SCMD, 17601, self.data.days, self.data.mod_id, self.data.sub_id)
else
if self.data.jump_id then
local data = stringtotable(self.data.jump_id)
if data and TableSize(data) > 0 then
if data[1] == 61000 then--进阶副本跳转特殊处理
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.OPEN_HALL_VIEW,BaseDungeonModel.DUN_TYPE.MATERIAL,data[2])
elseif data[1] == 46100 then--击杀特定boss的特殊处理
OpenFun.Open(461,0,nil,data[2])
else
if data[1] == 300 or data[1] == 500 then--任务类关界面 护送也关
self.model:Fire(SevenDayTargetModel.CLOSE_SEVEN_DAY_TARGET_MAIN_VIEW)
end
OpenFun.Open(data[1],data[2])
end
end
end
end
end
AddClickEvent(self.btn_obj, on_click)
end
function SevenDayTargetTaskItem:UpdateView( )
if not self.data then return end
local cur_num = 0
if self.server_data then
cur_num = self.server_data.progress
self.is_receive = self.server_data.is_receive == 1 and true or false
else
self.is_receive = false
end
local total_num = self.data.limit_times or 1
self.btn_red_obj:SetActive(false)
if cur_num >= total_num then
self.btn_text_tmp.text = "领取"
self.can_receive = true
self.btn_red_obj:SetActive(true)
lua_resM:setImageSprite(self, self.btn_img, "alphaCommon_asset", "tyui_btn_2")
SetTMPSharedMaterial(self.btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
else
self.btn_text_tmp.text = "前往"
self.can_receive = false
lua_resM:setImageSprite(self, self.btn_img, "alphaCommon_asset", "tyui_btn_1")
SetTMPSharedMaterial(self.btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn)
end
local color = cur_num >= total_num and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK
local desc = string.format("%s(%s/%s)", Trim(self.data.desc), HtmlColorTxt( cur_num, color) , total_num)
self.condition_text_tmp.text = string.gsub( desc, [[\n]], "\n" )
-- self.name_text_tmp.text = self.data.name
-- SetAnchoredPositionX(self.star_con, self.name_text_tmp.preferredWidth + 10 + 44)--44是文本的坐标
-- for i=1,3 do
-- if self.data.difficulty >= i then
-- lua_resM:setImageSprite(self, self["star"..i.."_img"], "sevenDayTarget_asset", "sevenDayTarget_item14")
-- else
-- lua_resM:setImageSprite(self, self["star"..i.."_img"], "sevenDayTarget_asset", "sevenDayTarget_item15")
-- end
-- end
local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(self.data.reward_info[1][1], self.data.reward_info[1][2])
self.awardItem:SetData(typeId, self.data.reward_info[1][3])
-- 图标
-- local cfg = OpenFun.LinkWin[self.data.mod_id.."@"..self.data.sub_id]
-- if cfg then
-- lua_resM:setImageSprite(self, self.icon_img, "activityIcon_asset", cfg.icon_res)
-- end
local cfg = Config.Sevengoaltask[string.format('%s@%s@%s', self.data.days, self.data.mod_id, self.data.sub_id)]
self.lb_icon_des_tmp.text = ICON_DES[cfg.task_tag]
lua_resM:setImageSprite(self, self.icon_img, "sevenDayTarget_asset", "sevenDayTarget_tag_" .. cfg.task_tag, true)
-- 锁定
local data = stringtotable(self.data.jump_id)
local cfg = OpenFun.LinkWin[data[1] .. "@" .. data[2]]
local is_open, conf = false, false
if cfg then
is_open, conf = GetModuleIsOpen(cfg.winId, cfg.subId)
else
is_open, conf = GetModuleIsOpen(self.data.mod_id, self.data.sub_id)
end
if is_open then
self.lock_obj:SetActive(false)
self.btn_obj:SetActive(not self.is_receive)
self.get_image_obj:SetActive(self.is_receive)
SetImageGray(self.icon_img, false)
else
-- local level = RoleManager.Instance.mainRoleInfo.level
if Trim(self.data.name) ~= "" then -- 有任务
self.lockText_tmp.text = string.format('%s解锁', HtmlColorTxt(Trim(self.data.name), ColorUtil.RED_DARK))
elseif conf then -- 没任务 说明是等级解锁
self.lockText_tmp.text = string.format('等级%s解锁', HtmlColorTxt( conf.open_lv, ColorUtil.RED_DARK))
else
print('=======Msh:SevenDayTargetTaskItem.lua[138] ==配置有误=====', self.data.mod_id, self.data.sub_id)
end
self.lock_obj:SetActive(true)
self.btn_obj:SetActive(false)
self.get_image_obj:SetActive(false)
SetImageGray(self.icon_img, true)
end
end
function SevenDayTargetTaskItem:SetCallBackFunc( func )
self.callback_func = func
end
function SevenDayTargetTaskItem:SetData( data,index,server_data )
self.data = data
self.index = index
self.server_data = server_data
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
----------领取位移刷新动画 by msh-start---------
-- 移动到新索引的位置
function SevenDayTargetTaskItem:MoveNewIndexPosAnimAndUpdate( old_index, new_index, new_data, new_server_data,anim_call_back )
local origin_pos = self:GetIndexPos(old_index)
local move_one_index_time = 0.15
local old_index = old_index
local new_server_data = new_server_data or nil
local anim_call_back = anim_call_back or nil
self.index = new_index -- 存一下新索引
-- 动画完成后更新索引
local last_func = function( )
if anim_call_back then
anim_call_back()
end
end
if new_index > old_index then -- 位置下移
-- 从目标索引位置右边 移动到目标索引位置
local move_func1 = function( )
local server_data = self.model:GetSevenDayTargetInfo(self.cur_select_day) or {}
self:SetData( new_data, new_index, new_server_data) -- 消失后 刷新
self:PlayLineAnim(self:GetIndexPos(new_index, SevenDayTargetTaskItem.WIDTH - 100),
self:GetIndexPos(new_index),
move_one_index_time,
last_func)
end
-- 先往右移
self:PlayLineAnim(origin_pos, self:GetIndexPos(old_index, SevenDayTargetTaskItem.WIDTH - 100),
move_one_index_time, move_func1)
elseif old_index - new_index == 1 then -- 上移一格
self:SetData( new_data, new_index, new_server_data)
self:PlayLineAnim(origin_pos, self:GetIndexPos(new_index), move_one_index_time ,last_func, move_one_index_time)
else -- 直接刷
self:SetData( new_data, new_index, new_server_data)
last_func()
end
end
-- 移动到目标位置
function SevenDayTargetTaskItem:PlayLineAnim( start_pos, end_pos, anim_time, end_func, delay_time )
self:SetPosition(start_pos.x, start_pos.y, start_pos.z)
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
local anim_time = anim_time or 0.2
local delay_time = delay_time or 0
-- 延迟
local action1 = cc.DelayTime.New( delay_time )
-- 位移
local function move_func( percent )
SetLocalPosition(self.transform, start_pos.x + (end_pos.x - start_pos.x) * percent,
start_pos.y + (end_pos.y - start_pos.y) * percent, 0)
end
local action2 = cc.CustomUpdate.New(anim_time, move_func)
-- 回调
local function callback_1()
if end_func then
end_func()
end
end
local call_func_1 = cc.CallFunc.New(callback_1)
local action10 = cc.Sequence.New( action1, action2, call_func_1 )
self:AddAction(action10, self.transform)
end
function SevenDayTargetTaskItem:GetIndexPos( index, offset_x )
local offset_x = offset_x or 0
return Vector3(offset_x + SevenDayTargetTaskItem.START_X, SevenDayTargetTaskItem.START_Y - (index-1) * (SevenDayTargetTaskItem.HEIGHT + SevenDayTargetTaskItem.SPACE_Y), 0)
end
function SevenDayTargetTaskItem:SetIndexPos( index )
local pos = self:GetIndexPos( index )
self:SetPosition(pos.x, pos.y, pos.z)
end
-- 停止当前动画
function SevenDayTargetTaskItem:StopAnim( )
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
if self.index then
local pos = self:GetIndexPos(self.index)
self:SetPosition(pos.x, pos.y)
end
end
----------领取位移刷新动画 by msh-end-----------
function SevenDayTargetTaskItem:__delete( )
if self.awardItem then
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
self.awardItem = nil
end
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
end