[][src]Enum ai_behavior::Behavior

pub enum Behavior<A> {
    WaitForPressed(Button),
    WaitForReleased(Button),
    Wait(f64),
    WaitForever,
    Action(A),
    Fail(Box<Behavior<A>>),
    AlwaysSucceed(Box<Behavior<A>>),
    Select(Vec<Behavior<A>>),
    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

WaitForPressed(Button)

Wait for a button to be pressed.

Returns Success when the button is pressed, otherwise it returns Running.

WaitForReleased(Button)

Wait for a button to be released.

Returns Success when the button is released, otherwise it returns Running.

Wait(f64)

Waits an amount of time before continuing.

f64: Time in seconds

WaitForever

Wait forever.

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.

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: Clone> Clone for Behavior<A>[src]

impl<'de, A> Deserialize<'de> for Behavior<A> where
    A: Deserialize<'de>, 
[src]

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

impl<A> Serialize for Behavior<A> where
    A: Serialize
[src]

impl<A> StructuralPartialEq for Behavior<A>[src]

Auto Trait Implementations

impl<A> RefUnwindSafe for Behavior<A> where
    A: RefUnwindSafe

impl<A> Send for Behavior<A> where
    A: Send

impl<A> Sync for Behavior<A> where
    A: Sync

impl<A> Unpin for Behavior<A> where
    A: Unpin

impl<A> UnwindSafe for Behavior<A> where
    A: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.