From 7f97fbac0b9d381b07aee6618b1001fec0bdaff0 Mon Sep 17 00:00:00 2001 From: Pfauenauge90 <44173739+Pfauenauge90@users.noreply.github.com> Date: Mon, 6 Apr 2020 18:11:05 +0200 Subject: [PATCH] cape item --- .../voxel/humanoid_armor_back_manifest.ron | 2 +- common/src/comp/ability.rs | 1 + server/src/state_ext.rs | 1 + server/src/sys/terrain.rs | 4 ++ voxygen/src/menu/char_selection/ui.rs | 1 + voxygen/src/scene/figure/load.rs | 58 +++++++++---------- 6 files changed, 37 insertions(+), 30 deletions(-) diff --git a/assets/voxygen/voxel/humanoid_armor_back_manifest.ron b/assets/voxygen/voxel/humanoid_armor_back_manifest.ron index 4d1db6dcff..142a876de6 100644 --- a/assets/voxygen/voxel/humanoid_armor_back_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_back_manifest.ron @@ -5,7 +5,7 @@ ), map: { Short0: ( - vox_spec: ("armor.back.short-0", (0.0, 0.0, 0.0)), + vox_spec: ("armor.back.short-0", (10.0, 10.0, 10.0)), color: None ), }, diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 0b009b270f..aefb5b2538 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -104,6 +104,7 @@ pub struct Loadout { pub hand: Option, pub pants: Option, pub foot: Option, + pub back: Option, } impl From<&CharacterAbility> for CharacterState { diff --git a/server/src/state_ext.rs b/server/src/state_ext.rs index 458339b690..e8dc2a2487 100644 --- a/server/src/state_ext.rs +++ b/server/src/state_ext.rs @@ -184,6 +184,7 @@ impl StateExt for State { hand: None, pants: None, foot: None, + back: None, } } else { comp::Loadout::default() diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index dbc6bcd513..a45246583a 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -243,6 +243,7 @@ impl<'a> System<'a> for Sys { foot: Some(assets::load_expect_cloned( "common.items.armor.foot.leather_0", )), + back: None, }, comp::Alignment::Enemy => comp::Loadout { active_item, @@ -265,6 +266,7 @@ impl<'a> System<'a> for Sys { foot: Some(assets::load_expect_cloned( "common.items.armor.foot.plate_0", )), + back: None, }, _ => comp::Loadout { active_item, @@ -275,6 +277,7 @@ impl<'a> System<'a> for Sys { hand: None, pants: None, foot: None, + back: None, }, }; @@ -335,6 +338,7 @@ impl<'a> System<'a> for Sys { foot: Some(assets::load_expect_cloned( "common.items.armor.foot.plate_0", )), + back: None, }; stats.level.set_level(rand::thread_rng().gen_range(30, 35)); diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs index 2c8d7ac104..2804c84fcd 100644 --- a/voxygen/src/menu/char_selection/ui.rs +++ b/voxygen/src/menu/char_selection/ui.rs @@ -355,6 +355,7 @@ impl CharSelectionUi { hand: None, pants: None, foot: None, + back: None, }; Some(loadout) }, diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index bbfb0bb309..f372a309df 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -12,7 +12,7 @@ use common::{ dragon, fish_medium, fish_small, humanoid::{Body, BodyType, EyeColor, Eyebrows, Race, Skin}, item::{ - armor::{Armor, Belt, Chest, Foot, Hand, Pants, Shoulder}, + armor::{Armor, Back, Belt, Chest, Foot, Hand, Pants, Shoulder}, tool::{Tool, ToolKind}, ItemKind, }, @@ -255,9 +255,9 @@ pub struct HumArmorPantsSpec(ArmorVoxSpecMap); #[derive(Serialize, Deserialize)] pub struct HumArmorFootSpec(ArmorVoxSpecMap); #[derive(Serialize, Deserialize)] -pub struct HumArmorBackSpec(ArmorVoxSpecMap); -#[derive(Serialize, Deserialize)] pub struct HumMainWeaponSpec(HashMap); +#[derive(Serialize, Deserialize)] +pub struct HumArmorBackSpec(ArmorVoxSpecMap); impl Asset for HumArmorShoulderSpec { const ENDINGS: &'static [&'static str] = &["ron"]; @@ -606,6 +606,32 @@ impl HumArmorFootSpec { self.mesh_foot(body, loadout, false) } } + +impl HumMainWeaponSpec { + pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { + assets::load_watched::("voxygen.voxel.humanoid_main_weapon_manifest", indicator) + .unwrap() + } + + pub fn mesh_main_weapon(&self, item_kind: Option<&ItemKind>) -> Mesh { + let tool_kind = if let Some(ItemKind::Tool(Tool { kind, .. })) = item_kind { + kind + } else { + return Mesh::new(); + }; + + let spec = match self.0.get(tool_kind) { + Some(spec) => spec, + None => { + error!("No hand specification exists for {:?}", tool_kind); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + }; + + let tool_kind_segment = graceful_load_segment(&spec.vox_spec.0); + generate_mesh(&tool_kind_segment, Vec3::from(spec.vox_spec.1)) + } +} impl HumArmorBackSpec { pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { assets::load_watched::("voxygen.voxel.humanoid_armor_back_manifest", indicator) @@ -657,32 +683,6 @@ impl HumArmorBackSpec { } } -impl HumMainWeaponSpec { - pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { - assets::load_watched::("voxygen.voxel.humanoid_main_weapon_manifest", indicator) - .unwrap() - } - - pub fn mesh_main_weapon(&self, item_kind: Option<&ItemKind>) -> Mesh { - let tool_kind = if let Some(ItemKind::Tool(Tool { kind, .. })) = item_kind { - kind - } else { - return Mesh::new(); - }; - - let spec = match self.0.get(tool_kind) { - Some(spec) => spec, - None => { - error!("No hand specification exists for {:?}", tool_kind); - return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); - }, - }; - - let tool_kind_segment = graceful_load_segment(&spec.vox_spec.0); - generate_mesh(&tool_kind_segment, Vec3::from(spec.vox_spec.1)) - } -} - // TODO: Inventory pub fn mesh_glider() -> Mesh { load_mesh("object.glider", Vec3::new(-26.0, -26.0, -5.0))