mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
cape item
This commit is contained in:
parent
1f31b7f123
commit
771baaaae5
8
assets/common/items/armor/back/short_0.ron
Normal file
8
assets/common/items/armor/back/short_0.ron
Normal file
@ -0,0 +1,8 @@
|
||||
Item(
|
||||
name: "Short leather Cape",
|
||||
description: "WIP",
|
||||
kind: Armor(
|
||||
kind: Back(Short0),
|
||||
stats: (20),
|
||||
),
|
||||
)
|
12
assets/voxygen/voxel/humanoid_armor_back_manifest.ron
Normal file
12
assets/voxygen/voxel/humanoid_armor_back_manifest.ron
Normal file
@ -0,0 +1,12 @@
|
||||
((
|
||||
default: (
|
||||
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
|
||||
color: None
|
||||
),
|
||||
map: {
|
||||
Short0: (
|
||||
vox_spec: ("armor.back.short-0", (0.0, 0.0, 0.0)),
|
||||
color: None
|
||||
),
|
||||
},
|
||||
))
|
@ -163,6 +163,12 @@ pub const ALL_SHOULDERS: [Shoulder; 9] = [
|
||||
Shoulder::ClothBlue0,
|
||||
Shoulder::ClothGreen0,
|
||||
];
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
#[repr(u32)]
|
||||
pub enum Back {
|
||||
Short0 = 1,
|
||||
}
|
||||
pub const ALL_BACKS: [Back; 1] = [Back::Short0];
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
pub enum Armor {
|
||||
@ -172,6 +178,7 @@ pub enum Armor {
|
||||
Hand(Hand),
|
||||
Pants(Pants),
|
||||
Foot(Foot),
|
||||
Back(Back),
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
|
@ -138,6 +138,7 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv
|
||||
Hand(_) => &mut loadout.hand,
|
||||
Pants(_) => &mut loadout.pants,
|
||||
Foot(_) => &mut loadout.foot,
|
||||
Back(_) => &mut loadout.back,
|
||||
};
|
||||
|
||||
// Insert old item into inventory
|
||||
|
@ -255,6 +255,8 @@ pub struct HumArmorPantsSpec(ArmorVoxSpecMap<Pants, ArmorVoxSpec>);
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct HumArmorFootSpec(ArmorVoxSpecMap<Foot, ArmorVoxSpec>);
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct HumArmorBackSpec(ArmorVoxSpecMap<Foot, ArmorVoxSpec>);
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct HumMainWeaponSpec(HashMap<ToolKind, ArmorVoxSpec>);
|
||||
|
||||
impl Asset for HumArmorShoulderSpec {
|
||||
@ -299,6 +301,13 @@ impl Asset for HumArmorFootSpec {
|
||||
ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error)
|
||||
}
|
||||
}
|
||||
impl Asset for HumArmorBackSpec {
|
||||
const ENDINGS: &'static [&'static str] = &["ron"];
|
||||
|
||||
fn parse(buf_reader: BufReader<File>) -> Result<Self, assets::Error> {
|
||||
ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error)
|
||||
}
|
||||
}
|
||||
impl Asset for HumMainWeaponSpec {
|
||||
const ENDINGS: &'static [&'static str] = &["ron"];
|
||||
|
||||
@ -597,6 +606,56 @@ impl HumArmorFootSpec {
|
||||
self.mesh_foot(body, loadout, false)
|
||||
}
|
||||
}
|
||||
impl HumArmorBackSpec {
|
||||
pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc<Self> {
|
||||
assets::load_watched::<Self>("voxygen.voxel.humanoid_armor_back_manifest", indicator)
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn mesh_back(&self, body: &Body, loadout: &Loadout) -> Mesh<FigurePipeline> {
|
||||
let spec = if let Some(ItemKind::Armor {
|
||||
kind: Armor::Back(back),
|
||||
..
|
||||
}) = loadout.back.as_ref().map(|i| &i.kind)
|
||||
{
|
||||
match self.0.map.get(&back) {
|
||||
Some(spec) => spec,
|
||||
None => {
|
||||
error!("No back-armor specification exists for {:?}", back);
|
||||
return load_mesh("not_found", Vec3::new(-5.0, -3.5, 1.0));
|
||||
},
|
||||
}
|
||||
} else {
|
||||
&self.0.default
|
||||
};
|
||||
|
||||
let color = |mat_segment| {
|
||||
color_segment(
|
||||
mat_segment,
|
||||
body.race.skin_color(body.skin),
|
||||
body.race.hair_color(body.hair_color),
|
||||
body.race.eye_color(body.eye_color),
|
||||
)
|
||||
};
|
||||
|
||||
let bare_back = graceful_load_mat_segment("armor.empty");
|
||||
|
||||
let mut back_armor = graceful_load_mat_segment(&spec.vox_spec.0);
|
||||
|
||||
if let Some(color) = spec.color {
|
||||
let back_color = Vec3::from(color);
|
||||
back_armor = back_armor.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(back_color)));
|
||||
}
|
||||
|
||||
let back = DynaUnionizer::new()
|
||||
.add(color(bare_back), Vec3::new(0, 0, 0))
|
||||
.add(color(back_armor), Vec3::new(0, 0, 0))
|
||||
.unify()
|
||||
.0;
|
||||
|
||||
generate_mesh(&back, Vec3::from(spec.vox_spec.1))
|
||||
}
|
||||
}
|
||||
|
||||
impl HumMainWeaponSpec {
|
||||
pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc<Self> {
|
||||
|
Loading…
Reference in New Issue
Block a user