diff --git a/assets/voxygen/element/ui/crafting/icons/blade.png b/assets/voxygen/element/ui/crafting/icons/blade.png new file mode 100644 index 0000000000..a1240c18c5 --- /dev/null +++ b/assets/voxygen/element/ui/crafting/icons/blade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3443c6a71879d00e936db7d3d6dc323e4ec551d98fb90aa22ac62f45ab80dbdb +size 644 diff --git a/assets/voxygen/element/ui/crafting/icons/handle.png b/assets/voxygen/element/ui/crafting/icons/handle.png new file mode 100644 index 0000000000..6f3a7e6f59 --- /dev/null +++ b/assets/voxygen/element/ui/crafting/icons/handle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8d0eb2027d515fbff9370f332ba2aa30632dba733a1a6dfeab1003facd7d65c +size 590 diff --git a/assets/voxygen/element/ui/crafting/modular_weps_art.png b/assets/voxygen/element/ui/crafting/modular_weps_art.png new file mode 100644 index 0000000000..e7f538101f --- /dev/null +++ b/assets/voxygen/element/ui/crafting/modular_weps_art.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:296c4fb0485212642d77d0c58ce26f629e4677f28b12dc763691107869b370f8 +size 11776 diff --git a/assets/voxygen/i18n/en/hud/crafting.ron b/assets/voxygen/i18n/en/hud/crafting.ron index 4c569b3e75..3145ebcc20 100644 --- a/assets/voxygen/i18n/en/hud/crafting.ron +++ b/assets/voxygen/i18n/en/hud/crafting.ron @@ -34,6 +34,7 @@ "hud.crafting.tabs.processed_material": "Materials", "hud.crafting.dismantle_title": "Dismantling", "hud.crafting.dismantle_explanation" : "Hover items in your bag to see what\nyou can salvage.\n\nDouble-Click them to start dismantling.", + "hud.crafting.modular_desc": "Drag Item-Parts here to craft a weapon", }, diff --git a/voxygen/src/hud/crafting.rs b/voxygen/src/hud/crafting.rs index 8065da6637..db3bf963a3 100644 --- a/voxygen/src/hud/crafting.rs +++ b/voxygen/src/hud/crafting.rs @@ -85,6 +85,11 @@ widget_ids! { dismantle_txt, dismantle_highlight_txt, modular_inputs[], + modular_art, + modular_desc_txt, + modular_wep_empty_bg, + modular_wep_ing_1_bg, + modular_wep_ing_2_bg, } } @@ -783,7 +788,11 @@ impl<'a> Widget for Crafting<'a> { .resize(2, &mut ui.widget_id_generator()); }); } - + // Modular Weapon Crafting BG-Art + Image::new(self.imgs.crafting_modular_art) + .mid_top_with_margin_on(state.ids.align_ing, 55.0) + .w_h(168.0, 250.0) + .set(state.ids.modular_art, ui); let primary_slot = CraftSlot { index: 0, invslot: self.show.crafting_fields.recipe_inputs.get(&0).copied(), @@ -802,7 +811,8 @@ impl<'a> Widget for Crafting<'a> { slot_maker .fabricate(primary_slot, [40.0; 2]) - .top_left_with_margins_on(state.ids.align_ing, 20.0, 20.0) + .top_left_with_margins_on(state.ids.modular_art, 4.0, 4.0) + .parent(state.ids.align_ing) .set(state.ids.modular_inputs[0], ui); let secondary_slot = CraftSlot { @@ -823,12 +833,16 @@ impl<'a> Widget for Crafting<'a> { slot_maker .fabricate(secondary_slot, [40.0; 2]) - .top_left_with_margins_on(state.ids.align_ing, 80.0, 20.0) + .top_right_with_margins_on(state.ids.modular_art, 4.0, 4.0) + .parent(state.ids.align_ing) .set(state.ids.modular_inputs[1], ui); let can_perform = primary_slot.invslot.is_some() && secondary_slot.invslot.is_some(); + let prim_item_placed = primary_slot.invslot.is_some(); + let sec_item_placed = secondary_slot.invslot.is_some(); + // Craft button if Button::image(self.imgs.button) .w_h(105.0, 25.0) @@ -865,10 +879,27 @@ impl<'a> Widget for Crafting<'a> { // Output Image Image::new(self.imgs.inv_slot) - .w_h(60.0, 60.0) - .top_right_with_margins_on(state.ids.align_ing, 15.0, 10.0) + .w_h(80.0, 80.0) + .mid_bottom_with_margin_on(state.ids.align_ing, 50.0) .parent(state.ids.align_ing) .set(state.ids.output_img_frame, ui); + let bg_col = Color::Rgba(1.0, 1.0, 1.0, 0.4); + if !prim_item_placed { + Image::new(self.imgs.ing_ico_prim) + .middle_of(state.ids.modular_inputs[0]) + .color(Some(bg_col)) + .w_h(34.0, 34.0) + .graphics_for(state.ids.modular_inputs[0]) + .set(state.ids.modular_wep_ing_1_bg, ui); + } + if !sec_item_placed { + Image::new(self.imgs.ing_ico_sec) + .middle_of(state.ids.modular_inputs[1]) + .color(Some(bg_col)) + .w_h(50.0, 50.0) + .graphics_for(state.ids.modular_inputs[1]) + .set(state.ids.modular_wep_ing_2_bg, ui); + } if let (Some(primary_comp), Some(secondary_comp)) = ( primary_slot @@ -919,8 +950,8 @@ impl<'a> Widget for Crafting<'a> { .label_color(TEXT_COLOR) .label_font_size(self.fonts.cyri.scale(14)) .label_font_id(self.fonts.cyri.conrod_id) - .label_y(conrod_core::position::Relative::Scalar(-24.0)) - .label_x(conrod_core::position::Relative::Scalar(24.0)) + .label_y(conrod_core::position::Relative::Scalar(-64.0)) + .label_x(conrod_core::position::Relative::Scalar(0.0)) .middle_of(state.ids.output_img_frame) .with_item_tooltip( self.item_tooltip_manager, @@ -929,6 +960,19 @@ impl<'a> Widget for Crafting<'a> { &item_tooltip, ) .set(state.ids.output_img, ui); + } else { + Text::new(self.localized_strings.get("hud.crafting.modular_desc")) + .mid_top_with_margin_on(state.ids.modular_art, -25.0) + .font_id(self.fonts.cyri.conrod_id) + .font_size(self.fonts.cyri.scale(13)) + .color(TEXT_COLOR) + .set(state.ids.title_main, ui); + Image::new(self.imgs.wep_ico) + .middle_of(state.ids.output_img_frame) + .color(Some(bg_col)) + .w_h(70.0, 70.0) + .graphics_for(state.ids.output_img) + .set(state.ids.modular_wep_empty_bg, ui); } }, _ => { diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index d346b38682..161d5dde9b 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -124,7 +124,10 @@ image_ids! { icon_weapon: "voxygen.element.ui.crafting.icons.weapons", icon_bag: "voxygen.element.items.item_bag_leather_large", icon_processed_material: "voxygen.element.ui.crafting.icons.processed_material", - + crafting_modular_art: "voxygen.element.ui.crafting.modular_weps_art", + ing_ico_prim: "voxygen.element.ui.crafting.icons.blade", + ing_ico_sec: "voxygen.element.ui.crafting.icons.handle", + wep_ico: "voxygen.element.ui.bag.backgrounds.mainhand", // Group Window member_frame: "voxygen.element.ui.groups.group_member_frame", member_bg: "voxygen.element.ui.groups.group_member_bg",