Esempio n. 1
0
        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()));
        }
Esempio n. 2
0
    /// <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);
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
    /// <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);
    }
Esempio n. 7
0
 public SimpleBrain()
 {
     m_Behavior = BehaviorEnum.NotSet;
     m_Target   = null;
 }
Esempio n. 8
0
    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;
        }
    }
Esempio n. 9
0
 public AddFieldCommand(UInt16 size, Byte density, BehaviorEnum behaviorEnum)
 {
     Size         = size;
     Density      = density;
     BehaviorEnum = behaviorEnum;
 }