Struct EntityActionsQueue

Source
pub struct EntityActionsQueue { /* private fields */ }

Implementations§

Source§

impl EntityActionsQueue

Source

pub fn new(entity_id: EntityId) -> Self

Source

pub fn push(&mut self, action_with_deadline: &ActionWithDeadline)

Source

pub fn append_start_cast_ability_result_actions( &mut self, actions_with_deadlines: &Vec<ActionWithDeadline>, current_tick: u64, ability_id: AbilityId, ability_cooldown: u64, )

Source

pub fn pop(&mut self, current_tick: u64) -> Option<EntityAction>

Source

pub fn remove_start_cast_ability_action( &mut self, ability_id_to_remove: AbilityId, )

Source

pub fn remove_cast_effect_action(&mut self, effect_id_to_remove: EffectId)

Source

pub fn get_closest_start_cast_action_deadline(&self) -> Option<u64>

Source

pub fn rescale_cooldowns( &mut self, old_speed: i64, new_speed: i64, current_tick: u64, baseline_speed: u64, )

Rescales every StartCastAbility (cooldown) entry in the queue to reflect a change in the entity’s speed attribute.

At speed S, a cooldown that was originally C ticks long elapses in C * baseline / S game-ticks. So when speed changes from S_old to S_new, the still-remaining game-ticks for each in-flight cooldown become (deadline - current_tick) * S_old / S_new. baseline_speed falls in for non-positive speed values.

In-flight casts (CastAbility / CastBasicAbility cast animations) are intentionally not touched here — speed scales cooldowns, not cast time.

Source

pub fn stun_ability( &mut self, ability_id: AbilityId, duration_ticks: u64, full_cooldown_ticks: u64, current_tick: u64, )

Applies stun semantics to a single ability:

  • If the ability is currently mid-cast (CastAbility/CastBasicAbility queued), cancels the cast and sets the cooldown deadline to current_tick + full_cooldown_ticks + duration_ticks — full cooldown plus the stun freeze on top.
  • Otherwise, if the ability already has a cooldown entry, extends its deadline by duration_ticks (the cooldown effectively pauses for the stun duration).
  • Otherwise (off cooldown), pushes a fresh cooldown entry of duration_ticks so the ability stays unusable while stunned.

full_cooldown_ticks is the ability’s full cooldown (already scaled for entity speed if the caller wants speed to apply).

Source

pub fn cancel_cast_and_set_cooldown( &mut self, ability_id_to_cancel: AbilityId, new_deadline_tick: u64, ) -> bool

Cancels any in-flight cast (CastAbility / CastBasicAbility) for ability_id_to_cancel and replaces the cooldown entry (StartCastAbility) with a new one at new_deadline_tick. Returns true when an in-flight cast was found and removed.

Source

pub fn adjust_ability_cooldown( &mut self, ability_id_to_adjust: AbilityId, delta_ticks: i64, current_tick: u64, ) -> bool

Adjusts the cooldown for a specific ability by delta_ticks. Positive delta extends the cooldown, negative shortens it (saturating at current_tick, i.e. no remaining cooldown). Returns true when an entry was found and adjusted.

Source

pub fn view(&self) -> HashMap<ActionPriority, Vec<ActionWithDeadline>>

Trait Implementations§

Source§

impl Clone for EntityActionsQueue

Source§

fn clone(&self) -> EntityActionsQueue

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for EntityActionsQueue

Source§

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

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

impl Default for EntityActionsQueue

Source§

fn default() -> EntityActionsQueue

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

impl<'de> Deserialize<'de> for EntityActionsQueue

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for EntityActionsQueue

Source§

fn eq(&self, other: &EntityActionsQueue) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for EntityActionsQueue

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for EntityActionsQueue

Source§

impl StructuralPartialEq for EntityActionsQueue

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<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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

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> Same for T

Source§

type Output = T

Should always be Self
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<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

§

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

Source§

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

§

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