Enum ai_behavior::Behavior [] [src]

pub enum Behavior<A> {
    Pressed(Button),
    Released(Button),
    Action(A),
    Fail(Box<Behavior<A>>),
    AlwaysSucceed(Box<Behavior<A>>),
    Select(Vec<Behavior<A>>),
    Wait(f64),
    WaitForever,
    If(Box<Behavior<A>>, Box<Behavior<A>>, Box<Behavior<A>>),
    Sequence(Vec<Behavior<A>>),
    While(Box<Behavior<A>>, Vec<Behavior<A>>),
    WhenAll(Vec<Behavior<A>>),
    WhenAny(Vec<Behavior<A>>),
    After(Vec<Behavior<A>>),
}

Describes a behavior.

This is used for more complex event logic. Can also be used for game AI.

Variants

Pressed(Button)

A button was pressed.

Released(Button)

A button was released.

Action(A)

A high level description of an action.

Fail(Box<Behavior<A>>)

Converts Success into Failure and vice versa.

AlwaysSucceed(Box<Behavior<A>>)

Ignores failures and returns Success.

Select(Vec<Behavior<A>>)

Runs behaviors one by one until a behavior succeeds.

If a behavior fails it will try the next one. Fails if the last behavior fails. Can be thought of as a short-circuited logical OR gate.

Wait(f64)

Waits an amount of time before continuing.

f64: Time in seconds

WaitForever

Wait forever.

If(Box<Behavior<A>>, Box<Behavior<A>>, Box<Behavior<A>>)

If(condition, success, failure)

Sequence(Vec<Behavior<A>>)

Runs behaviors one by one until all succeeded.

The sequence fails if a behavior fails. The sequence succeeds if all the behavior succeeds. Can be thought of as a short-circuited logical AND gate.

While(Box<Behavior<A>>, Vec<Behavior<A>>)

Loops while conditional behavior is running.

Succeeds if the conditional behavior succeeds. Fails if the conditional behavior fails, or if any behavior in the loop body fails.

WhenAll(Vec<Behavior<A>>)

Runs all behaviors in parallel until all succeeded.

Succeeds if all behaviors succeed. Fails is any behavior fails.

WhenAny(Vec<Behavior<A>>)

Runs all behaviors in parallel until one succeeds.

Succeeds if one behavior succeeds. Fails if all behaviors failed.

After(Vec<Behavior<A>>)

Runs all behaviors in parallel until all succeeds in sequence.

Succeeds if all behaviors succeed, but only if succeeding in sequence. Fails if one behavior fails.

Trait Implementations

impl<A: PartialEq> PartialEq for Behavior<A>
[src]

fn eq(&self, __arg_0: &Behavior<A>) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, __arg_0: &Behavior<A>) -> bool

This method tests for !=.

impl<A: Encodable> Encodable for Behavior<A>
[src]

fn encode<__SA: Encoder>(&self, __arg_0: &mut __SA) -> Result<(), __SA::Error>

impl<A: Decodable> Decodable for Behavior<A>
[src]

fn decode<__DA: Decoder>(__arg_0: &mut __DA) -> Result<Behavior<A>, __DA::Error>

impl<A: Clone> Clone for Behavior<A>
[src]

fn clone(&self) -> Behavior<A>

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)
1.0.0

Performs copy-assignment from source. Read more