Struct veloren_common::comp::buff::Buffs
source · pub struct Buffs {
pub kinds: EnumMap<BuffKind, Option<(Vec<BuffKey>, Time)>>,
pub buffs: SlotMap<BuffKey, Buff>,
}
Expand description
Component holding all de/buffs that gets resolved each tick.
On each tick, remaining time of buffs get lowered and
buff effect of each buff is applied or not, depending on the BuffEffect
(specs system will decide based on BuffEffect
, to simplify
implementation). TODO: Something like once
flag for Buff
to remove the
dependence on BuffEffect
enum?
In case of one-time buffs, buff effects will be applied on addition and undone on removal of the buff (by the specs system). Example could be decreasing max health, which, if repeated each tick, would be probably an undesired effect).
Fields§
§kinds: EnumMap<BuffKind, Option<(Vec<BuffKey>, Time)>>
Maps kinds of buff to currently applied buffs of that kind and the time that the first buff was added (time gets reset if entity no longer has buffs of that kind)
buffs: SlotMap<BuffKey, Buff>
Implementations§
source§impl Buffs
impl Buffs
fn sort_kind(&mut self, kind: BuffKind)
pub fn remove_kind(&mut self, kind: BuffKind)
pub fn insert(&mut self, buff: Buff, current_time: Time) -> BuffKey
pub fn contains(&self, kind: BuffKind) -> bool
pub fn iter_kind( &self, kind: BuffKind, ) -> impl Iterator<Item = (BuffKey, &Buff)> + '_
pub fn iter_active( &self, ) -> impl Iterator<Item = impl Iterator<Item = &Buff>> + '_
pub fn remove(&mut self, buff_key: BuffKey)
fn delay_queueable_buffs(&mut self, kind: BuffKind, current_time: Time)
Trait Implementations§
source§impl<'de> Deserialize<'de> for Buffs
impl<'de> Deserialize<'de> for Buffs
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Buffs
impl RefUnwindSafe for Buffs
impl Send for Buffs
impl Sync for Buffs
impl Unpin for Buffs
impl UnwindSafe for Buffs
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<C, M> ConvertSaveload<M> for C
impl<C, M> ConvertSaveload<M> for C
§type Error = Infallible
type Error = Infallible
Error may occur during serialization or deserialization of component
§fn convert_into<F>(
&self,
_: F,
) -> Result<<C as ConvertSaveload<M>>::Data, <C as ConvertSaveload<M>>::Error>
fn convert_into<F>( &self, _: F, ) -> Result<<C as ConvertSaveload<M>>::Data, <C as ConvertSaveload<M>>::Error>
Convert this data type into serializable form (
Data
) using
entity to marker mapping function§fn convert_from<F>(
data: <C as ConvertSaveload<M>>::Data,
_: F,
) -> Result<C, <C as ConvertSaveload<M>>::Error>
fn convert_from<F>( data: <C as ConvertSaveload<M>>::Data, _: F, ) -> Result<C, <C as ConvertSaveload<M>>::Error>
Convert this data from a deserializable form (
Data
) using
entity to marker mapping function§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<Context> SubContext<Context> for Context
impl<Context> SubContext<Context> for Context
fn sub_context(self) -> Context
§impl<T> TryDefault for Twhere
T: Default,
impl<T> TryDefault for Twhere
T: Default,
§fn try_default() -> Result<T, String>
fn try_default() -> Result<T, String>
Tries to create the default.
§fn unwrap_default() -> Self
fn unwrap_default() -> Self
Calls
try_default
and panics on an error case.