Skip to content

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;
        }
      ...
Clone this wiki locally