Skip to main content

AnimationPlayer

Struct AnimationPlayer 

Source
pub struct AnimationPlayer { /* private fields */ }
Expand description

Plays a move animation, stepping through its command sequence.

The player is a state machine:

  1. start(move_id) loads the move’s command list.
  2. tick() advances one step and returns what happened.
  3. After each tick, oam_entries() has the current sprite data.

The caller is responsible for:

  • Rendering OAM entries to the screen each frame.
  • Applying AnimEffect actions (palette changes, screen shake, etc.).
  • Counting down WaitDelay frames before calling tick again.

Implementations§

Source§

impl AnimationPlayer

Source

pub fn new() -> Self

Create a new idle animation player.

Source

pub fn start(&mut self, move_id: usize, player_is_attacker: bool)

Start playing the animation for the given move. move_id is 0-based index into MOVE_ANIM_DATA. player_is_attacker determines Enemy transform resolution.

Source

pub fn is_finished(&self) -> bool

Whether the animation has finished playing.

Source

pub fn oam_entries(&self) -> &[SpriteOamEntry]

Get the current OAM buffer for rendering.

Source

pub fn current_tileset(&self) -> Option<u8>

Current move-animation tileset index (0/1/2) while a subanimation is active.

Source

pub fn decode_command(raw: &(u8, u8, u8, u8)) -> AnimCommand

Decode a raw command tuple from MOVE_ANIM_DATA into an AnimCommand.

Source

pub fn resolve_transform( &self, raw_transform: SubAnimTransform, ) -> SubAnimTransform

Resolve the effective transform for a subanimation, accounting for Enemy type and whose turn it is.

Source§

impl AnimationPlayer

Source

pub fn render_frame_block( frame_block_id: usize, base_coord_id: usize, transform: SubAnimTransform, dest: &mut Vec<SpriteOamEntry>, )

Render a frame block into OAM entries, applying the given transform.

frame_block_id: index into FRAME_BLOCK_DATA. base_coord_id: index into BASE_COORDS. transform: the resolved SubAnimTransform to apply. dest: output buffer to append OAM entries to.

Source§

impl AnimationPlayer

Source

pub fn tick(&mut self) -> AnimTickResult

Advance the animation by one step.

Returns what happened this tick. The caller should:

  • Playing → render oam_entries() to screen.
  • WaitDelay → wait frames frames, then call tick again.
  • Effect → apply the special effect, then call tick again.
  • Done → animation is finished. Playing/WaitDelay also carry a hook when the current animation id has an entry in ANIMATION_ID_HOOKS (the original’s DoSpecialEffectByAnimationId, run after every DrawFrameBlock).
Source§

impl AnimationPlayer

Source

pub fn apply_effect(effect: SpecialEffect) -> AnimEffect

Map a SpecialEffect to a high-level AnimEffect the caller should apply.

This translates the original ASM effect handlers into abstract operations. The caller’s rendering layer is responsible for executing these.

Trait Implementations§

Source§

impl Clone for AnimationPlayer

Source§

fn clone(&self) -> AnimationPlayer

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AnimationPlayer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for AnimationPlayer

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more