Exemplo n.º 1
0
 private void RecvCore()
 {
     if (base._state == AbilityEvadeMixin.State.Evading)
     {
         base._evadeTimer.Core(1f);
         if (base._evadeTimer.isTimeUp)
         {
             if (base.selfIdentity.isAuthority)
             {
                 if (this._recvStates[base.selfIdentity.authorityPeerID] == PeerReceiveState.Started)
                 {
                     this._recvStates[base.selfIdentity.authorityPeerID] = PeerReceiveState.Failed;
                     this.OnAuthorityPeerEvadeStateChanged();
                 }
             }
             else
             {
                 RecordInvokeEntryContext context;
                 base.StartRecordMixinInvokeEntry(out context, 0);
                 Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.FailEvade);
                 context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade);
             }
             base._evadeTimer.Reset(false);
             base._dummyActor.Kill();
             base.actor.RemoveAbilityState(AbilityState.BlockAnimEventAttack);
             base.entity.SetCountedIsGhost(false);
             base._state = AbilityEvadeMixin.State.Idle;
         }
     }
 }
        public override void HandleMixinInvokeEntry(AbilityInvokeEntry invokeEntry, int fromPeerID)
        {
            this._mixinArg = invokeEntry.GetArgument <MixinArg_Evade>(this._mixinArg);
            if (this._mixinArg.Action == EvadeAction.StartEvade)
            {
                Singleton <EventManager> .Instance.FireEvent(new EvtEvadeStart(base.actor.runtimeID), MPEventDispatchMode.Normal);

                if (base._state == AbilityEvadeMixin.State.Idle)
                {
                    base.actor.AddAbilityState(AbilityState.BlockAnimEventAttack, true);
                    base.entity.SetCountedIsGhost(true);
                }
                base._evadeTimer.Reset(true);
                base._extendedBlockAttackTimer.Reset(true);
                base._state = AbilityEvadeMixin.State.Evading;
            }
            else if (this._mixinArg.Action == EvadeAction.SuccessEvade)
            {
                base._state = AbilityEvadeMixin.State.EvadeSuccessed;
                base._extendedBlockAttackTimer.Reset(true);
            }
            else if (this._mixinArg.Action == EvadeAction.FailEvade)
            {
                base._evadeTimer.Reset(false);
                base.actor.RemoveAbilityState(AbilityState.BlockAnimEventAttack);
                base.entity.SetCountedIsGhost(false);
                base._state = AbilityEvadeMixin.State.Idle;
            }
        }
 public override void OnAbilityTriggered(EvtAbilityStart evt)
 {
     if (base.selfIdentity.isAuthority)
     {
         RecordInvokeEntryContext context;
         base.OnAbilityTriggered(evt);
         base.StartRecordMixinInvokeEntry(out context, 0);
         Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.StartEvade);
         context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade);
     }
 }
 protected override void EvadeFail()
 {
     if (base.selfIdentity.isAuthority)
     {
         RecordInvokeEntryContext context;
         base.StartRecordMixinInvokeEntry(out context, 0);
         Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.FailEvade);
         context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade);
         base.EvadeFail();
     }
 }
        protected override bool OnEvadeSuccess(EvtEvadeSuccess evt)
        {
            if (base.selfIdentity.isAuthority)
            {
                RecordInvokeEntryContext context;
                base.StartRecordMixinInvokeEntry(out context, 0);
                Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.SuccessEvade);
                context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade);
                Singleton <MPEventManager> .Instance.MarkEventReplicate(evt);

                return(base.OnEvadeSuccess(evt));
            }
            return(false);
        }
Exemplo n.º 6
0
 public override void OnAbilityTriggered(EvtAbilityStart evt)
 {
     if (base.selfIdentity.isAuthority)
     {
         RecordInvokeEntryContext context;
         this.RecvStart();
         base.StartRecordMixinInvokeEntry(out context, 0);
         Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.StartEvade);
         context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade);
         for (int i = 1; i < this._recvStates.Length; i++)
         {
             this._recvStates[i] = PeerReceiveState.Started;
         }
         this._firstSuccess = null;
     }
 }
Exemplo n.º 7
0
 public override void HandleMixinInvokeEntry(AbilityInvokeEntry invokeEntry, int fromPeerID)
 {
     if (base.selfIdentity.isAuthority)
     {
         this._mixinArg = invokeEntry.GetArgument <MixinArg_Evade>(this._mixinArg);
         if ((this._mixinArg.Action == EvadeAction.FailEvade) && (this._recvStates[fromPeerID] == PeerReceiveState.Started))
         {
             this._recvStates[fromPeerID] = PeerReceiveState.Failed;
             this.OnAuthorityPeerEvadeStateChanged();
         }
     }
     else
     {
         this._mixinArg = invokeEntry.GetArgument <MixinArg_Evade>(this._mixinArg);
         if (this._mixinArg.Action == EvadeAction.StartEvade)
         {
             this.RecvStart();
         }
     }
 }
Exemplo n.º 8
0
 public MPAbilityEvadeMixin_RemoteRecveive(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this._mixinArg   = new MixinArg_Evade();
     this._recvStates = new PeerReceiveState[Singleton <MPManager> .Instance.peer.totalPeerCount + 1];
 }
 public MPAbilityEvadeMixin_RemoteNoRecveive(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config)
 {
     this._mixinArg = new MixinArg_Evade();
 }