Struct veloren_common::comp::inventory::loadout_builder::LoadoutSpec
source · pub struct LoadoutSpec {Show 21 fields
inherit: Option<Base>,
head: Option<ItemSpec>,
neck: Option<ItemSpec>,
shoulders: Option<ItemSpec>,
chest: Option<ItemSpec>,
gloves: Option<ItemSpec>,
ring1: Option<ItemSpec>,
ring2: Option<ItemSpec>,
back: Option<ItemSpec>,
belt: Option<ItemSpec>,
legs: Option<ItemSpec>,
feet: Option<ItemSpec>,
tabard: Option<ItemSpec>,
bag1: Option<ItemSpec>,
bag2: Option<ItemSpec>,
bag3: Option<ItemSpec>,
bag4: Option<ItemSpec>,
lantern: Option<ItemSpec>,
glider: Option<ItemSpec>,
active_hands: Option<Hands>,
inactive_hands: Option<Hands>,
}
Expand description
Core struct of loadout asset.
If you want programing API of loadout creation,
use LoadoutBuilder
instead.
For examples of assets, see assets/test/loadout/ok
folder.
Fields§
§inherit: Option<Base>
§head: Option<ItemSpec>
§neck: Option<ItemSpec>
§shoulders: Option<ItemSpec>
§chest: Option<ItemSpec>
§gloves: Option<ItemSpec>
§ring1: Option<ItemSpec>
§ring2: Option<ItemSpec>
§back: Option<ItemSpec>
§belt: Option<ItemSpec>
§legs: Option<ItemSpec>
§feet: Option<ItemSpec>
§tabard: Option<ItemSpec>
§bag1: Option<ItemSpec>
§bag2: Option<ItemSpec>
§bag3: Option<ItemSpec>
§bag4: Option<ItemSpec>
§lantern: Option<ItemSpec>
§glider: Option<ItemSpec>
§active_hands: Option<Hands>
§inactive_hands: Option<Hands>
Implementations§
source§impl LoadoutSpec
impl LoadoutSpec
sourcefn merge(self, base: Self) -> Self
fn merge(self, base: Self) -> Self
Merges self
with base
.
If some field exists in self
it will be used,
if no, it will be taken from base
.
NOTE: it uses only inheritance chain from base
without evaluating it.
Inheritance chain from self
is discarded.
§Examples
You have your asset, let’s call it “a”. In this asset, you have inheritance from “b”. In asset “b” you inherit from “c”.
If you load your “a” into LoadoutSpec A, and “b” into LoadoutSpec B, and then merge A into B, you will get new LoadoutSpec that will inherit from “c”.
You have two assets, let’s call them “a” and “b”. “a” inherits from “n”, “b” inherits from “m”.
If you load “a” into A, “b” into B and then will try to merge them you will get new LoadoutSpec that will inherit from “m”. It’s error, because chain to “n” is lost!!!
Correct way to do this will be first evaluating at least “a” and then merge this new LoadoutSpec with “b”.
Trait Implementations§
source§impl Asset for LoadoutSpec
impl Asset for LoadoutSpec
source§const EXTENSION: &'static str = "ron"
const EXTENSION: &'static str = "ron"
§const EXTENSIONS: &'static [&'static str] = _
const EXTENSIONS: &'static [&'static str] = _
§fn default_value(
id: &SharedString,
error: Box<dyn Error + Send + Sync>,
) -> Result<Self, Box<dyn Error + Send + Sync>>
fn default_value( id: &SharedString, error: Box<dyn Error + Send + Sync>, ) -> Result<Self, Box<dyn Error + Send + Sync>>
Ok
, the returned value is used as an asset. In
particular, if this method always returns Ok
, AssetCache::load
is
guaranteed not to fail. Read more§const HOT_RELOADED: bool = true
const HOT_RELOADED: bool = true
false
, disable hot-reloading for assets of this type (true
by
default). This avoids having to lock the asset to read it (ie it makes
[Handle::read
] a noop)source§impl Clone for LoadoutSpec
impl Clone for LoadoutSpec
source§fn clone(&self) -> LoadoutSpec
fn clone(&self) -> LoadoutSpec
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for LoadoutSpec
impl Debug for LoadoutSpec
source§impl Default for LoadoutSpec
impl Default for LoadoutSpec
source§fn default() -> LoadoutSpec
fn default() -> LoadoutSpec
source§impl<'de> Deserialize<'de> for LoadoutSpec
impl<'de> Deserialize<'de> for LoadoutSpec
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>,
Auto Trait Implementations§
impl Freeze for LoadoutSpec
impl RefUnwindSafe for LoadoutSpec
impl Send for LoadoutSpec
impl Sync for LoadoutSpec
impl Unpin for LoadoutSpec
impl UnwindSafe for LoadoutSpec
Blanket Implementations§
source§impl<T> AssetExt for Twhere
T: Compound,
impl<T> AssetExt for Twhere
T: Compound,
source§fn load(specifier: &str) -> Result<&'static Handle<T>, Error>
fn load(specifier: &str) -> Result<&'static Handle<T>, Error>
fn load_owned(specifier: &str) -> Result<T, Error>
fn get_or_insert(specifier: &str, default: T) -> &'static Handle<T>
source§fn load_cloned(specifier: &str) -> Result<Self, Error>where
Self: Clone,
fn load_cloned(specifier: &str) -> Result<Self, Error>where
Self: Clone,
fn load_or_insert_with( specifier: &str, default: impl FnOnce(Error) -> Self, ) -> &'static Handle<Self>
source§fn load_expect(specifier: &str) -> &'static Handle<Self>
fn load_expect(specifier: &str) -> &'static Handle<Self>
source§fn load_expect_cloned(specifier: &str) -> Selfwhere
Self: Clone,
fn load_expect_cloned(specifier: &str) -> Selfwhere
Self: Clone,
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
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)
clone_to_uninit
)§impl<T> Compound for Twhere
T: Asset,
impl<T> Compound for Twhere
T: Asset,
§fn load(
cache: AnyCache<'_>,
id: &SharedString,
) -> Result<T, Box<dyn Error + Send + Sync>>
fn load( cache: AnyCache<'_>, id: &SharedString, ) -> Result<T, Box<dyn Error + Send + Sync>>
§const HOT_RELOADED: bool = Self::HOT_RELOADED
const HOT_RELOADED: bool = Self::HOT_RELOADED
false
, disable hot-reloading for assets of this type (true
by
default). This avoids having to lock the asset to read it (ie it makes
[Handle::read
] a noop)§impl<T> DirLoadable for Twhere
T: Asset,
impl<T> DirLoadable for Twhere
T: Asset,
§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>
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>
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>
§fn unwrap_default() -> Self
fn unwrap_default() -> Self
try_default
and panics on an error case.