root/src/BRAINSFramework/Behaviors/SequenceBehavior.cs

1322
8
8
9
namespace Brains.Framework.Behaviors
9
namespace Brains.Framework.Behaviors
10
{
10
{
11
    /// <summary>
12
    /// The sequence behavior runs a sub behavior until it is complete, then moves onto the next sub behavior.
13
    /// </summary>
11
    [BehaviorAttribute("Sequence")]
14
    [BehaviorAttribute("Sequence")]
12
    public class SequenceBehavior : BehaviorBase, ICompositeBehavior
15
    public class SequenceBehavior : CompositeBehavior, ICompositeBehavior
13
    {
16
    {
14
      
17
      
15
        public SequenceBehavior()
18
        public SequenceBehavior()
16
        {
19
        {
17
20
            
18
        }
21
        }
19
        
22
        
20
        public override void Update(GameTime gameTime)
23
        public override void Update(GameTime gameTime)
...
...
47
        public override void OnSubBehaviorSuccess()
50
        public override void OnSubBehaviorSuccess()
48
        {
51
        {
49
            //Reset the current sub behavior to idle
52
            //Reset the current sub behavior to idle
50
            SubBehaviors[CurrentSubBehavior].State = BehaviorState.Idle;
53
            SubBehaviors[CurrentSubBehavior].Reset();
51
54
52
            //If it's the last behavior the sequence is a success
55
            //If it's the last behavior the sequence is a success
53
            if (CurrentSubBehavior == Count - 1)
56
            if (CurrentSubBehavior == Count - 1)
...
...
55
                State = BehaviorState.Success;
58
                State = BehaviorState.Success;
56
            }
59
            }
57
            else //Move onto the next item in the sequence.
60
            else //Move onto the next item in the sequence.
61
            {   
58
                CurrentSubBehavior++;
62
                CurrentSubBehavior++;
63
            }
59
64
60
        }
65
        }
61
    }
66
    }