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); } }
protected override async Task ExecuteStart(SwitchBehaviorExecutionParameters parameters) { if (parameters.State) { await ActionTrue.ExecuteStart(parameters.Parameters); } else { await ActionFalse.ExecuteStart(parameters.Parameters); } }
protected override void ExecuteStart(SwitchBehaviorExecutionParameters parameters) { if (parameters.State) { ActionTrue.ExecuteStart(parameters.Parameters); } else { ActionFalse.ExecuteStart(parameters.Parameters); } }
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); }
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); }
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); }
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); }
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); * }); */ }