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::ClothBlue0,
|
||||||
Shoulder::ClothGreen0,
|
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)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||||
pub enum Armor {
|
pub enum Armor {
|
||||||
@ -172,6 +178,7 @@ pub enum Armor {
|
|||||||
Hand(Hand),
|
Hand(Hand),
|
||||||
Pants(Pants),
|
Pants(Pants),
|
||||||
Foot(Foot),
|
Foot(Foot),
|
||||||
|
Back(Back),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
#[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,
|
Hand(_) => &mut loadout.hand,
|
||||||
Pants(_) => &mut loadout.pants,
|
Pants(_) => &mut loadout.pants,
|
||||||
Foot(_) => &mut loadout.foot,
|
Foot(_) => &mut loadout.foot,
|
||||||
|
Back(_) => &mut loadout.back,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Insert old item into inventory
|
// Insert old item into inventory
|
||||||
|
@ -255,6 +255,8 @@ pub struct HumArmorPantsSpec(ArmorVoxSpecMap<Pants, ArmorVoxSpec>);
|
|||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct HumArmorFootSpec(ArmorVoxSpecMap<Foot, ArmorVoxSpec>);
|
pub struct HumArmorFootSpec(ArmorVoxSpecMap<Foot, ArmorVoxSpec>);
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
|
pub struct HumArmorBackSpec(ArmorVoxSpecMap<Foot, ArmorVoxSpec>);
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct HumMainWeaponSpec(HashMap<ToolKind, ArmorVoxSpec>);
|
pub struct HumMainWeaponSpec(HashMap<ToolKind, ArmorVoxSpec>);
|
||||||
|
|
||||||
impl Asset for HumArmorShoulderSpec {
|
impl Asset for HumArmorShoulderSpec {
|
||||||
@ -299,6 +301,13 @@ impl Asset for HumArmorFootSpec {
|
|||||||
ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error)
|
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 {
|
impl Asset for HumMainWeaponSpec {
|
||||||
const ENDINGS: &'static [&'static str] = &["ron"];
|
const ENDINGS: &'static [&'static str] = &["ron"];
|
||||||
|
|
||||||
@ -597,6 +606,56 @@ impl HumArmorFootSpec {
|
|||||||
self.mesh_foot(body, loadout, false)
|
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 {
|
impl HumMainWeaponSpec {
|
||||||
pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc<Self> {
|
pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc<Self> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user