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

732 lines
25 KiB

SwallowView = SwallowView or BaseClass(BaseItem)
local SwallowView = SwallowView
function SwallowView:__init()
self.base_file = "bag"
self.layout_file = "SwallowView"
self.column_num = 4 --一行几个图标
self.defult_slot = 24 --默认最少生成空格数
self.equips_list = {} --装备列表
self.equips_count = 0 --装备数量
self.progressing_fun_queue = {} --吞噬进度条的执行方法队列
self.progressing_time = 0.4 --吞噬进度条跑完一次需要的时间
self.full_screen = true
self.ani_right = 400
self.ani_left = -200
self.adjust_mid = {left = 160, right = 780}
self.bag_item_list = {} --背包物品列表
self.core_attr_item_list = {} --特殊属性条
self.timer_id_list = {}
self.model = BagModel:getInstance()
self.model.need_sort_bag = false --是否需要在关闭界面后重整背包(只在吞噬操作后才进行重整)
self.loop_mgr = LoopScrowViewMgr.New()
--吞噬红点当次登录只给一次,打开界面后就取消掉
if self.model:GetSwallowRedDot() then
self.model.is_check_swallow_red = false--一次性红点先取消了
self.model:CheckEquipSwallowRed()
GlobalEventSystem:Fire(EventName.UPDATE_BAG_RED)
-- self.model:Fire(BagModel.ANS_UPDATE_EQUIP_RED)
end
self.fly_shoes_id = BagModel.FlyGoodsID
self:Load()
end
function SwallowView:Open( )
BaseView.Open(self)
end
function SwallowView:Load_callback()
local nodes = {
"right/swallowBtn:obj", --吞噬按钮
"right/tipsBtn:obj", --帮助按钮
"progressBg/progressBar:img",--进度条
"right/equipScroll/Viewport/Content_equip", "right/equipScroll", --装备滚动列表
"right/equipScroll/Viewport/Content_equip/con_equip",
"attrCon",
"attrCon/attr2:tmp","attrCon/attr1:tmp",--属性
"progressExpNum:tmp",--经验进度
"coreAttrCon:obj",
"swallowLv:tmp",--等级
"right/swallowCheck:obj", "right/swallowCheck/checkmark:obj", --勾选普通装备
"right/swallowAuto:obj", "right/swallowAuto/automark:obj", --勾选自动吞噬
"coreBigIcon:raw",
"attrCon/attrArrow2:obj","attrCon/attrArrow1:obj",
"right/bag_bg:img",
"progressBg/progressHandle",
"effectCon:obj",
"flyCon",
"swallowEffect",
}
self:GetChildren(nodes)
lua_resM:setImageSprite(self, self.bag_bg_img, "bagSwallow_asset","bag_swallow_bag_bg")
lua_resM:setOutsideRawImage(self,self.coreBigIcon_raw,GameResPath.GetViewBigBg("bag_swallow_bg"))
self.swallowCheck_toggle = self.swallowCheck:GetComponent("Toggle")
self.swallowAuto_toggle = self.swallowAuto:GetComponent("Toggle")
self.swallowAuto_toggle.isOn = self.model.is_auto_swallow
SetAnchoredPositionX(self.attrCon,-195)
self:AddEvent()
if self.need_refreshData then
self:UpdateView()
self:AddUIEffect("ui_heidong", self.effectCon, "Scene", nil, 4.5, true, nil, false)
end
end
function SwallowView:AddEvent()
local on_click = function ( click_obj )
if self.swallowBtn_obj == click_obj then -- 开始吞噬
self:BeginSwallow()
elseif self.tipsBtn_obj == click_obj then -- 帮助按钮
EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 15001)
elseif self.swallowCheck_obj == click_obj then -- 勾选普通
self:SelectEquip()
elseif self.swallowAuto_obj == click_obj then -- 自动吞噬
self.model.set_auto_swallow = true
self.model:Fire(BagModel.REQUEST_PROTOCOL,15025,self.swallowAuto_toggle.isOn and 1 or 0)
end
end
AddClickEvent(self.swallowBtn_obj, on_click)
AddClickEvent(self.tipsBtn_obj, on_click)
AddClickEvent(self.swallowCheck_obj, on_click)
AddClickEvent(self.swallowAuto_obj, on_click)
local function clickBagIcon(type, type_id, index, bool)
if type == GoodsModel.TYPE.EQUIP or type_id == self.fly_shoes_id then
self.equips_list[index].isSelect = bool
self:ShowSwallowExp()
end
end
self:BindEvent(self.model,BagModel.CLICK_EQUIP_ITEM,clickBagIcon)
local function Refresh_Init()
-- self:UpdateView(true,true)
self:UpdateShow(true,true)
end
self:BindEvent(self.model,BagModel.REFRESH_SWALLOW_INIT,Refresh_Init)
-- --点击切换法核时候,需要高亮展示相应的特殊属性已经切换到法核模型
-- local function switch_core_show_handler(index)
-- for i,v in ipairs(self.core_attr_item_list) do
-- v:SetSelected(i == index)
-- end
-- self:UpdateCoreShow(index)
-- end
-- self:BindEvent(self.model,BagModel.CLICK_SWALLOW_CORE_ITEM,switch_core_show_handler)
local function update_suto_swallow_state(bool)
self.swallowAuto_toggle.isOn = bool
end
self:BindEvent(self.model,BagModel.UPDATE_AUTO_SWALLOW_STATE,update_suto_swallow_state)
end
function SwallowView:UpdateView(need_anim,bool)
if self.is_loaded then
self.need_refreshData = false
self:AddUIEffect("ui_heidong", self.effectCon, "Scene", nil, 4.5, true, nil, false,nil,nil,nil)
self:UpdateShow(need_anim,bool)
else
self.need_refreshData = true
end
end
function SwallowView:UpdateShow(need_anim,bool)
--刷新法核解锁属性
if not need_anim then
self:UpdateCoreAttr()
end
--刷新吞噬进度
self:UpdateSwallowProgress(need_anim)
--刷新装备列表
self:UpdateEquipScroll()
end
-- --刷新法核滚动列表(这玩意不要了,但是不晓得后面会不会加回来)
-- function SwallowView:UpdateCoreScroll(bool )
-- local cfg = self.model:GetSwallowCoreCfg()
-- if not self.item_list_com then
-- self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
-- end
-- local info = {
-- data_list = cfg,
-- item_con = self.Content_core,
-- item_class = SwallowCoreItem,
-- item_width = 100,
-- space_x = 2,
-- start_x = 5,
-- start_y = -14,
-- scroll_view = self.coreScroll,
-- create_frequency = 0.01,
-- reuse_item_num = 6,
-- on_update_item = function(item, i, v)
-- item:SetData(v,i,#cfg)
-- end,
-- final_callback = function()
-- local now_item_id = self.model:GetNowSwallowCoreItemId()
-- self.item_list_com:IterateItems(function( item, i )
-- self.model.now_select_core_item_id = now_item_id
-- self.model:Fire(BagModel.CLICK_SWALLOW_CORE_ITEM,now_item_id)
-- end)
-- if now_item_id >5 then
-- self.item_list_com:ScrollToItem(now_item_id)
-- end
-- end,
-- }
-- self.item_list_com:UpdateItems(info)
-- if bool then
-- local now_item_id = self.model:GetNowSwallowCoreItemId()
-- self.item_list_com:IterateItems(function( item, i )
-- self.model.now_select_core_item_id = now_item_id
-- self.model:Fire(BagModel.CLICK_SWALLOW_CORE_ITEM,now_item_id)
-- end)
-- if now_item_id >5 then
-- self.item_list_com:ScrollToItem(now_item_id)
-- end
-- end
-- end
-- --刷新法核展示
-- function SwallowView:UpdateCoreShow(index)
-- local core_cfg, cur
-- if index then
-- core_cfg = self.model:GetSwallCoreCfgByLv(index)
-- cur = index
-- else
-- core_cfg, cur = self.model:GetNowSwallowCoreCfg()
-- end
-- end
--刷新法核解锁属性
function SwallowView:UpdateCoreAttr( )
local cfg = self.model:GetSwallowCoreCfg()
if cfg then
for k,v in pairs(self.core_attr_item_list) do
v:SetVisible(false)
end
for i,v in ipairs(cfg) do
local item = self.core_attr_item_list[i]
if not item then
item = SwallowCoreAttrItem.New(self.coreAttrCon)
self.core_attr_item_list[i] = item
end
item:SetVisible(true)
item:SetData(v,i)
end
end
end
--刷新吞噬进度
function SwallowView:UpdateSwallowProgress(need_anim)
local is_up = self.model.swallow_lv > self.model.pre_swallow_lv
local up_lv_num = self.model.swallow_lv - self.model.pre_swallow_lv
--经验进度条
local endValue = 0
local lv_cfg = Config.Goodsdevour[self.model.swallow_lv]
local next_lv_cfg = Config.Goodsdevour[self.model.swallow_lv+1]
if lv_cfg then
if not next_lv_cfg then
self.swallowLv_tmp.text = string.format("Lv.%s",self.model.swallow_lv)
-- self.progressExpNum_tmp.text = "满级了"
self.progressExpNum_tmp.text = string.format("(<color=%s>%s</color>/%s)",ColorUtil.WHITE,self.model.swallow_exp,lv_cfg.exp)
-- SetSizeDeltaX(self.progressBar,590)
-- SetAnchoredPositionX(self.progressHandle,590)
endValue = self.model.swallow_exp/lv_cfg.exp
SetSizeDeltaX(self.progressBar,590*endValue)
SetAnchoredPositionX(self.progressHandle,590*endValue)
else
endValue = self.model.swallow_exp/lv_cfg.exp
if endValue < 0 then
endValue = 0
elseif endValue > 1 then
endValue = 1
end
if need_anim then
if is_up then
local function fun()
self.in_progressing = true --进度条正在跑
self.progressing_fun_queue = {}
self.progressing_time = 0.5
if self.progressing_time * up_lv_num > 2 then
self.progressing_time = 2 / up_lv_num
end
for i=1,up_lv_num-1 do --前几次跑完整的0到1
local pre_fun = function()
self.swallowLv_tmp.text = string.format("Lv.%s",self.model.pre_swallow_lv+i)
SetSizeDeltaX(self.progressBar,0)
SetAnchoredPositionX(self.progressHandle,0)
table.remove(self.progressing_fun_queue,1)
TweenLite.to(self, self.progressBar, TweenLite.UiAnimationType.WIDTH, 590, self.progressing_time,self.progressing_fun_queue[1])
TweenLite.to(self, self.progressHandle, TweenLite.UiAnimationType.ANCHORED_POSX, 590, self.progressing_time)
self:SetExpAnimation(0,Config.Goodsdevour[self.model.pre_swallow_lv+i].exp,self.model.pre_swallow_lv+i,self.progressing_time)
end
table.insert(self.progressing_fun_queue,pre_fun)
end
--最后一段的进度条
local final_fun = function()
local end_flag_change = function()
self.in_progressing = false --跑完了
self.progressing_fun_queue = {}
end
self.swallowLv_tmp.text = string.format("Lv.%s",self.model.swallow_lv)
SetSizeDeltaX(self.progressBar,0)
SetAnchoredPositionX(self.progressHandle,0)
table.remove(self.progressing_fun_queue,1)
TweenLite.to(self, self.progressBar, TweenLite.UiAnimationType.WIDTH, 590*endValue, endValue*self.progressing_time,end_flag_change)
TweenLite.to(self, self.progressHandle, TweenLite.UiAnimationType.ANCHORED_POSX, 590*endValue, endValue*self.progressing_time)
self:SetExpAnimation(0,Config.Goodsdevour[self.model.swallow_lv].exp,self.model.swallow_lv,endValue*self.progressing_time)
end
table.insert(self.progressing_fun_queue,final_fun)
--开始执行队列中的方法来跑进度条
self.progressing_fun_queue[1]()
end
TweenLite.to(self, self.progressBar, TweenLite.UiAnimationType.WIDTH, 590, (1-self.progressBar_img.fillAmount)*self.progressing_time,fun)
TweenLite.to(self, self.progressHandle, TweenLite.UiAnimationType.ANCHORED_POSX, 590, (1-self.progressBar_img.fillAmount)*self.progressing_time)
self:SetExpAnimation(self.model.swallow_exp,Config.Goodsdevour[self.model.pre_swallow_lv].exp,self.model.pre_swallow_lv,(1-self.progressBar_img.fillAmount)*self.progressing_time)
else
self.swallowLv_tmp.text = string.format("Lv.%s",self.model.swallow_lv)
TweenLite.to(self, self.progressBar, TweenLite.UiAnimationType.WIDTH, 590*endValue, endValue*self.progressing_time)
TweenLite.to(self, self.progressHandle, TweenLite.UiAnimationType.ANCHORED_POSX, 590*endValue, endValue*self.progressing_time)
self:SetExpAnimation(self.model.pre_swallow_exp,self.model.swallow_exp,self.model.swallow_lv,endValue*self.progressing_time)
end
else
self.progressExpNum_tmp.text = string.format("(<color=%s>%s</color>/%s)",ColorUtil.WHITE,self.model.swallow_exp,lv_cfg.exp)
self.swallowLv_tmp.text = string.format("Lv.%s",self.model.swallow_lv)
SetSizeDeltaX(self.progressBar,590*endValue)
SetAnchoredPositionX(self.progressHandle,590*endValue)
end
end
else
self.swallowLv_tmp.text = string.format("Lv.%s",self.model.swallow_lv)
-- self.progressExpNum_tmp.text = "满级了"
self.progressExpNum_tmp.text = string.format("(<color=%s>%s</color>/%s)",ColorUtil.WHITE,self.model.swallow_exp,lv_cfg.exp)
-- SetSizeDeltaX(self.progressBar,590)
-- SetAnchoredPositionX(self.progressHandle,590)
endValue = self.model.swallow_exp/lv_cfg.exp
SetSizeDeltaX(self.progressBar,590*endValue)
SetAnchoredPositionX(self.progressHandle,590*endValue)
end
--属性
local next_lv_cfg = Config.Goodsdevour[self.model.swallow_lv+1]
local next_attr_data = next_lv_cfg and stringtotable(next_lv_cfg.attr) or nil
local attr_data = stringtotable(lv_cfg.attr)
local txt_1 = ""
local txt_2 = ""
local pre_txt_1 = ""
local pre_txt_2 = ""
if attr_data then
pre_txt_1 = string.format("%s <color=%s>+%s</color>",WordManager:GetProperties(attr_data[1][1]),ColorUtil.WHITE,WordManager:GetPropertyValue(attr_data[1][1],attr_data[1][2]))
pre_txt_2 = string.format("%s <color=%s>+%s</color>",WordManager:GetProperties(attr_data[2][1]),ColorUtil.WHITE,WordManager:GetPropertyValue(attr_data[2][1],attr_data[2][2]))
end
txt_1 = pre_txt_1 .. " "
txt_2 = pre_txt_2 .. " "
if next_lv_cfg and next_attr_data and attr_data then
txt_1 = txt_1..HtmlColorTxt(WordManager:GetPropertyValue(next_attr_data[1][1],next_attr_data[1][2]-attr_data[1][2]), ColorUtil.GREEN_DARK)
txt_2 = txt_2..HtmlColorTxt(WordManager:GetPropertyValue(next_attr_data[2][1],next_attr_data[2][2]-attr_data[2][2]), ColorUtil.GREEN_DARK)
self.attrArrow1_obj:SetActive(true)
self.attrArrow2_obj:SetActive(true)
else
self.attrArrow1_obj:SetActive(false)
self.attrArrow2_obj:SetActive(false)
end
self.attr1_tmp.text = pre_txt_1
self.attr2_tmp.text = pre_txt_2
SetLocalPositionX(self.attrArrow1, GetLocalPositionX(self.attr1) + self.attr1_tmp.preferredWidth+20)
SetLocalPositionX(self.attrArrow2, GetLocalPositionX(self.attr2) + self.attr2_tmp.preferredWidth+20)
self.attr1_tmp.text = txt_1
self.attr2_tmp.text = txt_2
end
--经验增长动画
function SwallowView:SetExpAnimation(start_exp,end_exp,lv,duration)
if #self.timer_id_list ~= 0 then
self:DeleteTimer()
end
local lv_max_exp = Config.Goodsdevour[lv].exp
for i=1,20 do
local function delay_func()
self.progressExpNum_tmp.text = string.format("(<color=%s>%s</color>/%s)",ColorUtil.WHITE,math.floor(start_exp+((end_exp - start_exp)/20)*i),lv_max_exp)
end
local id = GlobalTimerQuest:AddDelayQuest(delay_func,i*(duration/20))
table.insert(self.timer_id_list,id)
end
local function end_show()
self.progressExpNum_tmp.text = string.format("(<color=%s>%s</color>/%s)",ColorUtil.WHITE,self.model.swallow_exp,Config.Goodsdevour[self.model.swallow_lv].exp)
end
local end_id = GlobalTimerQuest:AddDelayQuest(end_show,20*(duration/20)+0.05)
table.insert(self.timer_id_list,end_id)
end
function SwallowView:DeleteTimer()
for i=1,#self.timer_id_list do
GlobalTimerQuest:CancelQuest(self.timer_id_list[i])
self.timer_id_list[i] = nil
end
self.timer_id_list = {}
end
--刷新装备列表
function SwallowView:UpdateEquipScroll( )
self.equips_list = {}
self.equips_count = 0
--先拿到背包中的装备数据
local goods_list = GoodsModel:getInstance().bag_goods_list -- 获取到背包列表
for k,v in pairs(goods_list) do
-- 项链8 戒指9 耳饰10 守护11 不可吞噬
if v.type == GoodsModel.TYPE.EQUIP and v.subtype ~= 8 and v.subtype ~= 9
and v.subtype ~= 10 and v.subtype ~= 11 and v.goods_num >0 then
table.insert(self.equips_list,v)
end
end
table.sort(self.equips_list,function(a,b)
if a.color~=b.color then
return a.color<b.color
else
return a.type_id<b.type_id
end
end)
-- 如果是永久Vip,则额外加入小飞鞋的吞噬
if VipModel:getInstance():IsForeverVip() then
local fly_shoes = GoodsModel:getInstance():GetTypeGoods(self.fly_shoes_id)
if not IsTableEmpty(fly_shoes) then
for k, v in ipairs(fly_shoes) do -- 防止有多种小飞鞋
table.insert(self.equips_list, 1, v)
end
end
end
self.equips_count = #self.equips_list
--默认勾选住普通装备
self.swallowCheck_toggle.isOn = true
self:SelectEquip()
--开始创建装备背包列表
local total_num = 0
if self.equips_count > self.defult_slot then
total_num = self.equips_count
else
total_num = self.defult_slot
end
for k = 1,self.defult_slot do
local item = self.bag_item_list[k]
if item == nil then
item = SwallowBagItem.New(self.con_equip,nil,self.layer_name)
item:SetVisible(false)
self.bag_item_list[k] = item
end
end
self.loop_mgr:Init(self.equipScroll,self.Content_equip,self.column_num,89.5,89.5,function(item,index,realIndex )
self:OnInitializeItem(item,index,realIndex )
end)
self.loop_mgr:InitChildren(self.bag_item_list, total_num)
self.loop_mgr:RestToBeginning()
self.loop_mgr:ForceUpdateCurrentItems()
self.loop_mgr:SetContentSizeData()
end
function SwallowView:OnInitializeItem(item,index,realIndex)
if item and realIndex > 0 and realIndex <= self.equips_count then
item:SetData(self.equips_list[realIndex],realIndex)
else
item:SetData(nil)
end
self:UpdateItemState()
end
function SwallowView:UpdateItemState()
for k,item in pairs(self.bag_item_list) do
item:UpdateSelect()
end
end
-- 批量选择装备
function SwallowView:SelectEquip()
local color = ColorType.BLUE_DARK
local main_level = RoleManager.Instance.mainRoleInfo.level
local main_career = RoleManager.Instance.mainRoleInfo.career
local my_max_turn = EquipModel.getInstance():GetCurrentOpenSuitSeries()--我当前的最大装备套数
local repetitive_flag_list = {}--未解锁的蓝装只筛选一个去吞噬
for k,v in pairs(self.equips_list) do
v.isSelect = false
end
if self.swallowCheck_toggle.isOn then
for k,v in pairs(self.equips_list) do
if v.type_id == self.fly_shoes_id then
v.isSelect = true
else
if v.color <= color then
if v.color == ColorType.BLUE_DARK then--蓝装需要判定筛选
local can_not_use = false--是否为不可操作的装备(不可穿戴)
local can_tip, flag = EquipModel:getInstance():EquipCanShowGoodsTip(v)
local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(v.type_id)--拿到装备配置
local equip_series = equip_cfg and equip_cfg.series or 0--装备对应套数
local career_list = equip_cfg and equip_cfg.career or {}--装备对应职业
local is_my_career = false--是否为我能用的职业
for k,v in pairs(career_list) do
if v == main_career then
is_my_career = true
break
end
end
local not_my_career_equip = false
local high_series_can_join = false
if is_my_career then
--如果是我的职业,判定一下是否为未解锁的套数
if equip_series > my_max_turn then --还没解锁的套数蓝装只保留一个
if repetitive_flag_list[v.type_id] then--已经有了一个了,剩下的都拿去吞噬
high_series_can_join = true
else
repetitive_flag_list[v.type_id] = true
end
else--已经解锁的套数判断下是否不可操作穿戴的装备
if flag ~= 1 then
can_not_use = true
end
end
else--如果都不是自己的职业,那直接吞掉就完事了
not_my_career_equip = true
end
if can_not_use or not_my_career_equip or high_series_can_join then
v.isSelect = true
end
else
v.isSelect = true
end
else
v.isSelect = false
end
end
end
else
for k,v in pairs(self.equips_list) do
v.isSelect = false
end
end
self:UpdateItemState()
self:ShowSwallowExp()
end
--预览吞噬经验
function SwallowView:ShowSwallowExp()
-- local next_lv_cfg = Config.Goodsdevour[self.model.swallow_lv+1]
-- if not next_lv_cfg then
-- self.progressExpNum_tmp.text = "满级了"
-- return
-- end
-- 构建装备表
local equips_list = {}
for k,v in pairs(self.equips_list) do
if v.isSelect == true then
table.insert(equips_list,v)
end
end
local exp = 0
for i,v in ipairs(equips_list) do
if v.type_id == self.fly_shoes_id then -- 1件小飞鞋写死1点经验值
exp = exp + v.goods_num
else
local cfg = Config.Equipment[v.type_id]
if cfg then
exp = exp + tonumber(cfg.devour_exp)
end
end
end
--展示预览吞噬经验
if exp ~= 0 then
local lv_cfg = Config.Goodsdevour[self.model.swallow_lv]
if lv_cfg then
self.progressExpNum_tmp.text = string.format("(<color=%s>%s <color=%s>+%s</color></color>/%s)",ColorUtil.WHITE,self.model.swallow_exp,ColorUtil.GREEN_TIPS,exp,lv_cfg.exp)
end
else
local lv_cfg = Config.Goodsdevour[self.model.swallow_lv]
if lv_cfg then
self.progressExpNum_tmp.text = string.format("(<color=%s>%s</color>/%s)",ColorUtil.WHITE,self.model.swallow_exp,lv_cfg.exp)
end
end
end
--开始吞噬
function SwallowView:BeginSwallow()
if self.in_progressing then
Message.show("吞噬中,请稍后再试","fault")
return
end
--先记录一下吞噬前的吞噬等级
self.model.pre_swallow_lv = self.model.swallow_lv
self.model.pre_swallow_exp = self.model.swallow_exp
-- 构建要发的装备表
local equips_list = {}
local is_rare_color = 0
for k,v in pairs(self.equips_list) do
if v.isSelect == true then
local equip = {}
equip.id = v.goods_id
equip.type_id = v.type_id
-- equip.num = v.goods_num
table.insert(equips_list,equip)
if v.type_id ~= self.fly_shoes_id then
is_rare_color = is_rare_color > v.color and is_rare_color or v.color
end
end
end
if #equips_list == 0 then
Message.show("尚未选择吞噬物品","fault")
else
local function ok_callback()
self.model.need_sort_bag = true
self.model:Fire(BagModel.REQUEST_PROTOCOL,15024,equips_list)
for i,v in ipairs(equips_list) do
self:FlyAwardToBag(v.type_id,i)
end
lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
end
if is_rare_color >= 3 then
Alert.show("您选中的装备中包含稀有装备,确定要吞噬吗?", Alert.Type.Two, ok_callback, nil, "确定", "取消")
else
ok_callback()
end
end
end
function SwallowView:FlyAwardToBag(goods_type_id,index)
local goods_type_id = goods_type_id
local start_pos = self.flyCon:InverseTransformPoint(self.flyCon.transform.position)
self.image_pool = self.image_pool or {}
local image_item
if #self.image_pool > 0 then
image_item = table.remove(self.image_pool, #self.image_pool)
else
image_item = {}
image_item.gameObject = UiFactory.createChild(self.flyCon, UIType.Image)
image_item.transform = image_item.gameObject.transform
image_item.img = image_item.gameObject:GetComponent("Image")
end
SetLocalScale(image_item.transform,0.6,0.6,0.6)
image_item.gameObject:SetActive(true)
local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_type_id)
local goods_icon = goods_vo and goods_vo.goods_icon or 0
lua_resM:setOutsideImageSprite(self, image_item.img, GameResPath.GetGoodsIcon(goods_icon), true)
SetLocalPosition(image_item.transform, start_pos.x, start_pos.y, start_pos.z)
local optional = {
min_duration = 0.6,
rand_duration = 0.9,
stop_duration = 0,
}
local flyAction = cc.FlyToRandom.New(start_pos, Vector3.New(-444, -222, 0),optional)
local action = cc.Sequence.New(flyAction, cc.CallFunc.New(function()
image_item.gameObject:SetActive(false)
table.insert(self.image_pool, image_item)
end))
cc.ActionManager:getInstance():addAction(action, image_item.transform)
if self.delay_show_effect then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_show_effect)
self.delay_show_effect = nil
end
if self.delay_hide_effect_id then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_hide_effect_id)
self.delay_hide_effect_id = nil
end
if self.delay_show_effect_id then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_show_effect_id)
self.delay_show_effect_id = nil
end
local function delay_method( )
self:AddUIEffect("ui_heidongtunshi", self.swallowEffect, "Scene", nil, 4.5, false, nil, false,nil,nil,0.4)
end
self.delay_show_effect = setTimeout(delay_method, 0)
lua_soundM:StopEffect(self, LuaSoundManager.SOUND_TYPE.UI, self.sound_id)
if lua_soundM then
self.sound_id = lua_soundM:PlayEffect(self, "swallow",false,LuaSoundManager.SOUND_TYPE.UI)
end
local function delay_hide_effect( )
self.effectCon_obj:SetActive(false)
end
self.delay_hide_effect_id = setTimeout(delay_hide_effect, 0.2)
local function delay_show_effect_con( )
self.effectCon_obj:SetActive(true)
end
self.delay_show_effect_id = setTimeout(delay_show_effect_con, 1.5)
end
function SwallowView:__delete( )
if self.delay_show_effect then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_show_effect)
self.delay_show_effect = nil
end
if self.delay_hide_effect_id then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_hide_effect_id)
self.delay_hide_effect_id = nil
end
if self.delay_show_effect_id then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_show_effect_id)
self.delay_show_effect_id = nil
end
for k,v in pairs(self.bag_item_list) do
v:DeleteMe()
v = nil
end
self.bag_item_list = {}
for k,v in pairs(self.core_attr_item_list) do
v:DeleteMe()
v = nil
end
self.core_attr_item_list = {}
self.equips_list = {}
if self.loop_mgr then
self.loop_mgr:DeleteMe()
self.loop_mgr = nil
end
self:DeleteTimer()
self:ClearUIEffect(self.effectCon)
self:ClearUIEffect(self.flyCon)
end