Пример #1
0
        public override async Task ExecuteAsync(ExecutionContext context, ExecutionBranchContext branchContext)
        {
            await base.ExecuteAsync(context, branchContext);

            /*
             * var handle = context.Reader.Read<uint>();
             *
             * RegisterHandle(handle, context, branchContext);
             */

            var state = true;

            if (Imagination > 0 || !IsEnemyFaction)
            {
                state = context.Reader.ReadBit();
            }

            if (state)
            {
                await ActionTrue.ExecuteAsync(context, branchContext);
            }
            else
            {
                await ActionFalse.ExecuteAsync(context, branchContext);
            }
        }
Пример #2
0
 protected override async Task ExecuteStart(SwitchBehaviorExecutionParameters parameters)
 {
     if (parameters.State)
     {
         await ActionTrue.ExecuteStart(parameters.Parameters);
     }
     else
     {
         await ActionFalse.ExecuteStart(parameters.Parameters);
     }
 }
Пример #3
0
 protected override void ExecuteStart(SwitchBehaviorExecutionParameters parameters)
 {
     if (parameters.State)
     {
         ActionTrue.ExecuteStart(parameters.Parameters);
     }
     else
     {
         ActionFalse.ExecuteStart(parameters.Parameters);
     }
 }
Пример #4
0
        protected override void DeserializeStart(SwitchBehaviorExecutionParameters parameters)
        {
            parameters.State = true;
            if (Imagination > 0 || !IsEnemyFaction)
            {
                parameters.State = parameters.Context.Reader.ReadBit();
            }

            parameters.Parameters = parameters.State
                ? ActionTrue.DeserializeStart(parameters.Context, parameters.BranchContext)
                : ActionFalse.DeserializeStart(parameters.Context, parameters.BranchContext);
        }
Пример #5
0
        protected override void SerializeStart(SwitchBehaviorExecutionParameters parameters)
        {
            parameters.State = true;
            if (Imagination > 0 || !IsEnemyFaction)
            {
                parameters.State = parameters.BranchContext.Target != default && parameters.NpcContext.Alive;
                parameters.NpcContext.Writer.WriteBit(parameters.State);
            }

            parameters.Parameters = parameters.State
                ? ActionTrue.SerializeStart(parameters.NpcContext, parameters.BranchContext)
                : ActionFalse.SerializeStart(parameters.NpcContext, parameters.BranchContext);
        }
Пример #6
0
        protected override void DeserializeStart(BitReader reader, SwitchBehaviorExecutionParameters parameters)
        {
            parameters.State = true;
            if (Imagination > 0 || !IsEnemyFaction)
            {
                parameters.State = reader.ReadBit();
            }

            if (TargetHasBuff != default && TargetHasBuff != -1 && parameters.BranchContext?.Target != null)
            {
                parameters.State = parameters.BranchContext.Target.TryGetComponent <BuffComponent>(out var buffComponent) &&
                                   buffComponent.HasBuff((uint)TargetHasBuff);
            }

            parameters.Parameters = parameters.State
                ? ActionTrue.DeserializeStart(reader, parameters.Context, parameters.BranchContext)
                : ActionFalse.DeserializeStart(reader, parameters.Context, parameters.BranchContext);
        }
Пример #7
0
        protected override void SerializeStart(BitWriter writer, SwitchBehaviorExecutionParameters parameters)
        {
            parameters.State = true;
            if (Imagination > 0 || !IsEnemyFaction)
            {
                parameters.State = parameters.BranchContext.Target != default && parameters.NpcContext.Alive;

                if (TargetHasBuff != default && TargetHasBuff != -1 && parameters.BranchContext?.Target != null)
                {
                    parameters.State = parameters.BranchContext.Target.TryGetComponent <BuffComponent>(out var buffComponent) &&
                                       buffComponent.HasBuff((uint)TargetHasBuff);
                }

                writer.WriteBit(parameters.State);
            }

            parameters.Parameters = parameters.State
                ? ActionTrue.SerializeStart(writer, parameters.NpcContext, parameters.BranchContext)
                : ActionFalse.SerializeStart(writer, parameters.NpcContext, parameters.BranchContext);
        }
Пример #8
0
        public override async Task CalculateAsync(NpcExecutionContext context, ExecutionBranchContext branchContext)
        {
            /*
             * var syncId = context.Associate.GetComponent<SkillComponent>().ClaimSyncId();
             *
             * context.Writer.Write(syncId);
             */

            // TODO

            var state = true;

            if (Imagination > 0 || !IsEnemyFaction)
            {
                state = branchContext.Target != default && context.Alive;

                context.Writer.WriteBit(state);
            }

            if (state)
            {
                await ActionTrue.CalculateAsync(context, branchContext);
            }
            else
            {
                await ActionFalse.CalculateAsync(context, branchContext);
            }

            /*
             * var _ = Task.Run(async () =>
             * {
             *  context = context.Copy();
             *
             *  await Action.CalculateAsync(context, branchContext);
             *
             *  context.Sync(syncId);
             * });
             */
        }