public async Task <IBehavior> Get(BehaviorEnum id) { if (_store.TryGetValue(id, out IBehavior result)) { return(await Task.FromResult(result)); } return(await Task.FromResult(new NullBehavior())); }
/// <summary> /// Get behavoir list /// </summary> /// <param name="behaviorEnum"></param> /// <returns></returns> private List <IBehavor> GetBehavoirs(BehaviorEnum behaviorEnum) { List <IBehavor> behavors = new List <IBehavor>(); string label = behaviorEnum.ToString(); switch (behaviorEnum) { case BehaviorEnum.Keyboard: behavors.Add(new KeyBoard()); break; case BehaviorEnum.SeekClickPoint: behavors.Add(new ClickSeekPoint()); break; case BehaviorEnum.Seek: behavors.Add(new Seek(m_Target.transform)); break; case BehaviorEnum.Flee: if (m_Target != null) { behavors.Add(new Flee(m_Target.transform, EnitiyManager.instance.DataCubeSettings.RunFromEnemyDistance)); } break; case BehaviorEnum.FollowPath: behavors.Add(new FollowPath(m_WaitPoints)); break; case BehaviorEnum.Pursue: behavors.Add(new Persue(m_Target.transform)); break; case BehaviorEnum.Evade: behavors.Add(new Evade(m_Target.transform)); break; case BehaviorEnum.Wander: behavors.Add(new Wander2D()); break; case BehaviorEnum.Ilde: behavors.Add(new Idle()); break; default: Debug.LogError($"Behavior of Type{behaviorEnum} not implemented yet!"); break; } if (behavors.Count > 0) { behavors[0].Label = label; } return(behavors); }
public override System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer> ReadFields(System.IO.BinaryReader binaryReader) { System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer> pointerQueue = new System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer>(base.ReadFields(binaryReader)); this.WeaponTriggersFlags = ((Flags)(binaryReader.ReadInt32())); this.Input = ((InputEnum)(binaryReader.ReadInt16())); this.Behavior = ((BehaviorEnum)(binaryReader.ReadInt16())); this.PrimaryBarrel = binaryReader.ReadShortBlockIndex1(); this.SecondaryBarrel = binaryReader.ReadShortBlockIndex1(); this.Prediction = ((PredictionEnum)(binaryReader.ReadInt16())); this.fieldpad = binaryReader.ReadBytes(2); pointerQueue = new System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer>(pointerQueue.Concat(this.Autofire.ReadFields(binaryReader))); pointerQueue = new System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer>(pointerQueue.Concat(this.Charging.ReadFields(binaryReader))); return(pointerQueue); }
private List <IBehavor> GetBehavoirs(BehaviorEnum behaviorEnum) { List <IBehavor> behavors = new List <IBehavor>(); string label = behaviorEnum.ToString(); switch (behaviorEnum) { case BehaviorEnum.Keyboard: behavors.Add(new KeyBoard()); break; case BehaviorEnum.SeekClickPoint: behavors.Add(new ClickSeekPoint()); break; case BehaviorEnum.Seek: behavors.Add(new Seek(m_Target.transform)); break; case BehaviorEnum.Flee: behavors.Add(new Flee(m_Target.transform)); break; case BehaviorEnum.FollowPath: behavors.Add(new FollowPath(m_WaitPoints)); break; case BehaviorEnum.Pursue: behavors.Add(new Persue(m_Target.transform)); break; case BehaviorEnum.Evade: behavors.Add(new Evade(m_Target.transform)); break; case BehaviorEnum.Wander: behavors.Add(new Wander()); break; default: Debug.LogError($"Behavior of Type{behaviorEnum} not implemented yet!"); break; } behavors[0].Label = label; return(behavors); }
public async Task <Guid> Add(UInt16 size, Byte density, BehaviorEnum behaviorEnum) { String requestContent = JsonSerializer.Serialize(new { size, density, behaviorEnum }); var response = await _httpClient.PostAsync("/fields/", new StringContent(requestContent, Encoding.UTF8, "application/json")); String responseContent = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { String guidString = responseContent.Trim('"'); return(new Guid(guidString)); } else { throw new HttpRequestException("Failed to add new field", new Exception(responseContent)); } }
/// <summary> /// Change the behavoir manual /// </summary> /// <param name="behaviorEnum"></param> private void SetQuickBehavoir(BehaviorEnum behaviorEnum) { List <IBehavor> behavors = GetBehavoirs(behaviorEnum); ObjectAvoidance objectAvoidance = null; Arrive arrive = null; if (m_ObjectAvoidanceActive) { objectAvoidance = new ObjectAvoidance(m_Radius, LayerMask); objectAvoidance.Label = BehaviorEnum.ObjectAvoid.ToString(); behavors.Add(objectAvoidance); } if (m_ArriveActive) { arrive = new Arrive(m_Target.transform); arrive.Label = "Arrive"; behavors.Add(arrive); } m_Steering.SetBehaviors(objectAvoidance, arrive, behavors, behavors[0].Label); }
public SimpleBrain() { m_Behavior = BehaviorEnum.NotSet; m_Target = null; }
public void SetBehaviorTree(BehaviorEnum behavior) { this.behavior = behavior; switch (behavior) { case BehaviorEnum.Aggressive: _tree = new Tree <Pawn> ( new Selector <Pawn> ( new Sequence <Pawn> ( new HasStraightPathToBall(), new MoveTowardBall() ), new DontMove() ) ); break; case BehaviorEnum.Defensive: _tree = new Tree <Pawn> ( new Selector <Pawn> ( new Sequence <Pawn> ( new BallIsOnMySideOfField(), new IAmOnCorrectSideOfBall(), new HasStraightPathToBall(), new MoveTowardBall() ), new Sequence <Pawn> ( new BallIsOnMySideOfField(), new Not <Pawn>(new IAmOnCorrectSideOfBall()), new MoveToMySideOfField() ), new MoveToInitPos() ) ); break; case BehaviorEnum.Afraid_of_ball: _tree = new Tree <Pawn> ( new Selector <Pawn> ( new Sequence <Pawn> ( new IsCloseToBall(5f, 1f), new MoveAwayFromBall() ), new MoveToInitPos() ) ); break; case BehaviorEnum.Goalie: _tree = new Tree <Pawn> ( new Selector <Pawn> ( new Sequence <Pawn> ( new BallIsOnMySideOfField(), new BallHasStraightPathToGoal(), new MoveToBlockBall() ), new MoveToInitPos() ) ); break; } }
public AddFieldCommand(UInt16 size, Byte density, BehaviorEnum behaviorEnum) { Size = size; Density = density; BehaviorEnum = behaviorEnum; }