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.
69 lines
2.3 KiB
69 lines
2.3 KiB
using CoreGame;
|
|
|
|
namespace CoreGame.Render
|
|
{
|
|
public class Trigger_OnDurationShoot : TriggerBase
|
|
{
|
|
// self.fParam1 触发计时器(开始射击时间)
|
|
// self.fParam2 为上次射击时间
|
|
// self.fParam3 为累计触发次数
|
|
// triggerCfg.Param1 连续射击阈值
|
|
// triggerCfg.Param2 为触发间隔
|
|
// triggerCfg.Param3 为累计次数触发条件
|
|
// triggerCfg.Param4 为触发后是否重置次数
|
|
public override void OnEvent(TriggerSpec self, int eventId, object param1)
|
|
{
|
|
if (self.param1.floatVal <= 0)
|
|
{
|
|
self.param1.floatVal = GameTime.GetRenderTime();
|
|
}
|
|
if (self.param2.floatVal <= 0)
|
|
{
|
|
self.param2.floatVal = GameTime.GetRenderTime();
|
|
}
|
|
if (self.param3.floatVal <= 0)
|
|
{
|
|
self.param3.floatVal = 0;
|
|
}
|
|
|
|
|
|
if (GameTime.GetRenderTime() - self.param2.floatVal >= triggerCfg.param1 * 0.0001f)
|
|
{
|
|
//距离上次射击大于triggerCfg.Param1/10000重置,持续射击时长
|
|
self.param1.floatVal = GameTime.GetRenderTime();
|
|
}
|
|
|
|
if (GameTime.GetRenderTime() - self.param1.floatVal >= triggerCfg.param2 * 0.0001f)
|
|
{
|
|
//持续射击大于triggerCfg.Param2激活技能
|
|
self.param3.floatVal += 1;
|
|
|
|
if (self.param3.floatVal >= triggerCfg.param3)
|
|
{
|
|
if (OnTrigger(self, eventId, param1))
|
|
{
|
|
self.param3.floatVal = 0;
|
|
|
|
if (triggerCfg.param4 > 0)
|
|
{
|
|
self.param1.floatVal = GameTime.GetRenderTime();
|
|
self.param2.floatVal = GameTime.GetRenderTime();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
self.param2.floatVal = GameTime.GetRenderTime();
|
|
}
|
|
|
|
public override void Init(TriggerSpec self)
|
|
{
|
|
RegEntityEvent(self, ClientEvent.OnDurationShoot);
|
|
}
|
|
|
|
public override void UnInit(TriggerSpec self)
|
|
{
|
|
UnRegEntityEvent(self, ClientEvent.OnDurationShoot);
|
|
}
|
|
}
|
|
}
|