-
Notifications
You must be signed in to change notification settings - Fork 42
Service
jiepengtan edited this page Nov 20, 2019
·
2 revisions
public class OnSkillFire: IEvent{
public SkillData SkillData;
}
public class OnSkillDone: IEvent{
public SkillData SkillData;
}
框架会自动生成相关的Service
只需要在相关的Service 中实现相应的事件的响应,或者二次派发亦可,
public unsafe partial interface IGameEventService : IService{
void OnSkillFire(Entity* ptr
,ref SkillData SkillData
);
void OnSkillDone(Entity* ptr
,ref SkillData SkillData
);
}
可以在相应的GameExecuteSystem 中调用 RaiseEventXxxx 事件(限制在主线程中调用) 如:
public unsafe partial class SkillSystem : GameExecuteSystem {
private LFloat _deltaTime;
public void Execute(Entity* ptr,ref SkillData skillData){
//skillData.IsFiring = skillMonoData.IsFiring;
if (skillData.IsNeedFire) {
if (skillData.CdTimer <= 0 && !skillData.IsFiring) {
skillData.CdTimer = skillData.CD;
skillData.IsFiring = true;
skillData.DurationTimer = skillData.Duration;
RaiseEventOnSkillFire(ptr,ref skillData);
}
}
skillData.CdTimer -= _deltaTime;
if (skillData.IsFiring) {
skillData.DurationTimer -= _deltaTime;
if (skillData.DurationTimer <= 0) {
skillData.IsFiring = false;
RaiseEventOnSkillDone(ptr,ref skillData);
}
}
skillData.IsNeedFire = false;
}
...