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

171 lines
5.6 KiB

-- <*
-- @Author: Saber
-- @Description: 经验副本主界面子弹粒子特效容器
-- *>
ExpHangupBulletItem = ExpHangupBulletItem or BaseClass(BaseItem)
local ExpHangupBulletItem = ExpHangupBulletItem
local sin = math.sin
local cos = math.cos
local rad = math.rad
local ClearTrailRenderer = ClearTrailRenderer
local lua_soundM = lua_soundM
function ExpHangupBulletItem:__init(parent_wnd,prefab_asset,layer_name, bullet_type)
self.base_file = "expDun"
self.layout_file = "ExpHangupBulletItem"
self.parent_wnd = parent_wnd
self.layer_name = layer_name
self.bullet_type = bullet_type or 1
self.is_animing = false -- 是否在动画中
self.model = ExpDunModel:getInstance()
self.bullet_sound_shot1 = LuaSoundManager.SOUND_UI.EXPBULLETSHOT1
self.bullet_sound_shot2 = LuaSoundManager.SOUND_UI.EXPBULLETSHOT2
self.bullet_sound_laser = LuaSoundManager.SOUND_UI.EXPBULLETLASER
self:Load()
end
function ExpHangupBulletItem:Load_callback()
local nodes = {
"effect:obj",
"extra_effect1:obj",
"extra_effect2:obj",
}
self:GetChildren(nodes)
self:AddEvents()
if self.need_refreshData then
if self.is_normal_bullet then -- 正常特效子弹
self:UpdateNormalBulletEffect()
else -- 另一种特效子弹
self:StartSlayBulletAnim()
end
end
end
function ExpHangupBulletItem:AddEvents( )
end
function ExpHangupBulletItem:SetData( data )
self.start_pos = data.start_pos
self.anim_time = data.anim_time
self.callback = data.callback
self.show_effect_type = data.show_effect_type
self.is_normal_bullet = data.is_normal_bullet
if self.is_loaded then
self.need_refreshData = false
if self.is_normal_bullet then -- 正常特效子弹
self:UpdateNormalBulletEffect()
else -- 另一种特效子弹
self:StartSlayBulletAnim()
end
else
self.need_refreshData = true
end
end
function ExpHangupBulletItem:SetItemIndex(index)
self.index = index
end
function ExpHangupBulletItem:GetItemIndex( )
return self.index
end
function ExpHangupBulletItem:GetIsAnimating( )
return self.is_animing
end
function ExpHangupBulletItem:UpdateNormalBulletEffect( )
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
local hited = false
local function hit_anim_druation(percent)
if not hited and percent >= 0.75 then
if self.callback then
self.callback()
self.callback = nil -- 回调执行一次就销毁
end
hited = true
end
if percent >= 1 then
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
self.is_animing = false
end
end
local hit_anim_action = cc.CustomUpdate.New(self.anim_time, hit_anim_druation)
-- 调整坐标,创建动画
local function load_finished_func()
SetAnchoredPosition(self.transform, self.start_pos.x, self.start_pos.y)
cc.ActionManager:getInstance():addAction(hit_anim_action, self.transform)
end
-- 创建粒子效果
local p_config = {
resname = "effect_fangzhi_attack",
uiTranform = self.effect,
layer_name = self.layer_name,
pos = Vector2(0,0),
scale = 0.7,
is_loop = false,
last_time = -1,
load_finish_func = load_finished_func,
layer = UIPartical.RenderingOther_List.UI,
use_ex_depth = true,
}
self:AddUIEffectConfig(p_config)
-- 播放声音
local random_num = math.random(0, 100)
if random_num < 50 then
lua_soundM:PlayUIEffectSound(self.bullet_sound_shot1)
else
lua_soundM:PlayUIEffectSound(self.bullet_sound_shot2)
end
self.is_animing = true
end
function ExpHangupBulletItem:StartSlayBulletAnim( )
-- 根据类型调整特效
if self.show_effect_type then
self:ClearUIEffect(self.effect)
-- 创建粒子效果
local p_config = {
resname = self.show_effect_type % 2 == 1 and "effect_fangzhi_attack2" or "effect_fangzhi_attack3",
uiTranform = self.show_effect_type % 2 == 1 and self.extra_effect1 or self.extra_effect2,
layer_name = self.layer_name,
pos = Vector2(0,0),
scale = 0.7,
is_loop = false,
last_time = -1,
layer = UIPartical.RenderingOther_List.UI,
use_ex_depth = true,
}
self:AddUIEffectConfig(p_config)
self:ClearUIEffect(self.show_effect_type % 2 == 1 and self.extra_effect2 or self.extra_effect1)
-- 播放声音
if self.show_effect_type % 2 == 1 then
local random_num = math.random(0, 100)
if random_num < 50 then
lua_soundM:PlayUIEffectSound(self.bullet_sound_shot1)
else
lua_soundM:PlayUIEffectSound(self.bullet_sound_shot2)
end
else
lua_soundM:PlayUIEffectSound(self.bullet_sound_laser)
end
end
-- 调整坐标,创建动画
SetAnchoredPosition(self.transform, self.start_pos.x, self.start_pos.y)
end
function ExpHangupBulletItem:StopUnHitBulletAnim( )
if self.unhit_bullet_anim_id then
GlobalTimerQuest:CancelQuest(self.unhit_bullet_anim_id)
self.unhit_bullet_anim_id = nil
end
end
function ExpHangupBulletItem:__delete( )
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
self:ClearUIEffect(self.effect)
self:ClearUIEffect(self.extra_effect1)
self:ClearUIEffect(self.extra_effect2)
self:StopUnHitBulletAnim()
end