diff --git a/assets/voxygen b/assets/voxygen index 0a176c4089..25346c1ead 160000 --- a/assets/voxygen +++ b/assets/voxygen @@ -1 +1 @@ -Subproject commit 0a176c408946f081850132623a6730d9d2b1e7ed +Subproject commit 25346c1ead7d03b11f7f4403332f2288824c6ca9 diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 8b9915cc6a..e394484fbb 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -6,7 +6,10 @@ use crate::{ window::{Event as WinEvent, Key, Window}, GlobalState, }; -use common::assets; +use common::{ + assets, + figure::Segment}; + use conrod_core::{ color, image::Id as ImgId, @@ -21,13 +24,11 @@ widget_ids! { bag_space_add, inventorytest_button, inventorytest_button_label, - - // Debug + //Debug debug_bg, debug_button, debug_button_label, fps_counter, - // Logo v_logo, @@ -41,6 +42,19 @@ widget_ids! { inv_scrollbar, inv_slot_0, inv_slot[], + + // Buttons + settings_button, + social_button, + map_button, + spellbook_button, + character_button, + qlog_button, + social_button_bg, + spellbook_button_bg, + character_button_bg, + qlog_button_bg, + bag_text, //help help, help_bg, @@ -55,13 +69,6 @@ widget_ids! { //Mini-Map mmap_frame, mmap_frame_bg, - mmap_button_0, - mmap_button_1, - mmap_button_2, - mmap_button_3, - mmap_button_4, - mmap_button_5, - mmap_icons, mmap_location, //Action-Bar xp_bar, @@ -114,6 +121,8 @@ widget_ids! { map_icon, map_close, map_title, + map_frame_l, + map_frame_r, //3 Spellbook spellbook_frame, spellbook_bg, @@ -150,9 +159,6 @@ widget_ids! { // TODO: make macro to mimic widget_ids! for images ids or find another solution to simplify addition of new images. pub(self) struct Imgs { - //Missing: ActionBar, Health/Mana/Energy Bar & Char Window BG/Frame - //Logo - //v_logo: ImgId, // Bag bag: ImgId, bag_hover: ImgId, @@ -164,6 +170,31 @@ pub(self) struct Imgs { inv_grid: ImgId, inv_slot: ImgId, + // Buttons + settings: ImgId, + settings_hover: ImgId, + settings_press: ImgId, + + social_button: ImgId, + social_hover: ImgId, + social_press: ImgId, + + map_button: ImgId, + map_hover: ImgId, + map_press: ImgId, + + spellbook_button: ImgId, + spellbook_hover: ImgId, + spellbook_press: ImgId, + + character_button: ImgId, + character_hover: ImgId, + character_press: ImgId, + + qlog_button: ImgId, + qlog_hover: ImgId, + qlog_press: ImgId, + // Close button close_button: ImgId, close_button_hover: ImgId, @@ -179,13 +210,6 @@ pub(self) struct Imgs { // MiniMap mmap_frame: ImgId, mmap_frame_bg: ImgId, - mmap_icons: ImgId, - - // Settings at Mini-Map - mmap_button: ImgId, - mmap_button_hover: ImgId, - mmap_button_press: ImgId, - mmap_button_open: ImgId, // SkillBar Module sb_grid: ImgId, @@ -226,7 +250,8 @@ pub(self) struct Imgs { // Map-Window map_bg: ImgId, map_icon: ImgId, - map_frame: ImgId, + map_frame_l: ImgId, + map_frame_r: ImgId, // Spell Book Window spellbook_bg: ImgId, spellbook_icon: ImgId, @@ -239,142 +264,166 @@ pub(self) struct Imgs { progress_frame: ImgId, progress: ImgId, + // Buttons + mmap_button: ImgId, + mmap_button_hover: ImgId, + mmap_button_press: ImgId, + mmap_button_open: ImgId, + // Quest-Log Window questlog_bg: ImgId, questlog_icon: ImgId, //help - //help: ImgId, // Chat-Arrow chat_arrow: ImgId, chat_arrow_mo: ImgId, chat_arrow_press: ImgId, - chat_arrow_up: ImgId, - chat_arrow_up_mo: ImgId, - chat_arrow_up_press: ImgId, - chat_arrow_down: ImgId, - chat_arrow_down_mo: ImgId, - chat_arrow_down_press: ImgId, } impl Imgs { fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs { - let load = |filename, ui: &mut Ui| { + let mut load_img = |filename, ui: &mut Ui| { let fullpath: String = ["/voxygen/", filename].concat(); let image = image::load_from_memory( assets::load(fullpath.as_str()) - .expect("Error loading file") + .expect("Error loading Main UI Image") .as_slice(), ) .unwrap(); ui.new_graphic(ui::Graphic::Image(image)) }; - Imgs { + let mut load_vox = |filename, ui: &mut Ui| { + let fullpath: String = ["/voxygen/", filename].concat(); + let dot_vox = dot_vox::load_bytes( + assets::load(fullpath.as_str()) + .expect("Error loading Main UI .vox") + .as_slice(), + ) + .unwrap(); + ui.new_graphic(ui::Graphic::Voxel(Segment::from(dot_vox))) + }; + Imgs { // Bag - bag: load("element/buttons/bag/closed.png", ui), - bag_hover: load("element/buttons/bag/closed_hover.png", ui), - bag_press: load("element/buttons/bag/closed_press.png", ui), - bag_open: load("element/buttons/bag/open.png", ui), - bag_open_hover: load("element/buttons/bag/open_hover.png", ui), - bag_open_press: load("element/buttons/bag/open_press.png", ui), - bag_contents: load("element/frames/bag.png", ui), - inv_grid: load("element/frames/inv_grid.png", ui), - inv_slot: load("element/buttons/inv_slot.png", ui), + bag: load_img("element/buttons/bag/closed.png", ui), + bag_hover: load_img("element/buttons/bag/closed_hover.png", ui), + bag_press: load_img("element/buttons/bag/closed_press.png", ui), + bag_open: load_img("element/buttons/bag/open.png", ui), + bag_open_hover: load_img("element/buttons/bag/open_hover.png", ui), + bag_open_press: load_img("element/buttons/bag/open_press.png", ui), + bag_contents: load_vox("element/frames/bag.vox", ui), + inv_grid: load_vox("element/frames/inv_grid.vox", ui), + inv_slot: load_vox("element/buttons/inv_slot.vox", ui), + + // Buttons + + settings: load_vox("element/buttons/settings.vox", ui), + settings_hover: load_vox("element/buttons/settings_hover.vox", ui), + settings_press: load_vox("element/buttons/settings_press.vox", ui), + + social_button: load_vox("element/buttons/social.vox", ui), + social_hover: load_vox("element/buttons/social_hover.vox", ui), + social_press: load_vox("element/buttons/social_press.vox", ui), + + map_button: load_vox("element/buttons/map.vox", ui), + map_hover: load_vox("element/buttons/map_hover.vox", ui), + map_press: load_vox("element/buttons/map_press.vox", ui), + + spellbook_button: load_vox("element/buttons/spellbook.vox", ui), + spellbook_hover: load_vox("element/buttons/spellbook_hover.vox", ui), + spellbook_press: load_vox("element/buttons/spellbook_press.vox", ui), + + character_button: load_vox("element/buttons/character.vox", ui), + character_hover: load_vox("element/buttons/character_hover.vox", ui), + character_press: load_vox("element/buttons/character_press.vox", ui), + + qlog_button: load_vox("element/buttons/qlog.vox", ui), + qlog_hover: load_vox("element/buttons/qlog_hover.vox", ui), + qlog_press: load_vox("element/buttons/qlog_press.vox", ui), + + mmap_button: load_img("element/buttons/border.png", ui), + mmap_button_hover: load_img("element/buttons/border_mo.png", ui), + mmap_button_press: load_img("element/buttons/border_press.png", ui), + mmap_button_open: load_img("element/buttons/border_pressed.png", ui), // Close button - close_button: load("element/buttons/x.png", ui), - close_button_hover: load("element/buttons/x_hover.png", ui), - close_button_press: load("element/buttons/x_press.png", ui), + close_button: load_vox("element/buttons/x.vox", ui), + close_button_hover: load_vox("element/buttons/x_hover.vox", ui), + close_button_press: load_vox("element/buttons/x_press.vox", ui), // Esc-Menu - esc_bg: load("element/frames/menu.png", ui), - fireplace: load("element/misc_backgrounds/fireplace.png", ui), - button_dark: load("element/buttons/button_dark.png", ui), - button_dark_hover: load("element/buttons/button_dark_hover.png", ui), - button_dark_press: load("element/buttons/button_dark_press.png", ui), + esc_bg: load_img("element/frames/menu.png", ui), + fireplace: load_vox("element/misc_bg/fireplace.vox", ui), + button_dark: load_vox("element/buttons/button_dark.vox", ui), + button_dark_hover: load_img("element/buttons/button_dark_hover.png", ui), + button_dark_press: load_img("element/buttons/button_dark_press.png", ui), // MiniMap - mmap_frame: load("element/frames/mmap.png", ui), - mmap_frame_bg: load("element/misc_backgrounds/mmap_bg.png", ui), - mmap_icons: load("element/buttons/mmap_icons.png", ui), + mmap_frame: load_vox("element/frames/mmap.vox", ui), + mmap_frame_bg: load_img("element/misc_bg/mmap_bg.png", ui), - // Settings at Mini-Map - mmap_button: load("element/buttons/border.png", ui), - mmap_button_hover: load("element/buttons/border_mo.png", ui), - mmap_button_press: load("element/buttons/border_press.png", ui), - mmap_button_open: load("element/buttons/border_pressed.png", ui), // Skillbar Module - sb_grid: load("element/skill_bar/sbar_grid.png", ui), - sb_grid_bg: load("element/skill_bar/sbar_grid_bg.png", ui), - l_click: load("element/skill_bar/l.png", ui), - r_click: load("element/skill_bar/r.png", ui), - mana_bar: load("element/skill_bar/mana_bar.png", ui), - health_bar: load("element/skill_bar/health_bar.png", ui), - xp_bar: load("element/skill_bar/xp_bar.png", ui), + sb_grid: load_img("element/skill_bar/sbar_grid.png", ui), + sb_grid_bg: load_img("element/skill_bar/sbar_grid_bg.png", ui), + l_click: load_img("element/skill_bar/l.png", ui), + r_click: load_img("element/skill_bar/r.png", ui), + mana_bar: load_img("element/skill_bar/mana_bar.png", ui), + health_bar: load_img("element/skill_bar/health_bar.png", ui), + xp_bar: load_img("element/skill_bar/xp_bar.png", ui), - //Buff Frame(s) - //buff_frame: load("element/skill_bar/buff_frame.png", ui), - //buff_frame_bg: load("element/skill_bar/buff_frame_bg.png", ui), - //buff_frame_red: load("element/skill_bar/buff_frame_red.png", ui), - //buff_frame_green: load("element/skill_bar/buff_frame_green.png", ui), + // Missing: Buff Frame Animation (.gif ?!) (we could do animation in ui.maintain(), or in shader?) + window_frame: load_vox("element/frames/window2.vox", ui), + window_frame_2: load_img("element/frames/window_2.png", ui), - //Missing: Buff Frame Animation (.gif ?!) (we could do animation in ui.maintain(), or in shader?) - window_frame: load("element/frames/window.png", ui), - window_frame_2: load("element/frames/window_2.png", ui), - - //Settings Window - settings_bg: load("element/frames/settings.png", ui), - settings_icon: load("element/icons/settings.png", ui), - settings_button_mo: load("element/buttons/blue_mo.png", ui), - check: load("element/buttons/check/no.png", ui), - check_mo: load("element/buttons/check/no_mo.png", ui), - check_press: load("element/buttons/check/press.png", ui), - check_checked: load("element/buttons/check/yes.png", ui), - check_checked_mo: load("element/buttons/check/yes_mo.png", ui), - slider: load("element/slider/track.png", ui), - slider_indicator: load("element/slider/indicator.png", ui), - button_blank: ui.new_graphic(ui::Graphic::Blank), - button_blue_mo: load("element/buttons/blue_mo.png", ui), - button_blue_press: load("element/buttons/blue_press.png", ui), + // Settings Window + settings_bg: load_img("element/frames/settings.png", ui), + settings_icon: load_img("element/icons/settings.png", ui), + settings_button_mo: load_img("element/buttons/blue_mo.png", ui), + check: load_img("element/buttons/check/no.png", ui), + check_mo: load_img("element/buttons/check/no_mo.png", ui), + check_press: load_img("element/buttons/check/press.png", ui), + check_checked: load_img("element/buttons/check/yes.png", ui), + check_checked_mo: load_img("element/buttons/check/yes_mo.png", ui), + slider: load_img("element/slider/track.png", ui), + slider_indicator: load_img("element/slider/indicator.png", ui), + button_blank: ui.new_graphic(ui::Graphic::Blank), + button_blue_mo: load_img("element/buttons/blue_mo.png", ui), + button_blue_press: load_img("element/buttons/blue_press.png", ui), // Window BG - window_bg: load("element/misc_backgrounds/window_bg.png", ui), + window_bg: load_img("element/misc_bg/window_bg.png", ui), - //Social Window - social_bg: load("element/misc_backgrounds/small_bg.png", ui), - social_icon: load("element/icons/social.png", ui), + // Social Window + social_bg: load_img("element/misc_bg/small_bg.png", ui), + social_icon: load_img("element/icons/social.png", ui), - //Map Window - map_bg: load("element/misc_backgrounds/small_bg.png", ui), - map_icon: load("element/icons/map.png", ui), - map_frame: load("element/frames/window_map.png", ui), + // Map Window + map_bg: load_img("element/misc_bg/small_bg.png", ui), + map_icon: load_img("element/icons/map.png", ui), + map_frame_l: load_vox("element/frames/map_l.vox", ui), + map_frame_r: load_vox("element/frames/map_r.vox", ui), // Spell Book Window - spellbook_bg: load("element/misc_backgrounds/small_bg.png", ui), - spellbook_icon: load("element/icons/spellbook.png", ui), + spellbook_bg: load_img("element/misc_bg/small_bg.png", ui), + spellbook_icon: load_img("element/icons/spellbook.png", ui), - //Char Window - charwindow: load("element/misc_backgrounds/charwindow.png", ui), - charwindow_icon: load("element/icons/charwindow.png", ui), - charwindow_tab_bg: load("element/frames/tab.png", ui), - charwindow_tab: load("element/buttons/tab.png", ui), - charwindow_expbar: load("element/misc_backgrounds/small_bg.png", ui), - progress_frame: load("element/frames/progress_bar.png", ui), - progress: load("element/misc_backgrounds/progress.png", ui), + // Char Window + charwindow: load_img("element/misc_bg/charwindow.png", ui), + charwindow_icon: load_img("element/icons/charwindow.png", ui), + charwindow_tab_bg: load_img("element/frames/tab.png", ui), + charwindow_tab: load_img("element/buttons/tab.png", ui), + charwindow_expbar: load_img("element/misc_bg/small_bg.png", ui), + progress_frame: load_img("element/frames/progress_bar.png", ui), + progress: load_img("element/misc_bg/progress.png", ui), - //Quest-Log Window - questlog_bg: load("element/misc_backgrounds/small_bg.png", ui), - questlog_icon: load("element/icons/questlog.png", ui), + // Quest-Log Window + questlog_bg: load_img("element/misc_bg/small_bg.png", ui), + questlog_icon: load_img("element/icons/questlog.png", ui), // Chat-Arrows - chat_arrow: load("element/buttons/arrow/chat_arrow.png", ui), - chat_arrow_mo: load("element/buttons/arrow/chat_arrow_mo.png", ui), - chat_arrow_press: load("element/buttons/arrow/chat_arrow_press.png", ui), - chat_arrow_up: load("element/buttons/arrow/chat_arrow_up.png", ui), - chat_arrow_up_mo: load("element/buttons/arrow/chat_arrow_up_mo.png", ui), - chat_arrow_up_press: load("element/buttons/arrow/chat_arrow_up_press.png", ui), - chat_arrow_down: load("element/buttons/arrow/chat_arrow_down.png", ui), - chat_arrow_down_mo: load("element/buttons/arrow/chat_arrow_down_mo.png", ui), - chat_arrow_down_press: load("element/buttons/arrow/chat_arrow_down_press.png", ui), + chat_arrow: load_img("element/buttons/arrow/chat_arrow.png", ui), + chat_arrow_mo: load_img("element/buttons/arrow/chat_arrow_mo.png", ui), + chat_arrow_press: load_img("element/buttons/arrow/chat_arrow_press.png", ui), + } } } @@ -527,6 +576,7 @@ impl Hud { self.inventory_space = self.inventory_space + 1; }; } + // Chat box if let Some(msg) = self .chat @@ -534,17 +584,19 @@ impl Hud { { events.push(Event::SendMessage(msg)); } + // Alpha Version Text::new(version) .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) .font_size(14) .color(TEXT_COLOR) .set(self.ids.v_logo, ui_widgets); + // Help Text if self.show_help { Image::new(self.imgs.window_frame_2) .top_left_with_margins_on(ui_widgets.window, 3.0, 3.0) - .w_h(300.0, 350.0) + .w_h(300.0, 190.0) .set(self.ids.help_bg, ui_widgets); Text::new( @@ -555,24 +607,17 @@ impl Hud { F2 = Toggle Interface \n\ \n\ Enter = Open Chat \n\ - Mouse Wheel = Scroll Chat\n\ - \n\ - M = Map \n\ - B = Bag \n\ - L = Quest-Log \n\ - C = Character Window \n\ - O = Social \n\ - P = Spellbook \n\ - N = Settings", + Mouse Wheel = Scroll Chat" ) - .color(TEXT_COLOR) - .top_left_with_margins_on(self.ids.help_bg, 20.0, 20.0) - .font_id(self.font_opensans) - .font_size(18) - .set(self.ids.help, ui_widgets); + .color(TEXT_COLOR) + .top_left_with_margins_on(self.ids.help_bg, 20.0, 20.0) + .font_id(self.font_opensans) + .font_size(18) + .set(self.ids.help, ui_widgets); + // X-button if Button::image(self.imgs.close_button) - .w_h(244.0 * 0.22 / 3.0, 244.0 * 0.22 / 3.0) + .w_h(100.0 * 0.2, 100.0 * 0.2) .hover_image(self.imgs.close_button_hover) .press_image(self.imgs.close_button_press) .top_right_with_margins_on(self.ids.help_bg, 8.0, 3.0) @@ -586,19 +631,14 @@ impl Hud { // Minimap frame and bg Image::new(self.imgs.mmap_frame_bg) .w_h(1750.0 / 8.0, 1650.0 / 8.0) - .top_right_with_margins_on(ui_widgets.window, 5.0, 30.0) + .top_right_with_margins_on(ui_widgets.window, 5.0, 5.0) .set(self.ids.mmap_frame_bg, ui_widgets); Image::new(self.imgs.mmap_frame) .w_h(1750.0 / 8.0, 1650.0 / 8.0) - .top_right_with_margins_on(ui_widgets.window, 5.0, 30.0) + .top_right_with_margins_on(ui_widgets.window, 5.0, 5.0) .set(self.ids.mmap_frame, ui_widgets); - Image::new(self.imgs.mmap_icons) - .w_h(448.0 / 14.93, 2688.0 / 14.93) - .right_from(self.ids.mmap_frame, 0.0) - .align_bottom_of(self.ids.mmap_frame) - .set(self.ids.mmap_icons, ui_widgets); // Title // Make it display the actual location Text::new("Uncanny Valley") @@ -607,15 +647,20 @@ impl Hud { .color(TEXT_COLOR) .set(self.ids.mmap_location, ui_widgets); - // Minimap Buttons + // Buttons at Bag - //0 Settings - if Button::image(self.imgs.mmap_button) - .w_h(448.0 / 15.0, 448.0 / 15.0) - .top_right_with_margins_on(self.ids.mmap_icons, 0.0, 0.0) - .hover_image(self.imgs.mmap_button_hover) - .press_image(self.imgs.mmap_button_press) - .set(self.ids.mmap_button_0, ui_widgets) + // 0 Settings + if Button::image(self.imgs.settings) + .w_h(29.0, 25.0) + .bottom_right_with_margins_on(ui_widgets.window, 5.0, 57.0) + .hover_image(self.imgs.settings_hover) + .press_image(self.imgs.settings_press) + .label("N") + .label_font_size(10) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(-7.0)) + .label_x(conrod_core::position::Relative::Scalar(10.0)) + .set(self.ids.settings_button, ui_widgets) .was_clicked() { self.open_windows = match self.open_windows { @@ -624,34 +669,61 @@ impl Hud { }; self.bag_open = false; }; + // 2 Map - if Button::image(self.imgs.mmap_button) - .w_h(448.0 / 15.0, 448.0 / 15.0) - .down_from(self.ids.mmap_button_1, 0.0) - .hover_image(self.imgs.mmap_button_hover) - .press_image(self.imgs.mmap_button_press) - .set(self.ids.mmap_button_2, ui_widgets) + if Button::image(self.imgs.map_button) + .w_h(22.0, 25.0) + .left_from(self.ids.social_button, 10.0) + .hover_image(self.imgs.map_hover) + .press_image(self.imgs.map_press) + .label("M") + .label_font_size(10) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(-7.0)) + .label_x(conrod_core::position::Relative::Scalar(10.0)) + .set(self.ids.map_button, ui_widgets) .was_clicked() { self.map_open = !self.map_open; self.bag_open = false; }; - // Other Windows can only be accessed, when Settings are closed. Opening Settings will close all other Windows including the Bag. + // Other Windows can only be accessed, when Settings are closed. + // Opening Settings will close all other Windows including the Bag. // Opening the Map won't close the windows displayed before. + Image::new(self.imgs.social_button) + .w_h(25.0, 25.0) + .left_from(self.ids.settings_button, 10.0) + .set(self.ids.social_button_bg, ui_widgets); + Image::new(self.imgs.spellbook_button) + .w_h(28.0, 25.0) + .left_from(self.ids.map_button, 10.0) + .set(self.ids.spellbook_button_bg, ui_widgets); + Image::new(self.imgs.character_button) + .w_h(27.0, 25.0) + .left_from(self.ids.spellbook_button, 10.0) + .set(self.ids.character_button_bg, ui_widgets); + Image::new(self.imgs.qlog_button) + .w_h(23.0, 25.0) + .left_from(self.ids.character_button, 10.0) + .set(self.ids.qlog_button_bg, ui_widgets); if match self.open_windows { Windows::Settings => false, _ => true, - } && self.map_open == false - { - //1 Social - if Button::image(self.imgs.mmap_button) - .w_h(448.0 / 15.0, 448.0 / 15.0) - .down_from(self.ids.mmap_button_0, 0.0) - .hover_image(self.imgs.mmap_button_hover) - .press_image(self.imgs.mmap_button_press) - .set(self.ids.mmap_button_1, ui_widgets) + } && self.map_open == false { + // 1 Social + if Button::image(self.imgs.social_button) + .w_h(25.0, 25.0) + .left_from(self.ids.settings_button, 10.0) + .hover_image(self.imgs.social_hover) + .press_image(self.imgs.social_press) + .label("O") + .label_font_size(10) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(-7.0)) + .label_x(conrod_core::position::Relative::Scalar(10.0)) + .set(self.ids.social_button, ui_widgets) .was_clicked() { self.open_windows = match self.open_windows { @@ -665,13 +737,18 @@ impl Hud { }; } - //3 Spellbook - if Button::image(self.imgs.mmap_button) - .w_h(448.0 / 15.0, 448.0 / 15.0) - .down_from(self.ids.mmap_button_2, 0.0) - .hover_image(self.imgs.mmap_button_hover) - .press_image(self.imgs.mmap_button_press) - .set(self.ids.mmap_button_3, ui_widgets) + // 3 Spellbook + if Button::image(self.imgs.spellbook_button) + .w_h(28.0, 25.0) + .left_from(self.ids.map_button, 10.0) + .hover_image(self.imgs.spellbook_hover) + .press_image(self.imgs.spellbook_press) + .label("P") + .label_font_size(10) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(-7.0)) + .label_x(conrod_core::position::Relative::Scalar(10.0)) + .set(self.ids.spellbook_button, ui_widgets) .was_clicked() { self.open_windows = match self.open_windows { @@ -684,13 +761,19 @@ impl Hud { Windows::Settings => Windows::Settings, }; } - //4 Char-Window - if Button::image(self.imgs.mmap_button) - .w_h(448.0 / 15.0, 448.0 / 15.0) - .down_from(self.ids.mmap_button_3, 0.0) - .hover_image(self.imgs.mmap_button_hover) - .press_image(self.imgs.mmap_button_press) - .set(self.ids.mmap_button_4, ui_widgets) + + // 4 Char-Window + if Button::image(self.imgs.character_button) + .w_h(27.0, 25.0) + .left_from(self.ids.spellbook_button, 10.0) + .hover_image(self.imgs.character_hover) + .press_image(self.imgs.character_press) + .label("C") + .label_font_size(10) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(-7.0)) + .label_x(conrod_core::position::Relative::Scalar(10.0)) + .set(self.ids.character_button, ui_widgets) .was_clicked() { self.open_windows = match self.open_windows { @@ -703,15 +786,21 @@ impl Hud { Windows::Settings => Windows::Settings, } } - //5 Quest-Log - if Button::image(self.imgs.mmap_button) - .w_h(448.0 / 15.0, 448.0 / 15.0) - .down_from(self.ids.mmap_button_4, 0.0) - .hover_image(self.imgs.mmap_button_hover) - .press_image(self.imgs.mmap_button_press) - .set(self.ids.mmap_button_5, ui_widgets) - .was_clicked() - { + + // 5 Quest-Log + if Button::image(self.imgs.qlog_button) + .w_h(23.0, 25.0) + .left_from(self.ids.character_button, 10.0) + .hover_image(self.imgs.qlog_hover) + .press_image(self.imgs.qlog_press) + .label("L") + .label_font_size(10) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(-7.0)) + .label_x(conrod_core::position::Relative::Scalar(10.0)) + .set(self.ids.qlog_button, ui_widgets) + .was_clicked() + { self.open_windows = match self.open_windows { Windows::Small(Small::Questlog) => Windows::None, Windows::None | Windows::Small(_) => Windows::Small(Small::Questlog), @@ -724,6 +813,7 @@ impl Hud { } } + // Skillbar Module // Experience-Bar @@ -862,40 +952,33 @@ impl Hud { .w_h(40.0, 40.0) .set(self.ids.inv_slot_0, ui_widgets); } - // if self.ids.inv_slot.len() < self.inventory_space { - // self.ids.inv_slot.resize(self.inventory_space, &mut ui_widgets.widget_id_generator()); - //} - //let num = self.ids.inv_slot.len(); - //println!("self.ids.inv_slot.len(): {:?}", num); - //if num > 0 { - //Button::image(self.imgs.inv_slot) - //.top_left_with_margins_on(self.ids.inv_grid, 5.0, 5.0) - //.w_h(40.0, 40.0) - //.set(self.ids.inv_slot[0], ui_widgets); - //} - //for i in 1..5 { - //Button::image(self.imgs.inv_slot) - //.right(10.0) - //.label(&format!("{}", i + 1)) - //.label_color(TEXT_COLOR) - //.label_font_size(5) - //.set(self.ids.inv_slot[i], ui_widgets);} } // Bag - if !self.map_open { + if !self.map_open && self.show_ui { self.bag_open = ToggleButton::new(self.bag_open, self.imgs.bag, self.imgs.bag_open) .bottom_right_with_margins_on(ui_widgets.window, 5.0, 5.0) .hover_images(self.imgs.bag_hover, self.imgs.bag_open_hover) .press_images(self.imgs.bag_press, self.imgs.bag_open_press) - .w_h(420.0 / 6.0, 480.0 / 6.0) + .w_h(420.0 / 10.0, 480.0 / 10.0) .set(self.ids.bag, ui_widgets); + Text::new("B") + .bottom_right_with_margins_on(self.ids.bag, 0.0, 0.0) + .font_size(10) + .color(TEXT_COLOR) + .set(self.ids.bag_text, ui_widgets); } else { Image::new(self.imgs.bag) .bottom_right_with_margins_on(ui_widgets.window, 5.0, 5.0) - .w_h(420.0 / 6.0, 480.0 / 6.0) + .w_h(420.0 / 10.0, 480.0 / 10.0) .set(self.ids.bag_map_open, ui_widgets); + Text::new("B") + .bottom_right_with_margins_on(self.ids.bag, 0.0, 0.0) + .font_size(10) + .color(TEXT_COLOR) + .set(self.ids.bag_text, ui_widgets); + } //Windows @@ -903,15 +986,15 @@ impl Hud { //Char Window will always appear at the left side. Other Windows either appear at the left side, //or when the Char Window is opened they will appear right from it. - //0 Settings + // 0 Settings if let Windows::Settings = self.open_windows { - //BG + // BG Image::new(self.imgs.settings_bg) .middle_of(ui_widgets.window) .w_h(1648.0 / 2.5, 1952.0 / 2.5) .set(self.ids.settings_bg, ui_widgets); - //X-Button + // X-Button if Button::image(self.imgs.close_button) .w_h(244.0 * 0.22 / 2.5, 244.0 * 0.22 / 2.5) .hover_image(self.imgs.close_button_hover) @@ -941,7 +1024,7 @@ impl Hud { .top_left_with_margins_on(self.ids.settings_bg, 77.0, 205.0) .set(self.ids.rectangle, ui_widgets); - //1 Interface//////////////////////////// + // 1 Interface//////////////////////////// if Button::image(if let SettingsTab::Interface = self.settings_tab { self.imgs.button_blue_mo } else { @@ -959,7 +1042,7 @@ impl Hud { { self.settings_tab = SettingsTab::Interface; } - //Toggle Help + // Toggle Help if let SettingsTab::Interface = self.settings_tab { self.show_help = ToggleButton::new(self.show_help, self.imgs.check, self.imgs.check_checked) @@ -981,11 +1064,12 @@ impl Hud { self.imgs.check, self.imgs.check_checked, ) - .w_h(288.0 / 24.0, 288.0 / 24.0) - .top_left_with_margins_on(self.ids.rectangle, 40.0, 15.0) - .hover_images(self.imgs.check_checked_mo, self.imgs.check_mo) - .press_images(self.imgs.check_press, self.imgs.check_press) - .set(self.ids.inventorytest_button, ui_widgets); + .w_h(288.0 / 24.0, 288.0 / 24.0) + .top_left_with_margins_on(self.ids.rectangle, 40.0, 15.0) + .hover_images(self.imgs.check_checked_mo, self.imgs.check_mo) + .press_images(self.imgs.check_press, self.imgs.check_press) + .set(self.ids.inventorytest_button, ui_widgets); + Text::new("Show Inventory Test Button") .right_from(self.ids.inventorytest_button, 10.0) .font_size(12) @@ -994,13 +1078,17 @@ impl Hud { .color(TEXT_COLOR) .set(self.ids.inventorytest_button_label, ui_widgets); - self.show_debug = - ToggleButton::new(self.show_debug, self.imgs.check, self.imgs.check_checked) - .w_h(288.0 / 24.0, 288.0 / 24.0) - .top_left_with_margins_on(self.ids.rectangle, 65.0, 15.0) - .hover_images(self.imgs.check_checked_mo, self.imgs.check_mo) - .press_images(self.imgs.check_press, self.imgs.check_press) - .set(self.ids.debug_button, ui_widgets); + self.show_debug = ToggleButton::new( + self.show_debug, + self.imgs.check, + self.imgs.check_checked + ) + .w_h(288.0 / 24.0, 288.0 / 24.0) + .top_left_with_margins_on(self.ids.rectangle, 65.0, 15.0) + .hover_images(self.imgs.check_checked_mo, self.imgs.check_mo) + .press_images(self.imgs.check_press, self.imgs.check_press) + .set(self.ids.debug_button, ui_widgets); + Text::new("Show Debug Window") .right_from(self.ids.debug_button, 10.0) .font_size(12) @@ -1010,82 +1098,88 @@ impl Hud { .set(self.ids.debug_button_label, ui_widgets); } - //2 Gameplay//////////////// + + // 2 Gameplay//////////////// if Button::image(if let SettingsTab::Gameplay = self.settings_tab { - self.imgs.button_blue_mo - } else { - self.imgs.button_blank - }) - .w_h(304.0 / 2.5, 80.0 / 2.5) - .hover_image(self.imgs.button_blue_mo) - .press_image(self.imgs.button_blue_press) - .down_from(self.ids.interface, 1.0) - .label("Gameplay") - .label_font_size(14) - .label_color(TEXT_COLOR) - .set(self.ids.gameplay, ui_widgets) - .was_clicked() + self.imgs.button_blue_mo + } else { + self.imgs.button_blank + } + ) + .w_h(304.0 / 2.5, 80.0 / 2.5) + .hover_image(self.imgs.button_blue_mo) + .press_image(self.imgs.button_blue_press) + .down_from(self.ids.interface, 1.0) + .label("Gameplay") + .label_font_size(14) + .label_color(TEXT_COLOR) + .set(self.ids.gameplay, ui_widgets) + .was_clicked() { self.settings_tab = SettingsTab::Gameplay; } - //3 Controls///////////////////// + // 3 Controls///////////////////// if Button::image(if let SettingsTab::Controls = self.settings_tab { - self.imgs.button_blue_mo - } else { - self.imgs.button_blank - }) - .w_h(304.0 / 2.5, 80.0 / 2.5) - .hover_image(self.imgs.button_blue_mo) - .press_image(self.imgs.button_blue_press) - .down_from(self.ids.gameplay, 1.0) - .label("Controls") - .label_font_size(14) - .label_color(TEXT_COLOR) - .set(self.ids.controls, ui_widgets) - .was_clicked() + self.imgs.button_blue_mo + } else { + self.imgs.button_blank + } + ) + .w_h(304.0 / 2.5, 80.0 / 2.5) + .hover_image(self.imgs.button_blue_mo) + .press_image(self.imgs.button_blue_press) + .down_from(self.ids.gameplay, 1.0) + .label("Controls") + .label_font_size(14) + .label_color(TEXT_COLOR) + .set(self.ids.controls, ui_widgets) + .was_clicked() { self.settings_tab = SettingsTab::Controls; } - //4 Video//////////////////////////////// + // 4 Video//////////////////////////////// if Button::image(if let SettingsTab::Video = self.settings_tab { - self.imgs.button_blue_mo - } else { - self.imgs.button_blank - }) - .w_h(304.0 / 2.5, 80.0 / 2.5) - .hover_image(self.imgs.button_blue_mo) - .press_image(self.imgs.button_blue_press) - .down_from(self.ids.controls, 1.0) - .label("Video") - .label_font_size(14) - .label_color(TEXT_COLOR) - .set(self.ids.video, ui_widgets) - .was_clicked() + self.imgs.button_blue_mo + } else { + self.imgs.button_blank + } + ) + .w_h(304.0 / 2.5, 80.0 / 2.5) + .hover_image(self.imgs.button_blue_mo) + .press_image(self.imgs.button_blue_press) + .down_from(self.ids.controls, 1.0) + .label("Video") + .label_font_size(14) + .label_color(TEXT_COLOR) + .set(self.ids.video, ui_widgets) + .was_clicked() { self.settings_tab = SettingsTab::Video; } - //5 Sound/////////////////////////////// + // 5 Sound/////////////////////////////// if Button::image(if let SettingsTab::Sound = self.settings_tab { - self.imgs.button_blue_mo - } else { - self.imgs.button_blank - }) - .w_h(304.0 / 2.5, 80.0 / 2.5) - .hover_image(self.imgs.button_blue_mo) - .press_image(self.imgs.button_blue_press) - .down_from(self.ids.video, 1.0) - .label("Sound") - .label_font_size(14) - .label_color(TEXT_COLOR) - .set(self.ids.sound, ui_widgets) - .was_clicked() + self.imgs.button_blue_mo + } else { + self.imgs.button_blank + } + ) + .w_h(304.0 / 2.5, 80.0 / 2.5) + .hover_image(self.imgs.button_blue_mo) + .press_image(self.imgs.button_blue_press) + .down_from(self.ids.video, 1.0) + .label("Sound") + .label_font_size(14) + .label_color(TEXT_COLOR) + .set(self.ids.sound, ui_widgets) + .was_clicked() { self.settings_tab = SettingsTab::Sound; } } + if let Some((small, char_window_open)) = match self.open_windows { Windows::Small(small) => Some((small, false)), Windows::CharacterAnd(Some(small)) => Some((small, true)), @@ -1098,33 +1192,35 @@ impl Hud { if char_window_open { Image::new(self.imgs.window_frame) .right_from(self.ids.charwindow_frame, 20.0) - .w_h(1648.0 / 4.0, 1952.0 / 4.0) + .w_h(107.0*4.0, 125.0*4.0) .set(self.ids.social_frame, ui_widgets); } else { Image::new(self.imgs.window_frame) - .top_left_with_margins_on(ui_widgets.window, 200.0, 90.0) + .top_left_with_margins_on(ui_widgets.window, 200.0, 10.0) .w_h(1648.0 / 4.0, 1952.0 / 4.0) .set(self.ids.social_frame, ui_widgets); } - //BG - Image::new(self.imgs.social_bg) - .w_h(1648.0 / 4.0, 1952.0 / 4.0) - .middle_of(self.ids.social_frame) - .set(self.ids.social_bg, ui_widgets); - - //Icon + // Icon Image::new(self.imgs.social_icon) - .w_h(224.0 / 3.0, 224.0 / 3.0) - .top_left_with_margins_on(self.ids.social_frame, -10.0, -10.0) + .w_h(40.0, 40.0) + .top_left_with_margins_on(self.ids.social_frame, 4.0, 4.0) .set(self.ids.social_icon, ui_widgets); - //X-Button + // Content alignment + Rectangle::fill_with([362.0, 418.0], color::TRANSPARENT) + .bottom_right_with_margins_on(self.ids.social_frame, 17.0, 17.0) + .scroll_kids() + .scroll_kids_vertically() + .set(self.ids.social_bg, ui_widgets); + + + // X-Button if Button::image(self.imgs.close_button) - .w_h(244.0 * 0.22 / 4.0, 244.0 * 0.22 / 4.0) + .w_h(20.0, 20.0) .hover_image(self.imgs.close_button_hover) .press_image(self.imgs.close_button_press) - .top_right_with_margins_on(self.ids.social_frame, 4.0, 4.0) + .top_right_with_margins_on(self.ids.social_frame, 17.0, 5.0) .set(self.ids.social_close, ui_widgets) .was_clicked() { @@ -1136,12 +1232,14 @@ impl Hud { } // Title Text::new("Social") - .mid_top_with_margin_on(self.ids.social_frame, 7.0) + .mid_top_with_margin_on(self.ids.social_frame, 16.0) + .font_id(self.font_metamorph) + .font_size(14) .color(TEXT_COLOR) .set(self.ids.social_title, ui_widgets); } Small::Spellbook => { - //Frame + // Frame if char_window_open { Image::new(self.imgs.window_frame) .right_from(self.ids.charwindow_frame, 20.0) @@ -1154,19 +1252,19 @@ impl Hud { .set(self.ids.spellbook_frame, ui_widgets); } - //BG + // BG Image::new(self.imgs.spellbook_bg) .w_h(1648.0 / 4.0, 1952.0 / 4.0) .middle_of(self.ids.spellbook_frame) .set(self.ids.spellbook_bg, ui_widgets); - //Icon + // Icon Image::new(self.imgs.spellbook_icon) .w_h(224.0 / 3.0, 224.0 / 3.0) .top_left_with_margins_on(self.ids.spellbook_frame, -10.0, -10.0) .set(self.ids.spellbook_icon, ui_widgets); - //X-Button + // X-Button if Button::image(self.imgs.close_button) .w_h(244.0 * 0.22 / 4.0, 244.0 * 0.22 / 4.0) .hover_image(self.imgs.close_button_hover) @@ -1188,7 +1286,7 @@ impl Hud { .set(self.ids.spellbook_title, ui_widgets); } Small::Questlog => { - //Frame + // Frame if char_window_open { Image::new(self.imgs.window_frame) .right_from(self.ids.charwindow_frame, 20.0) @@ -1201,19 +1299,19 @@ impl Hud { .set(self.ids.questlog_frame, ui_widgets); } - //BG + // BG Image::new(self.imgs.questlog_bg) .w_h(1648.0 / 4.0, 1952.0 / 4.0) .middle_of(self.ids.questlog_frame) .set(self.ids.questlog_bg, ui_widgets); - //Icon + // Icon Image::new(self.imgs.questlog_icon) .w_h(224.0 / 3.0, 224.0 / 3.0) .top_left_with_margins_on(self.ids.questlog_frame, -10.0, -10.0) .set(self.ids.questlog_icon, ui_widgets); - //X-Button + // X-Button if Button::image(self.imgs.close_button) .w_h(244.0 * 0.22 / 4.0, 244.0 * 0.22 / 4.0) .hover_image(self.imgs.close_button_hover) @@ -1256,7 +1354,7 @@ impl Hud { .middle_of(self.ids.charwindow_bg) .set(self.ids.charwindow, ui_widgets); - //Icon + // Icon //Image::new(self.imgs.charwindow_icon) //.w_h(224.0 / 3.0, 224.0 / 3.0) //.top_left_with_margins_on(self.ids.charwindow_frame, -10.0, -10.0) @@ -1337,11 +1435,11 @@ impl Hud { \n\ Intelligence", ) - .top_left_with_margins_on(self.ids.charwindow_rectangle, 100.0, 20.0) - .font_id(self.font_opensans) - .font_size(16) - .color(TEXT_COLOR) - .set(self.ids.charwindow_tab1_statnames, ui_widgets); + .top_left_with_margins_on(self.ids.charwindow_rectangle, 100.0, 20.0) + .font_id(self.font_opensans) + .font_size(16) + .color(TEXT_COLOR) + .set(self.ids.charwindow_tab1_statnames, ui_widgets); Text::new( "1234\n\ @@ -1352,39 +1450,42 @@ impl Hud { \n\ 124124", ) - .right_from(self.ids.charwindow_tab1_statnames, 10.0) - .font_id(self.font_opensans) - .font_size(16) - .color(TEXT_COLOR) - .set(self.ids.charwindow_tab1_stats, ui_widgets); + .right_from(self.ids.charwindow_tab1_statnames, 10.0) + .font_id(self.font_opensans) + .font_size(16) + .color(TEXT_COLOR) + .set(self.ids.charwindow_tab1_stats, ui_widgets); } - //2 Map + // 2 Map if self.map_open { - //Frame - Image::new(self.imgs.map_frame) - .middle_of(ui_widgets.window) - .w_h(5000.0 / 4.0, 3000.0 / 4.0) - .set(self.ids.map_frame, ui_widgets); - - //BG + // BG Image::new(self.imgs.map_bg) - .w_h(5000.0 / 4.0, 3000.0 / 4.0) - .middle_of(self.ids.map_frame) + .w_h(824.0, 488.0) + .middle_of(ui_widgets.window) .set(self.ids.map_bg, ui_widgets); + // Frame + Image::new(self.imgs.map_frame_l) + .top_left_with_margins_on(self.ids.map_bg, 0.0, 0.0) + .w_h(412.0, 488.0) + .set(self.ids.map_frame_l, ui_widgets); + Image::new(self.imgs.map_frame_r) + .top_right_with_margins_on(self.ids.map_bg, 0.0, 0.0) + .w_h(1648.0 / 4.0, 1952.0 / 4.0) + .set(self.ids.map_frame_r, ui_widgets); - //Icon + // Icon Image::new(self.imgs.map_icon) .w_h(224.0 / 3.0, 224.0 / 3.0) .top_left_with_margins_on(self.ids.map_frame, -10.0, -10.0) .set(self.ids.map_icon, ui_widgets); - //X-Button + // X-Button if Button::image(self.imgs.close_button) - .w_h(244.0 * 0.22 / 1.0, 244.0 * 0.22 / 1.0) + .w_h(4.0*2.0, 4.0*2.0) .hover_image(self.imgs.close_button_hover) .press_image(self.imgs.close_button_press) - .top_right_with_margins_on(self.ids.map_frame, 1.0, 1.0) + .top_right_with_margins_on(self.ids.map_frame_r, 1.0, 1.0) .set(self.ids.map_close, ui_widgets) .was_clicked() { @@ -1392,12 +1493,13 @@ impl Hud { } // Title Text::new("Map") - .mid_top_with_margin_on(self.ids.map_frame, -7.0) + .mid_top_with_margin_on(self.ids.map_bg, -7.0) .font_size(50) .color(TEXT_COLOR) .set(self.ids.map_title, ui_widgets); } + // ESC-MENU // Background if self.menu_open { diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs index f3e73e65c9..6bee4dc069 100644 --- a/voxygen/src/menu/char_selection/ui.rs +++ b/voxygen/src/menu/char_selection/ui.rs @@ -5,6 +5,7 @@ use crate::{ }; use common::{ assets, + figure::Segment, comp::character::{ Character, Race, @@ -33,7 +34,7 @@ widget_ids! { bg_selection, bg_creation, v_logo, - alpha_version, + version, // Windows selection_window, @@ -173,12 +174,12 @@ struct Imgs { v_logo: ImgId, bg_selection: ImgId, bg_creation: ImgId, - button_dark: ImgId, - button_dark_hover: ImgId, - button_dark_press: ImgId, - button_dark_red: ImgId, - button_dark_red_hover: ImgId, - button_dark_red_press: ImgId, + button: ImgId, + button_hover: ImgId, + button_press: ImgId, + button_red: ImgId, + button_red_hover: ImgId, + button_red_press: ImgId, selection_window: ImgId, test_char_l_button: ImgId, test_char_l_big: ImgId, @@ -241,7 +242,7 @@ struct Imgs { } impl Imgs { fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs { - let mut load = |filename| { + let load_img = |filename, ui: &mut Ui| { let fullpath: String = ["/voxygen/", filename].concat(); let image = image::load_from_memory( assets::load(fullpath.as_str()) @@ -251,75 +252,85 @@ impl Imgs { .unwrap(); ui.new_graphic(ui::Graphic::Image(image)) }; + let load_vox = |filename, ui: &mut Ui| { + let fullpath: String = ["/voxygen/", filename].concat(); + let dot_vox = dot_vox::load_bytes( + assets::load(fullpath.as_str()) + .expect("Error loading file") + .as_slice(), + ) + .unwrap(); + ui.new_graphic(ui::Graphic::Voxel(Segment::from(dot_vox))) + }; Imgs { - v_logo: load("element/v_logo.png"), - bg_selection: load("background/bg_selection.png"), - bg_creation: load("background/bg_creation.png"), - selection_window: load("element/frames/selection.png"), - button_dark: load("element/buttons/button_dark.png"), - button_dark_hover: load("element/buttons/button_dark_hover.png"), - button_dark_press: load("element/buttons/button_dark_press.png"), - button_dark_red: load("element/buttons/button_dark_red.png"), - button_dark_red_hover: load("element/buttons/button_dark_red_hover.png"), - button_dark_red_press: load("element/buttons/button_dark_red_press.png"), - test_char_l_button: load("element/misc_backgrounds/test_char_l.png"), - test_char_l_big: load("element/misc_backgrounds/test_char_l_big.png"), - name_input: load("element/misc_backgrounds/textbox.png"), - creation_window: load("element/frames/char_creation.png"), - creation_window_body: load("element/frames/body_creation.png"), - frame_closed: load("element/buttons/frame/closed.png"), - frame_closed_mo: load("element/buttons/frame/closed_mo.png"), - frame_closed_press: load("element/buttons/frame/closed_press.png"), - frame_open: load("element/buttons/frame/open.png"), - frame_open_mo: load("element/buttons/frame/open_mo.png"), - frame_open_press: load("element/buttons/frame/open_press.png"), - skin_eyes_window: load("element/frames/skin_eyes.png"), - hair_window: load("element/frames/skin_eyes.png"), - accessories_window: load("element/frames/skin_eyes.png"), - color_picker_bg: load("element/misc_backgrounds/color_picker_blank.png"), - slider_range: load("element/slider/track.png"), - slider_indicator: load("element/slider/indicator.png"), - window_frame_2: load("element/frames/window_2.png"), + v_logo: load_vox("element/v_logo.vox", ui), + bg_selection: load_img("background/bg_selection.png", ui), + bg_creation: load_img("background/bg_creation.png", ui), + selection_window: load_img("element/frames/selection.png", ui), + button: load_vox("element/buttons/button.vox", ui), + button_hover: load_vox("element/buttons/button_hover.vox", ui), + button_press: load_vox("element/buttons/button_press.vox", ui), + button_red: load_vox("element/buttons/button_red.vox", ui), + button_red_hover: load_vox("element/buttons/button_red_hover.vox", ui), + button_red_press: load_vox("element/buttons/button_red_press.vox", ui), + test_char_l_button: load_img("element/misc_bg/test_char_l.png", ui), + test_char_l_big: load_img("element/misc_bg/test_char_l_big.png", ui), + name_input: load_vox("element/misc_bg/textbox.vox", ui), + creation_window: load_img("element/frames/char_creation.png", ui), + creation_window_body: load_img("element/frames/body_creation.png", ui), + frame_closed: load_img("element/buttons/frame/closed.png", ui), + frame_closed_mo: load_img("element/buttons/frame/closed_mo.png", ui), + frame_closed_press: load_img("element/buttons/frame/closed_press.png", ui), + frame_open: load_img("element/buttons/frame/open.png", ui), + frame_open_mo: load_img("element/buttons/frame/open_mo.png", ui), + frame_open_press: load_img("element/buttons/frame/open_press.png", ui), + skin_eyes_window: load_img("element/frames/skin_eyes.png", ui), + hair_window: load_img("element/frames/skin_eyes.png", ui), + accessories_window: load_img("element/frames/skin_eyes.png", ui), + color_picker_bg: load_img("element/misc_bg/color_picker_blank.png", ui), + slider_range: load_img("element/slider/track.png", ui), + slider_indicator: load_img("element/slider/indicator.png", ui), + window_frame_2: load_img("element/frames/window_2.png", ui), // Weapon Icons - daggers: load("element/icons/daggers.png"), - sword_shield: load("element/icons/swordshield.png"), - sword: load("element/icons/sword.png"), - axe: load("element/icons/axe.png"), - hammer: load("element/icons/hammer.png"), - bow: load("element/icons/bow.png"), - staff: load("element/icons/staff.png"), - //test_char_m_button: load("test_char_m_button"), - //test_char_r_button: load("test_char_r_button"), + daggers: load_img("element/icons/daggers.png", ui), + sword_shield: load_img("element/icons/swordshield.png", ui), + sword: load_img("element/icons/sword.png", ui), + axe: load_img("element/icons/axe.png", ui), + hammer: load_img("element/icons/hammer.png", ui), + bow: load_img("element/icons/bow.png", ui), + staff: load_img("element/icons/staff.png", ui), + //test_char_m_button: load_img("test_char_m_button"), + //test_char_r_button: load_img("test_char_r_button"), // Race Icons - male: load("element/icons/male.png"), - female: load("element/icons/female.png"), - human_m: load("element/icons/human_m.png"), - human_f: load("element/icons/human_f.png"), - orc_m: load("element/icons/orc_m.png"), - orc_f: load("element/icons/orc_f.png"), - dwarf_m: load("element/icons/dwarf_m.png"), - dwarf_f: load("element/icons/dwarf_f.png"), - undead_m: load("element/icons/ud_m.png"), - undead_f: load("element/icons/ud_f.png"), - elf_m: load("element/icons/elf_m.png"), - elf_f: load("element/icons/elf_f.png"), - danari_m: load("element/icons/danari_m.png"), - danari_f: load("element/icons/danari_f.png"), + male: load_img("element/icons/male.png", ui), + female: load_img("element/icons/female.png", ui), + human_m: load_img("element/icons/human_m.png", ui), + human_f: load_img("element/icons/human_f.png", ui), + orc_m: load_img("element/icons/orc_m.png", ui), + orc_f: load_img("element/icons/orc_f.png", ui), + dwarf_m: load_img("element/icons/dwarf_m.png", ui), + dwarf_f: load_img("element/icons/dwarf_f.png", ui), + undead_m: load_img("element/icons/ud_m.png", ui), + undead_f: load_img("element/icons/ud_f.png", ui), + elf_m: load_img("element/icons/elf_m.png", ui), + elf_f: load_img("element/icons/elf_f.png", ui), + danari_m: load_img("element/icons/danari_m.png", ui), + danari_f: load_img("element/icons/danari_f.png", ui), // Arrows - arrow_left: load("element/buttons/arrow/left.png"), - arrow_left_mo: load("element/buttons/arrow/left_mo.png"), - arrow_left_press: load("element/buttons/arrow/left_press.png"), - arrow_left_grey: load("element/buttons/arrow/left_inactive.png"), - arrow_right: load("element/buttons/arrow/right.png"), - arrow_right_mo: load("element/buttons/arrow/right_mo.png"), - arrow_right_press: load("element/buttons/arrow/right_press.png"), - arrow_right_grey: load("element/buttons/arrow/right_inactive.png"), + arrow_left: load_img("element/buttons/arrow/left.png", ui), + arrow_left_mo: load_img("element/buttons/arrow/left_mo.png", ui), + arrow_left_press: load_img("element/buttons/arrow/left_press.png", ui), + arrow_left_grey: load_img("element/buttons/arrow/left_inactive.png", ui), + arrow_right: load_img("element/buttons/arrow/right.png", ui), + arrow_right_mo: load_img("element/buttons/arrow/right_mo.png", ui), + arrow_right_press: load_img("element/buttons/arrow/right_press.png", ui), + arrow_right_grey: load_img("element/buttons/arrow/right_inactive.png", ui), // Icon Borders - icon_border: load("element/buttons/border.png"), - icon_border_mo: load("element/buttons/border_mo.png"), - icon_border_press: load("element/buttons/border_press.png"), - icon_border_pressed: load("element/buttons/border_pressed.png"), + icon_border: load_img("element/buttons/border.png", ui), + icon_border_mo: load_img("element/buttons/border_mo.png", ui), + icon_border_press: load_img("element/buttons/border_press.png", ui), + icon_border_pressed: load_img("element/buttons/border_pressed.png", ui), } } } @@ -415,11 +426,11 @@ impl CharSelectionUi { .set(self.ids.bg_selection, ui_widgets); // Logout_Button - if Button::image(self.imgs.button_dark) + if Button::image(self.imgs.button) .bottom_left_with_margins_on(self.ids.bg_selection, 10.0, 10.0) .w_h(150.0, 40.0) - .hover_image(self.imgs.button_dark_hover) - .press_image(self.imgs.button_dark_press) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .label("Logout") .label_color(TEXT_COLOR) .label_font_size(18) @@ -431,11 +442,11 @@ impl CharSelectionUi { } // Create Character Button - if Button::image(self.imgs.button_dark) + if Button::image(self.imgs.button) .mid_bottom_with_margin_on(self.ids.bg_selection, 10.0) .w_h(270.0, 50.0) - .hover_image(self.imgs.button_dark_hover) - .press_image(self.imgs.button_dark_press) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .label("Create Character") .label_color(TEXT_COLOR) .label_font_size(20) @@ -459,15 +470,15 @@ impl CharSelectionUi { } // Veloren Logo and Alpha Version - Button::image(self.imgs.v_logo) - .w_h(346.0, 111.0) - .top_left_with_margins_on(self.ids.bg_selection, 30.0, 40.0) - .label(version) - .label_rgba(1.0, 1.0, 1.0, 1.0) - .label_font_size(10) - .label_y(conrod_core::position::Relative::Scalar(-40.0)) - .label_x(conrod_core::position::Relative::Scalar(-100.0)) + Image::new(self.imgs.v_logo) + .w_h(123.0*3.0, 35.0*3.0) + .top_left_with_margins(30.0, 30.0) .set(self.ids.v_logo, ui_widgets); + Text::new(version) + .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) + .font_size(14) + .color(TEXT_COLOR) + .set(self.ids.version, ui_widgets); // Click Character to Login <-- Temporary! Image::new(self.imgs.window_frame_2) .mid_top_with_margin_on(self.ids.bg_selection, 60.0) @@ -506,11 +517,11 @@ impl CharSelectionUi { } // Enter World Button - if Button::image(self.imgs.button_dark) + if Button::image(self.imgs.button) .mid_bottom_with_margin_on(self.ids.selection_window, 65.0) .w_h(210.0, 55.0) - .hover_image(self.imgs.button_dark_hover) - .press_image(self.imgs.button_dark_press) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .label("Enter World") .label_color(TEXT_COLOR) .label_font_size(22) @@ -523,11 +534,11 @@ impl CharSelectionUi { } // Delete Button - if Button::image(self.imgs.button_dark_red) + if Button::image(self.imgs.button_red) .bottom_right_with_margins_on(self.ids.selection_window, -25.0, 0.0) .w_h(100.0, 20.0) - .hover_image(self.imgs.button_dark_red_hover) - .press_image(self.imgs.button_dark_red_press) + .hover_image(self.imgs.button_red_hover) + .press_image(self.imgs.button_red_press) .label("Delete") .label_color(TEXT_COLOR) .label_font_size(12) @@ -544,11 +555,11 @@ impl CharSelectionUi { .middle_of(ui_widgets.window) .set(self.ids.bg_creation, ui_widgets); // Back Button - if Button::image(self.imgs.button_dark) + if Button::image(self.imgs.button) .bottom_left_with_margins_on(self.ids.bg_creation, 10.0, 10.0) .w_h(150.0, 40.0) - .hover_image(self.imgs.button_dark_hover) - .press_image(self.imgs.button_dark_press) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .label("Back") .label_color(TEXT_COLOR) .label_font_size(18) @@ -559,11 +570,11 @@ impl CharSelectionUi { self.character_creation = false; } // Create Button - if Button::image(self.imgs.button_dark) + if Button::image(self.imgs.button) .bottom_right_with_margins_on(self.ids.bg_creation, 10.0, 10.0) .w_h(150.0, 40.0) - .hover_image(self.imgs.button_dark_hover) - .press_image(self.imgs.button_dark_press) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .label("Create") .label_color(TEXT_COLOR) .label_font_size(18) diff --git a/voxygen/src/menu/main/ui.rs b/voxygen/src/menu/main/ui.rs index c082ec8966..63ba980561 100644 --- a/voxygen/src/menu/main/ui.rs +++ b/voxygen/src/menu/main/ui.rs @@ -45,6 +45,7 @@ widget_ids! { // Error error_frame, button_ok, + version, } } @@ -54,18 +55,13 @@ struct Imgs { input_bg: ImgId, - login_button: ImgId, - login_button_hover: ImgId, - login_button_press: ImgId, - - button: ImgId, - button_hover: ImgId, - button_press: ImgId, - error_frame: ImgId, button_dark: ImgId, button_dark_hover: ImgId, button_dark_press: ImgId, + button: ImgId, + button_hover: ImgId, + button_press: ImgId, } impl Imgs { fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs { @@ -91,27 +87,18 @@ impl Imgs { }; Imgs { bg: load_img("background/bg_main.png", ui), - v_logo: load_img("element/v_logo.png", ui), + v_logo: load_vox("element/v_logo.vox", ui), // Input fields - input_bg: load_img("element/misc_backgrounds/textbox.png", ui), + input_bg: load_vox("element/misc_bg/textbox.vox", ui), - // Login button - login_button: load_img("element/buttons/button_login.png", ui), - login_button_hover: load_img("element/buttons/button_login_hover.png", ui), - login_button_press: load_img("element/buttons/button_login_press.png", ui), - - // Servers, settings, and quit buttons - //button: load_vox("element/buttons/button.vox", ui), - button: load_img("element/buttons/button.png", ui), - button_hover: load_img("element/buttons/button_hover.png", ui), - button_press: load_img("element/buttons/button_press.png", ui), - - //Error error_frame: load_img("element/frames/window_2.png", ui), - button_dark: load_img("element/buttons/button_dark.png", ui), - button_dark_hover: load_img("element/buttons/button_dark_hover.png", ui), - button_dark_press: load_img("element/buttons/button_dark_press.png", ui), + button_dark: load_vox("element/buttons/button_dark.vox", ui), + button_dark_hover: load_vox("element/buttons/button_dark_hover.vox", ui), + button_dark_press: load_vox("element/buttons/button_dark_press.vox", ui), + button: load_vox("element/buttons/button.vox", ui), + button_hover: load_vox("element/buttons/button_hover.vox", ui), + button_press: load_vox("element/buttons/button_press.vox", ui), } } } @@ -184,16 +171,15 @@ impl MainMenuUi { Image::new(self.imgs.bg) .middle_of(ui_widgets.window) .set(self.ids.bg, ui_widgets); - Button::image(self.imgs.v_logo) - .w_h(346.0, 111.0) - .top_left_with_margins(30.0, 40.0) - .label(version) - .label_rgba(1.0, 1.0, 1.0, 1.0) - .label_font_size(10) - .label_y(Relative::Scalar(-40.0)) - .label_x(Relative::Scalar(-100.0)) + Image::new(self.imgs.v_logo) + .w_h(123.0*3.0, 35.0*3.0) + .top_left_with_margins(30.0, 30.0) .set(self.ids.v_logo, ui_widgets); - + Text::new(version) + .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) + .font_size(14) + .color(TEXT_COLOR) + .set(self.ids.version, ui_widgets); // Input fields // Used when the login button is pressed, or enter is pressed within input field macro_rules! login { @@ -368,7 +354,7 @@ impl MainMenuUi { // Login button // Change button text and remove hover/press images if a connection is in progress if let Some(start) = self.connecting { - Button::image(self.imgs.login_button) + Button::image(self.imgs.button) .w_h(258.0, 68.0) .down_from(self.ids.address_bg, 20.0) .align_middle_x_of(self.ids.address_bg) @@ -386,9 +372,9 @@ impl MainMenuUi { .label_y(Relative::Scalar(5.0)) .set(self.ids.login_button, ui_widgets); } else { - if Button::image(self.imgs.login_button) - .hover_image(self.imgs.login_button_hover) - .press_image(self.imgs.login_button_press) + if Button::image(self.imgs.button) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .w_h(258.0, 68.0) .down_from(self.ids.address_bg, 20.0) .align_middle_x_of(self.ids.address_bg) @@ -404,9 +390,9 @@ impl MainMenuUi { }; // Singleplayer button - if Button::image(self.imgs.login_button) - .hover_image(self.imgs.login_button_hover) - .press_image(self.imgs.login_button_press) + if Button::image(self.imgs.button) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) .w_h(258.0, 68.0) .down_from(self.ids.login_button, 20.0) .align_middle_x_of(self.ids.address_bg)